次の方法で共有


Power Apps テスト エンジンの YAML 形式 (プレビュー)

プレビュー機能は運用環境での使用を想定しておらず、機能が制限されている可能性があります。 これらの機能は、お客様が早期にアクセスしてフィードバックを提供できるように、公式リリースの前に利用できます。

テストは、Power Fx と同じガイドラインに従って YAML で定義されます。 Power Fx YAML 数式文法の詳細を確認します。

詳細な例については、 PowerApps-TestEngine/samples フォルダーを参照してください。

YAML スキーマ定義

プロパティ Description
testSuite 1 つのテスト スイート、テスト スイート内のテスト ケース、およびテスト スイートに固有の構成を定義します
testSettings 複数のテスト ケースで再利用されるテスト スイートの設定を定義します
environmentVariables アプリが異なる環境に移植されるときに変更される可能性がある変数を定義します。

testSuite

1 つのテストを定義するために使用されます。

プロパティ タイプ Description
persona 文字列 必須。 テストを実行するためにログインしているユーザー。 [ユーザー] セクションに一覧表示されているペルソナと一致する必要があります。
testCases TestCases 必須。 テスト スイートのテスト ケースを定義します。 テスト スイートに含まれるテスト ケースは順番に実行されます。 アプリの状態は、スイート内のすべてのテスト ケースで保持されます。
testSuiteName 文字列 必須。 テスト スイートの名前。
appLogicalName 文字列 Optional. 起動するアプリの論理名。 溶液から得ることができる。 キャンバス アプリの場合は、ソリューションに追加して取得する必要があります。 テスト計画でアプリケーションを識別する方法を参照してください
appId Guid Optional. 起動するアプリの ID。 必須で、 appLogicalName が存在しない場合にのみ使用されます。 アプリ ID は、ソリューションに含まれていないキャンバス アプリにのみ使用する必要があります。 テスト計画でアプリケーションを識別する方法を参照してください
networkRequestMocks NetworkRequestMocks Optional. テストに必要なネットワーク要求モックを定義します。
onTestCaseComplete 文字列 Optional. ケースの実行が完了した後、スイート内のすべてのテスト ケースに対してトリガーする必要があるステップを定義します。
onTestCaseStart 文字列 Optional. ケースの実行を開始する前に、スイート内のすべてのテスト ケースに対してトリガーする必要があるステップを定義します。
onTestSuiteComplete 文字列 Optional. スイートの実行が完了した後にトリガーする必要があるステップを定義します。
testSuiteDescription 文字列 Optional. 追加の情報では、テスト スイートの動作について説明します。

テスト計画でアプリケーションを識別する方法

アプリケーションを識別するには、 appLogicalName または appId を設定する必要があります。 どのアプリを使用するかは、アプリがソリューション内で定義されているかどうかによって異なります。

ソリューション内でアプリを定義すると、テストは環境間で移植可能なままになります。 appLogicalName プロパティを設定して、アプリがソリューション ベースであることを示します。

アプリの論理名を見つけるには:

  1. Power Apps でアプリを含むソリューションを開く
  2. 一覧の 名前 ( 表示名ではありません) を使用します。 名前の値には、ソリューション発行元のカスタマイズ プレフィックスが含まれます。

スタンドアロン アプリ

ソリューション内でアプリが定義されていない場合は、 appId プロパティを使用する必要があります。

アプリの ID を見つけるには:

  1. Power Apps の一覧でアプリを見つける
  2. 詳細を開き、アプリ ID GUID を書き留めます

NetworkRequestMocks

プロパティ タイプ Description
requestURL 文字列 必須。 モック応答を取得する要求 URL。 Glob パターンが受け入れられます
responseDataFile 文字列 必須。 モック応答コンテンツを含むテキスト ファイル。 このファイル内のすべてのテキストが応答として読み取られます
headers アレイ Optional. [fieldName: fieldValue] の形式の要求内のヘッダー フィールドの一覧
method 文字列 Optional. 要求のメソッド (GET、POST など)
requestBodyFile 文字列 Optional. 要求本文を含むテキスト ファイル。 このファイル内のすべてのテキストが要求本文として読み取られます

省略可能なプロパティの場合、値が指定されていない場合、ルーティングはすべてのプロパティに適用されます。 たとえば、 method が null の場合、他のプロパティがすべて一致する限り、メソッドが何であれモック応答を返します。

Sharepoint/Dataverse/Connector アプリの場合、 requestURLmethod はすべての要求で同じにすることができます。 x-ms-request-method ヘッダー内の x-ms-request-url は、異なる要求を識別するために、その場合に構成する必要があります。

TestCases

プロパティ タイプ Description
testCaseName 文字列 必須。 成功と失敗の報告に使用されるテスト ケースの名前
testSteps TestSteps 必須。 テスト ケースを実行するために必要な手順を説明する Power Fx 関数のセット。 TestSteps の例を参照してください
testCaseDescription いいえ Optional. テスト ケースの動作に関する追加情報

TestSteps

  • TestSteps は、このフレームワークで定義されている既存の テスト エンジン Power Fx 関数 または 特定のテスト関数 を使用できます。
  • 値はパイプ 記号 (|) で始まり、複数行の YAML 式の後に等号 (=) を付けて Power Fx 式であることを示す必要があります。
  • 関数はセミコロン (;) で区切る必要があります。
  • コメントは使用でき、二重円記号 (//) で始まる必要があります。

TestSteps の例

testCases:
   - testCaseName: Fill in a city name and do the search
   testSteps: |
      = Screenshot("connectorapp_loaded.png");
         SetProperty(TextInput1.Text, "Atlanta");
         Select(Button1);
         Assert(Label4.Text = "You are seeing the mock response", "Validate the output is from the mock");
         Screenshot("connectorapp_end.png");

testSettings

テスト計画のテストの設定を定義するために使用されます。

プロパティ タイプ Description
browserConfigurations BrowserConfiguration[] 必須。 テストするブラウザー構成の一覧。 少なくとも 1 つのブラウザーを指定する必要があります。
extensionModules extensionModules Optional. 有効にする拡張機能に関するデータが含まれています。
filePath 文字列 Optional. すべてのテスト設定を含む個別の yaml ファイルへのファイル パス。 指定した場合、テスト 計画内のすべてのテスト設定が オーバーライド されます。
headless ブーリアン Optional. 既定値は True です。 false に設定すると、テストの実行中にブラウザーが表示されます。
locale 文字列 Optional. テスト ケースまたはテスト ステップが記述されるロケール/カルチャ構文。 指定しない場合、 CultureInfo.CurrentCulture はテスト ステップの解析に既定でロケールに使用されます。 地域と言語に関する考慮事項を参照してください
recordVideo ブーリアン Optional. 既定値は false です。 true に設定すると、テストのビデオ記録がキャプチャされます。
timeout 整数 Optional. タイムアウト値 (ミリ秒単位)。 既定値は 30,000 ミリ秒 (30 秒) です。 いずれかの操作にタイムアウト制限より長い時間がかかる場合は、テストが失敗して終了します。
powerFxTestTypes name value Optional. 型名と Power Fx 型定義の一覧。 powerFxTestTypes の例を参照してください
testFunctions description code Optional. 説明と Power Fx 関数の定義の一覧。 testFunctions の例を参照してください

extensionModules

有効にする拡張機能に関するデータが含まれています。

プロパティ タイプ Description
enable ブール (bool) 拡張モジュールが有効かどうか。
allowPowerFxNamespaces list 有効にする PowerFx 名前空間の一覧。
parameters キー値のペア 拡張モジュールを制御する値を持つプロパティ。 現時点では、これに対して有効なのはブール enableDataverseFunctions パラメーターのみです。

この例では、PowerFx Preview 名前空間を有効にする方法を示します。

testSettings:
  extensionModules:
    enable: true
    allowPowerFxNamespaces:
    - Preview

プレビュー関数の詳細

地域と言語に関する考慮事項

テスト エンジンでは、小数点区切り記号やリスト区切り記号など、さまざまな言語と地域の設定がサポートされています。 testSettings.locale プロパティは、これらの動作を制御します。 詳細については、「 Microsoft Power Fx のグローバル サポート」を参照してください。

PowerApps-TestEngine GitHub リポジトリで次のサンプル構成を確認します。

powerFxTestTypes の例

powerFxTestTypes:
 - name: ControlName
   value: |
      {ControlName: Text} 
 - name: Options
   value: |
      [{Name: Text, Value: Number}]   

この例では、テスト ケースで使用するカスタム Power Fx の種類を定義する方法を示します。 ControlName型は単一のText フィールドを持つレコードとして定義され、Options型はレコードのテーブルとして定義され、それぞれにName型のTextフィールドとValue型のNumberフィールドが含まれます。 カスタム型を使用して、より複雑で具体的なテスト シナリオを作成し、テスト定義の柔軟性と能力を高めることができます。

testFunctions の例

testFunctions:
 - description: Wait until control is visible using Document Object Model (DOM) selector
   code: |
    WaitUntilVisible(control: Text): Void = 
      Preview.PlaywrightAction(Concatenate("//div[@data-id='", control, "']"), "wait");
 - description: Get the options for a control using Power Fx control from Model Driven App (MDA)
   code: |
    GetOptions(control: ControlName): Options =
      Preview.GetOptions(control);

これらのテスト関数の例では、テスト ケースで使用するカスタム Power Fx 関数を定義する方法を示します。 WaitUntilVisible関数は、DOM セレクターを使用して、Playwright アクションを使用して、指定されたコントロールが表示されるまで待機します。 GetOptions 関数は、Power Fx コントロールを使用して 、モデル 駆動型アプリ (MDA) から指定されたコントロールのオプションを取得します。 これらのカスタム関数により、テスト定義の柔軟性と能力が向上し、より複雑で具体的なテスト シナリオが可能になります。

BrowserConfiguration

すべての testSettings には 、少なくとも 1 つの BrowserConfigurationが必要です。

プロパティ タイプ Description
browser 文字列 必須。 テスト時に起動するブラウザー。 Playwright でサポートされているブラウザーと一致する必要があります。
device 文字列 Optional. ブラウザーの起動時にエミュレートするデバイス。 Playwright でサポートされているデバイスと一致する必要があります
screenHeight 整数 Optional. ブラウザーを起動するときに使用する画面の高さ。 指定する場合は、 screenWidth も指定する必要があります。
screenWidth 整数 Optional. ブラウザーを起動するときに使用する画面の幅。 指定する場合は、 screenHeight も指定する必要があります。

environmentVariables

さまざまな種類の値を環境の値として格納できますが、最も一般的なケースは、ユーザーの一覧に資格情報を格納 することです

users

資格情報が安全な方法で保存されるように、テスト定義は personaNameを使用してユーザーを参照します。 テスト 計画ファイルへの資格情報の格納はサポートされていません。

例:

environmentVariables:
    - users:
        - personaName: "User1"
          emailKey: "user1Email"
        - personaName: "User2"
          emailKey: "user2Email"

personaNameは、テストを実行するユーザーを示すために、テスト定義の一部として使用されます。

サポートされている資格情報のストレージ メカニズム

資格情報を環境変数として格納するには、次のように設定できます。

# In PowerShell - replace variableName and variableValue with the correct values
$env:variableName = "variableValue"

YAML では、このユーザーの資格情報が環境変数に格納されていることを示すために、次の 2 つのプロパティを定義する必要があります。

  • emailKey: ユーザーの電子メールを格納するために使用される環境変数。

YAML の例:

    - personaName: "User1"
      emailKey: "user1Email"

YAML に基づいてユーザー資格情報を設定する PowerShell の例:

$env:user1Email = "someone@example.com"

こちらも参照ください

Power Apps テスト エンジンの概要 (プレビュー)
Power Apps Test Engine Power Fx 機能 (プレビュー)