Power Apps テスト エンジン Power Fx 関数 (非推奨)

注意

テスト エンジンは非推奨 となり、今後のリリースで削除される予定です。 Power Platform および Dynamics 365 サービスのテスト自動化機能には、Power Platform Playwright サンプルを使用します。

テスト エンジンでは、次の既存の PowerFx 関数が使用されます。

これらの関数は、Test Engine でのみ使用できます。

Test Engine は、次の プレビュー関数 を使用します:

エンジン機能のテスト

これらの関数は、Test Engine でのみ使用できます

スクリーンショット

Screenshot(fileNameOfScreenshot)

この関数は、現時点でのアプリのスクリーンショットをキャプチャします。 スクリーンショット ファイルは、指定された名前でテスト出力フォルダーに保存されます。

注意

jpeg と png ファイルのみがサポートされています。

スクリーンショットの例

Screenshot("buttonClicked.png")

待機

Wait(Control, Property, Value)

この関数は、コントロールのプロパティが指定された値と等しくなるまで待機します。

待機の例

Wait(Label1, "Text", "0")

プレビュー関数

次の関数は、PreviewallowPowerFxNamespaces プロパティで リストに を追加することで、Power Fx プレビュー名前空間をテストにオプションとして含めることができます。

注意

  • プレビュー機能は変更される場合があります。 これらの関数がより広く使用できるようになると、TestEngine 名前空間内で移動すると見なされます。
  • ユーザー定義関数を使用して Preview 関数をラップし、関数の非プレビュー バージョンへの移行を容易にすることができます。
  • ParseJSON 関数を使用して解析できる JSON オブジェクトのみをモデルに返すことができます。

Preview.AIExecutePrompt

Preview.AIExecutePrompt(Name, {Property: Type})

Custom AI Builder プロンプトを呼び出し、実行のテキスト結果を取得します。

注意

この関数の可用性と構成に関する情報は、Dataverse AI 統合 セクションを確認してください。

この関数の使用の詳細と説明については、Preview.AIExecutePrompt の使用 を確認してください。

Preview.AIExecutePrompt 例

次の例では、パラメーターの値が Country である Country Capital という名前の AI プロンプトを呼び出し、モデルの実行が Paris という 1 つの単語を返すことを想定しています

Assert("Paris" = Preview.AIExecutePrompt("Country Capital", { Country: "France" }).Text)

プレビュー.同意ダイアログ

Preview.ConsentDialog(Table({Text: Text}));

キャンバス アプリケーションまたはモデル駆動型アプリケーションのカスタム ページの同意ダイアログの確認を待機する

Preview.ConsentDialog の例

Preview.ConsentDialog(Table({Text: "Your Dialog Title"}));

Preview.Pause

Preview.Pause()

対話型テストを実行している場合は、テストを一時停止して Playwright Inspector を表示します

注意

既知の問題: Preview.Pause 関数が pac test run 用のインスペクターを正しく開きません
説明:Preview.Pause 関数が、pac test run 中にインスペクターを開くことができません。
Workaround: オープンソース バージョンのテスト エンジンは、一時停止機能に使用できます。

Preview.Pause 例

Preview.Pause()

Preview.SelectControl

Preview.SelectControl(Control: ControlName, Index: Number)

ドキュメント オブジェクト モデルを使用してコントロールを選択する

Preview.SelectControl の例

最初に一致した Button3 を選択します

Preview.SelectControl(Button3,1);

プレビュー.プレイライトアクション

Preview.PlaywrightAction(Text, Text)

Playwright CSS または XPath Locator を使用して現在のページでアクションを実行します

Preview.PlaywrightAction の例

Preview.PlaywrightAction("//button", "click");
Preview.PlaywrightAction("//button", "exists");
Preview.PlaywrightAction("//button", "wait");

Preview.PlaywrightActionValue

Preview.PlaywrightActionValue(Text, Text, Text)

値を持つ Playwright CSS または XPath Locator を使用して、現在のページでアクションを実行します

Preview.PlaywrightActionValue サンプル

Preview.PlaywrightAction("//input[@data-id='1']", "fill", "Hello");

Preview.PlaywrightScript

Preview.PlaywrightScript(Text)

現在のページで C# スクリプトを実行します

注意

この関数は、オープンソース版のテストエンジンからのデバッグビルドにのみ実装されており、pac テスト実行ではありません。

Preview.PlaywrightScript 例

Preview.PlaywrightScript("sample.csx")

sample.csx の内容は、次のコードのようになります:

// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

#r "Microsoft.Playwright.dll"
#r "Microsoft.Extensions.Logging.dll"
using Microsoft.Playwright;
using Microsoft.Extensions.Logging;
using System.Linq;
using System.Threading.Tasks;

public class PlaywrightScript {
    public static void Run(IBrowserContext context, ILogger logger) {
        Execute(context, logger).Wait();
    }

    public static async Task Execute(IBrowserContext context, ILogger logger) {
        var page = context.Pages.First();

        if ( page.Url == "about:blank" ) {
            var nextPage = context.Pages.Skip(1).First();
            await page.CloseAsync();
            page = nextPage;
        }

        foreach ( var frame in page.Frames ) {
            if ( await frame.Locator("button:has-text('Button')").CountAsync() > 0 ) {
                await frame.ClickAsync("button:has-text('Button')");
            }
        }
    }
}

Preview.SimulateConnector

Preview.SimulateConnector({name: Text, then: Record})

Power Appsから、すべてのPower Apps コネクタのリストに見つかったコネクタタイプに対して呼び出しが行われた場合

Preview.SimulateConnector サンプル

Preview.SimulateConnector({
   name: "msnweather", 
   then: {responses: { 
      daily: { 
         day: { 
            summary: "You are seeing the mock response" }
            }
         }
      }
   })

Preview.SimulateDataverse

Preview.SimulateDataverse({Action: Text, Entity: Text, Then: Table})

Preview.SimulateDataverse 例

この例では、論理名 sample_combotable を持つ Dataverse エンティティをクエリする呼び出しが行われると、Table 関数を使用してレコードを返します

Preview.SimulateDataverse({
    Action: "Query",
    Entity: "sample_combotable",
    Then: Table(
    {
        'sample_name': "Item 1",
        'sample_id': 3,
        'sample_combotableid': "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
        'createdon': "2024-12-02T17:52:45Z"
    },
    {
        'sample_name': "RR2",
        'sample_id': 4,
        'sample_combotableid': "bbbbbbbb-1111-2222-3333-cccccccccccc",
        'createdon': "2024-12-02T17:54:45Z"
    },
        {
        'sample_name': "RR3",
        'sample_id': 5,
        'sample_combotableid': "cccccccc-2222-3333-4444-dddddddddddd",
        'createdon': "2024-12-02T17:54:45Z"
    }
    )
});

テスト エンジンを使用した Dataverse とコネクタのシミュレーション (非推奨)