ネストされたフローを使用すると、フローを別のフロー内にインポートし、フローパラメータを各レイヤーに渡すことで、再利用可能な階層をテストに組み込むことができます。ネストされたフローを更新すると、その変更はそれを使用するすべての親フローに伝播されます。
この記事では、mablにおけるネストされたフローの仕組みについて説明します。
早期アクセス
ネスト可能な再利用フローは、Labsを通じてアーリーアクセスで利用できます。この機能を有効にするには、ワークスペースの所有者がmabl Webアプリのワークスペース > Labsでトグルをオンにしてください。
ネストされたフローは、ブラウザテストおよびモバイルテストでサポートされています。
ネストされたフローの追加
フロー内に別のフローを追加する手順は、テストにフローを追加する手順と同じです。主な違いは、ステップカーソルが親フロー内に配置されている必要があることです。
ネストされたフローは、親フロー内で折りたたみ可能なセクションとして表示されます。
ステップ番号はネスト階層を反映しています(例:3.1.1、3.1.2)。
ネストの深さ
フローとステップグループは、最大4レベルのネスト深さを共有しています。この深さの上限は、フローまたはステップグループのいずれかで3つのネストされたコンテナを持つ場合に達します。最も内側のコンテナ内のステップはレベル4とみなされます。
たとえば、次のテスト構造を考えてみてください。
- テストのステップ
-
ステップグループの開始「Session setup」(レベル1)
-
フローの開始「Login」(レベル2)
-
フローの開始「MFA verification」(レベル3)
- フローのステップ(レベル4)
- フローの終了
-
フローの開始「MFA verification」(レベル3)
- フローの終了
-
フローの開始「Login」(レベル2)
- ステップグループの終了
この構造は、利用可能な4つのレベルをすべて使用しています。「MFA verification」内にフローまたはステップグループをインポートまたは追加しようとすると、深さの上限を超えるため、ボタンが無効として表示されます。
変数のスコープ
ネストされたフロー内の変数は、ネストされていないフローの場合と同じように機能します。
-
フローパラメータは、
flow.プレフィックスを使用して、そのフローのフローの開始とフローの終了の境界内でのみアクセスできます。 - ネストされたフロー内のテストステップによって作成された変数は、フロー外のステップを含む、その後に実行されるすべてのステップからアクセスできます。
ネストされたフローの特徴は、フローパラメータをあるレベルから次のレベルへ渡せることです。たとえば、パラメータusernameを持つ「Session setup」という外部フローがあるとします。「Session setup」内に、独自のパラメータlogin_userを持つ「Login」フローをインポートし、そのパラメータを{{@flow.username}}にオーバーライドするよう設定します。外部フローの値が解決され、内部フローに渡されます。
循環参照の防止
mablは循環参照を自動的に防止します。フローAがフローBを含む場合、フローB内にフローAをインポートすることはできません。それにより、フローAがフローBを呼び出し、フローBがフローAを呼び出すという無限ループが発生するためです。
フローをインポートする際、mablは両方向でネストされたフローのチェーン全体を確認します。フローのインポートによっていずれかの深さで循環が発生する場合、そのフローはインポートリストで無効として表示されます。