ブラウザテストの失敗の中には、テストしている動作とは無関係なものがあります。たとえば、ページの描画がわずかに遅れる、ネットワークリクエストが停止する、通常は読み込み時に表示されるコンポーネントが表示されない、といったケースです。こうした問題は、アプリケーションについて何も新しいことを教えてくれないままテストを失敗させ、アプリが実際に動作していることを証明するためだけに再実行を強いることになります。
実行時リカバリー・リフレッシュを使うと、mablはクラウド実行で発生した偶発的な失敗に、その場で対処します。mablの通常の検索と自動修復の試行を経てもステップが失敗した場合、mablは失敗を報告する前にページを再読み込みし、そのステップをもう一度実行します。この記事では、実行時リカバリー・リフレッシュがいつ動作するのか、何を行うのか、そしてテスト出力でどのように見分けるのかを説明します。
提供状況
実行時リカバリー・リフレッシュは、少数のアカウントから順次ロールアウトしており、mablチームがアカウント単位で有効にしています。ご自身のアカウントで有効にしたい場合は、カスタマーサクセスマネージャーにお問い合わせください。
有効になったら、特定のプランでオンにすることができます。プランごとのモードが導入される前にオプトインしていたアカウントでは、各プランでモードを設定するまで、ページの再読み込みは行われなくなります。
自動修復と実行時リカバリー・リフレッシュ
mablは、テストしている動作以外の何かが変わった場合でもブラウザテストを成功させ続けるために、複数の戦略を使用しています。
- 自動修復は要素レベルで動作します。ボタンのラベルやCSSクラスなど、要素の属性が変更された場合、自動修復は要素の履歴を使用して次に最適な一致を見つけます。
- 実行時リカバリー・リフレッシュは、自動修復の後にページレベルで動作します。mablが要素を待機し、自動修復を試みてもステップが失敗する場合、mablはページを再読み込みしてステップを再試行します。
実行時リカバリー・リフレッシュは、2026年8月に提供を終了したエージェント実行時リカバリの後継として計画している取り組みの1つです。エージェントが個々の失敗を分析して修正アクションを選ぶのではなく、ページの再読み込みという1つの予測可能なリカバリのみを行い、mablがそれを使用したタイミングはテスト出力で確認できます。前身の機能とは異なり、実行時リカバリー・リフレッシュはLLMとやり取りしません。
プランのモードを選択する
実行時リカバリー・リフレッシュは、プランレベルの詳細セクションで設定します。すべてのプランはモードがオフの状態から始まるため、モードを選択してプランを保存するまで、実行の動作は何も変わりません。
| モード | ステップが失敗したときのmablの動作 |
|---|---|
| On(オン) | ページを再読み込みしてステップを再試行します。再試行が成功すると、テストは続行され、成功として終了します。 |
| Refresh, but fail the test at the end(再読み込みするが、最後にテストを失敗にする) | ページを再読み込みしてステップを再試行します。再試行が成功するとテストは続行されますが、テストは失敗として終了します。 |
| Off(オフ) | ページを再読み込みせずに、直ちに失敗を報告します。 |
特定のプランで再読み込みを信頼してよいかまだ判断できない間は、Refresh, but fail the test at the endを選択してください。mablはテストの残りを最後まで実行するため、最初の失敗だけでなく実行内のすべての失敗を確認でき、失敗という結果によってその実行が見過ごされることもありません。
実行時リカバリー・リフレッシュは、テストが実行されたプランからモードを読み取ります。テスト一覧から開始したアドホック実行など、プランの外で実行されるテストでは、実行時リカバリー・リフレッシュは使用されません。
ページの再読み込みとステップの再試行
実行時リカバリー・リフレッシュのモードがOnまたはRefresh, but fail the test at the endに設定されたプランでブラウザテストがmablクラウドで実行されると、サポートされているステップが失敗するたびに次の処理が行われます。
- 通常の待機、検索、自動修復の試行を経て、ステップが失敗します。mablは、要素が見つからなかった、アサーションが一致しなかったなどの理由を記録します。
- mablは現在のページを再読み込みし、読み込みが完了するまで待機します。
- mablは、新しく読み込まれたページに対して同じステップをもう一度実行します。
- ステップが成功した場合、mablはそのステップをリカバリ済みとしてマークし、テストは次のステップから続行されます。Refresh, but fail the test at the endの場合、実行は失敗として終了します。
- ステップが再び失敗した場合、mablはそのステップを1回目の試行の結果とともに失敗としてマークし、再試行の失敗をステップのログに記録します。実行は他の失敗と同じように進行します。
実行時リカバリー・リフレッシュが各ステップを再試行するのは1回だけです。2回目の試行も失敗した場合、mablはそのステップのために再度ページを再読み込みすることはありません。再読み込みのたびに、ページの読み込みと2回目の試行の分だけステップの所要時間が長くなるため、ステップが失敗し続けるテストは、実行時リカバリー・リフレッシュがない場合よりも失敗までに時間がかかります。
テスト出力でリカバリされたステップを確認する
実行時リカバリー・リフレッシュは、ブラウザテストの出力にステップレベルで表示されます。
- 2回目の試行の前に、ステップのログに
Step failed (Element not found); refreshing the page and retrying once.のような行が記録されます。 - 2回目の試行で成功したステップには、ステータスの下に更新アイコン付きのバッジが表示されます。Onの場合、バッジにはRecovered with Runtime Recovery Refresh(実行時リカバリー・リフレッシュでリカバリ済み)と表示されます。Refresh, but fail the test at the endの場合は、Retry passed with Runtime Recovery Refresh; the plan fails the test at the end(実行時リカバリー・リフレッシュで再試行が成功。プランの設定によりテストは最後に失敗)と表示されます。
2回とも失敗したステップには、1回目の試行の失敗が表示されます。そのステップのログには再読み込みの行と再試行の失敗が含まれるため、mablが失敗を報告する前に再読み込みを試みたことがわかります。
長い実行の中から再読み込みされたステップを探すには、ステップ一覧を実行時リカバリー・リフレッシュでフィルターしてください。このフィルターは、再試行が成功したかどうかにかかわらず、mablが再読み込みしたすべてのステップに一致します。詳しくは、テスト出力のステップのフィルタリングを参照してください。
ページを再読み込みすると、フォームに入力したテキスト、開いていたダイアログ、リストに適用したフィルターなど、そのページ上でテストが積み上げてきた状態は破棄されます。再読み込み後に成功したステップは、新しく読み込まれたページに対して成功しています。
再読み込み前後のページを比較する
mablが再読み込みしたステップでは、スクリーンショット、ネットワーク、DOMの各タブに試行の切り替えが表示されます。
- 初回の試行には、ステップが最初に失敗したときにmablが取得した内容が表示されます。元のページのスクリーンショットとDOM、およびそのステップが行ったネットワークリクエストです。
- 再読み込み後には、再読み込みされたページが表示されます。ページの読み込み完了後にmablが撮影したスクリーンショット、再試行に入る時点のDOM、および再読み込み自体が行ったネットワークリクエストです。リクエスト一覧の上にあるステータスの概要は初回の試行のものであるため、再読み込み後には表示されません。
各タブは個別に設定を記憶するため、初回のスクリーンショットと再読み込み時のリクエストを並べて確認できます。2つの試行を比較することが、再読み込みで何が変わったかを知る最も手早い方法であり、リカバリされたステップが想定どおりのページに対して動作したかどうかを判断する材料になります。
リカバリされたステップを信頼してよいか判断する
テストが意図したとおりの内容を確認していることを確かめるため、リカバリされたステップは自動修復の確認と同じように確認してください。
- ページの描画の遅れやリクエストの停止が原因でステップがリカバリされた場合、何も変更する必要はありません。同じステップが頻繁にリカバリされる場合は、その前にアサーションやwait untilステップを追加して、ページの準備が整うまでテストが待機するようにすることを検討してください。
- ステップが同じページ上の前のステップの状態に依存していた場合は、初回の試行と再読み込み後のスクリーンショットを比較して、リカバリされたステップとそれに続くステップが想定どおりの対象に対して動作したことを確認してください。
- 再読み込み後にステップが成功したものの、本来は成功すべきでなかった場合は、その実行をカスタマーサクセスマネージャーに共有してください。実行時リカバリー・リフレッシュは新しい機能であり、こうした事例が今後の改善につながります。
サポートされているステップタイプ
実行時リカバリー・リフレッシュは、ページに対して操作を行うステップ、またはページを確認するステップを再試行します。
- クリック、ホバー、テキストを入力、選択、ファイル入力の設定などの要素操作
- ビジュアルアサーションを含む、ページおよび要素のアサーション
- wait untilステップ
- 要素のプロパティから作成する変数
再試行されないステップ
再読み込みしても解決しないステップや、再読み込みによってステップの意味が変わってしまうステップについては、mablは失敗を直ちに報告します。
- ナビゲーションステップ:URLにアクセス、戻る、進む、再読み込み
- Cookieとビューポートのステップ
- 多要素認証 (MFA) コードの入力(チャレンジページを再読み込みするとコードが無効になる可能性があるため)
- JavaScriptスニペットステップとJavaScript変数ステップ
- await tab、switch context、ファイルアップロードの待機、releaseの各ステップ
- メール、ダウンロード、アクセシビリティ、APIの各ステップ
- IFおよびELSE IFの条件ステップ、および実行終了時に失敗するように設定されたステップ
- iframe内で実行されるステップ
- ティアダウンフローおよびパフォーマンステスト内のステップ
ローカル実行
実行時リカバリー・リフレッシュは、mablクラウドで実行されるブラウザテストに適用されます。mabl CLIやmablデスクトップアプリから開始したローカル実行では、ページを再読み込みせず、元の失敗がそのまま報告されます。