注意
プレビュー機能は運用環境での使用を想定しておらず、機能が制限されている可能性があります。 これらの機能を公式リリースの前に使用できるようにすることで、顧客が事前にアクセスし、そこからフィードバックを得ることができます。
概要
Power Apps Test Engine は、さまざまな拡張ポイントを使用してコア テスト機能を拡張できる安定した拡張フレームワークを備えています。 この記事では、以下について説明しています。
- マイクロソフトがファーストパーティ拡張機能に署名して検証する方法
- Managed Extensibility Framework (MEF) を使用した拡張性モデルのしくみ
- 組織が独自の拡張機能を作成するためのオプション
マイクロソフトが署名したコンポーネント
重要
パブリック プレビュー フェーズでは、pac test run コマンドは、マイクロソフトが署名した拡張機能のみを読み込みます。 この設計により、Test Engine プラットフォームのセキュリティ、安定性、パフォーマンスが確保されます。
マイクロソフトは、ファーストパーティ コンポーネントを構築、署名、検証して、品質とセキュリティの基準を満たしていることを確認します。 これらのコンポーネントには、以下のものが含まれます:
- コア認証プロバイダー
- キャンバス アプリとモデル駆動型アプリ プロバイダー
- Power Fx の標準機能と標準アクション
Managed Extensibility (MEF)
Test Engine では、Managed Extensibility Framework (MEF) を使用して、プラグインが可能なアーキテクチャを実現しています。 このフレームワークでは、主に 3 種類の拡張機能を使用できます。
認証拡張機能
認証拡張機能を使用すると、Power Platform でさまざまな方法で認証できます。
- ストレージ状態認証 - 既定のブラウザー ベースの認証方法
- 証明書ベースの認証 - 非対話型のテスト実行用
- カスタム認証プロバイダー - 特殊な認証シナリオ用
詳細については、Test Engine での認証を参照してください。
プロバイダー拡張機能
プロバイダー拡張機能を使用すると、さまざまな種類のアプリケーションをテストできます。
- キャンバス アプリ プロバイダー - Power Apps キャンバス アプリケーションのテスト用
- モデル駆動型アプリ プロバイダー - Dataverse モデル駆動型アプリのテスト用
- Power Fx プロバイダー - Power Fx ステートメントの個別実行用
- ポータル プロバイダー - Power Apps での操作の自動化用
詳細については、キャンバス アプリケーション、モデル駆動型アプリケーション、および Dataverse 拡張機能を参照してください。
Power Fx 拡張機能
Power Fx 拡張機能は、カスタム関数を使用して新しいテスト機能を追加します。
- ユーザー定義関数 - テスト計画で定義されたローコード関数
- C# ReflectionFunction の実装 - C# モジュールに実装されたカスタム関数
詳しくは、Power Fx 関数および C# ReflectionFunction の実装を参照してください。
拡張機能の開発オプション
組織には、Test Engine を拡張するための複数のオプションがあります。
オープンソース版の使用
Power Apps Test Engine は、MIT ライセンスの下でオープンソース プロジェクトとして利用できます。 ファーストパーティのマイクロソフト、サードパーティのチーム、組織は、次のことができます。
- 特殊なテスト シナリオ用の新しいプロバイダーを作成する
- カスタム認証メカニズムを開発する
- 新しい C# ReflectionFunction 実装をビルドする
- コア機能を拡張するモジュールを作成する
- コア製品で検討するためにコントリビューションを提出する
Power Fx ユーザー定義関数
より単純なシナリオでは、テスト計画でユーザー定義関数を直接作成できます。
testSuite:
testCases:
- testCaseName: "Test with custom functions"
userDefineFunctions:
- name: "FormatDateString"
parameters: [date]
expression: "Text(date, 'yyyy-MM-dd')"
steps:
# Use the custom function in your test steps
- action: PowerFxTestStep
expression: FormatDateString(Now())
ReflectionFunction を含むカスタム C# Power Fx 関数
より複雑なシナリオでは、組織は ReflectionFunction クラスを実装し、モジュールを介して登録することで、カスタム C# 関数を開発できます。
// Define your function class
public class SampleFunction : ReflectionFunction
{
public SampleFunction() : base(DPath.Root.Append(new DName("Preview")), "Sample", FormulaType.Blank)
{
}
public BlankValue Execute()
{
Console.WriteLine("Sample function executed");
return BlankValue.NewBlank();
}
}
// Register your function in a module
[Export(typeof(ITestEngineModule))]
public class TestEngineSampleModule : ITestEngineModule
{
public void RegisterPowerFxFunction(PowerFxConfig config, ITestInfraFunctions testInfraFunctions,
ITestWebProvider testWebProvider, ISingleTestInstanceState singleTestInstanceState,
ITestState testState, IFileSystem fileSystem)
{
config.AddFunction(new SampleFunction());
}
// Implement other required interface methods...
}
Test Engine チームとのコラボレーション
オープン ソースの Test Engine を使用して価値ある拡張機能を開発している組織は、拡張機能を公式製品で利用できるようにするための pull request の作成を検討できます。 このプロセスには通常、次のものが含まれます。
- 開発 - オープン ソースの Test Engine を使用して拡張機能を作成します
- 検証 - 独自の環境で拡張機能を徹底的にテストします
- コラボレーション - Test Engine のコア チームと協力して拡張機能を評価します
- 統合 - 承認された場合、マイクロソフトは拡張機能に署名し、製品に統合します
このコラボレーション モデルにより、公式の Test Engine 製品のセキュリティと信頼性を維持しながら、イノベーションが可能になります。
技術統合ポイント
次のセクションでは、Test Engine の拡張性が Playwright や機能ライフサイクルなどのコア テクノロジとどのように統合されるかについて説明します。 これらの統合ポイントを理解すると、カスタム拡張機能を効果的に開発およびデプロイするのに役立ちます。
Playwright の統合
Power Apps Test Engine は、ブラウザー自動化の基盤を提供する Playwright 上に構築されています。 カスタム拡張機能は、Playwright の IBrowserContext と使用して、高度なブラウザー ベースのテスト機能を作成できます。
機能のライフサイクル
新しい拡張機能は 機能ライフサイクルに従います。
- プレビュー名前空間 - 新しい拡張機能は、早期テストのためにプレビュー名前空間で最初に利用できます
- TestEngine 名前空間 - 検証後、拡張機能はコア TestEngine の名前空間に移動します
拡張モデルの利点
機能拡張モデルには、次のような大きな利点があります。
- 標準化 - マイクロソフトが署名したコンポーネントにより、一貫した品質とセキュリティが確保されます
- イノベーション - オープンソース モデルにより、コミュニティ主導のイノベーションが可能になります
- 柔軟性 - 組織は、独自の要件に特化した拡張機能を作成できます
- 統合 - 貴重な拡張機能は、公式製品に含めることが検討されています