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