繰り返しのステップを含む複雑なシナリオをよりシンプルにするため、UIテストでループを作成する2つの新しい方法をご紹介します。
これまで、画面上の要素や配列のアイテムをループ処理するには、スニペットや要素の検索ステップ、mablの変数構文とループインデックスの組み合わせなど、多くのテスト設定が必要でした。これらの新しいループオプションにより、動的なデータやリストを扱う際に必要な手動設定が軽減されます。
要素を使ったループ処理
CSSクエリーに一致するすべての要素をループ処理し、{{@run.loop_locator}}という新しいランタイム変数を使用して、現在のインデックスで一致する特定の要素をターゲットにします。この設定は、テーブルのすべての行を検証する、一連のチェックボックスをクリックする、複数列のグリッドを解析するといった場合に使用します。
要素を使ったループ処理は、ブラウザーテストのみでサポートされています。
試してみる
要素を使ってループ処理するには、一致する要素を特定するCSSクエリーを記述します。
要素の検索ステップで{{@run.loop_locator}}を使用して、現在の要素を操作します。クリックする、アサートする、値を抽出するといった操作が可能です。
変数配列を使ったループ処理
配列型変数のアイテム数に応じてループを設定します。各イテレーションで、新しいループアイテム変数{{@run.loop_item}}が、現在のインデックスでの配列の値に解決されます。このループ設定を使用すると、JavaScriptや複雑なmablの変数構文を使わずに、アイテムのリストを検索、操作、検証できます。
変数配列を使ったループ処理は、ブラウザーテストとモバイルテストの両方でサポートされています。
仕組み
APIレスポンスまたはJavaScriptスニペットからデータの配列を抽出し、変数に格納します。次に、その配列変数を使用するようにループを設定します。
たとえば、アカウント内のすべてのユーザーを取得するAPIリクエストを実行する場合、その結果をaccount_usersという変数に格納し、配列変数account_usersを使用するようにループを設定できます。
{{@run.loop_item}}という新しいランタイム変数を使用して、現在のインデックスの配列アイテムにアクセスします。
オブジェクトの配列を扱う場合は、波括弧内でドット記法を使用して特定のプロパティにアクセスします。たとえば、account_users配列の各アイテムにemailプロパティがある場合、次の構文を使用してすべてのアカウントユーザーのメールアドレスをアサートできます: {{@run.loop_item.email}}。