Clock
アプリケーションの正確性を検証するには、時間依存の動作を正確にシミュレートすることが不可欠です。 クロックエミュレーションの詳細については、こちらをご覧ください。
なお、クロックはBrowserContext全体にインストールされるため、すべてのページとiframeの時間は同じクロックによって制御されます。
メソッド
fastForward
追加バージョン: v1.45時間を進めてクロックを進めます。期日を過ぎたタイマーは最大1回だけ起動します。これは、ユーザーがしばらくの間ノートパソコンの蓋を閉じ、指定された時間後に再度開くことと同じです。
使用法
page.clock().fastForward(1000);
page.clock().fastForward("30:00");
引数
-
時間は、クロックを進めるミリ秒数、または人間が判読できる文字列のいずれかです。有効な文字列形式は、8秒の場合は「08」、1分の場合は「01:00」、2時間34分10秒の場合は「02:34:10」です。
戻り値
install
追加バージョン: v1.45以下の時間関連関数の偽の実装をインストールします。
Date
setTimeout
clearTimeout
setInterval
clearInterval
requestAnimationFrame
cancelAnimationFrame
requestIdleCallback
cancelIdleCallback
performance
フェイクタイマーは、テストにおける時間の流れを手動で制御するために使用されます。これにより、時間を進めたり、タイマーを起動したり、時間依存関数の動作を制御したりできます。Clock.runFor() および Clock.fastForward() の詳細については、こちらをご覧ください。
使用法
Clock.install();
Clock.install(options);
引数
戻り値
pauseAt
追加バージョン: v1.45時間を進めてクロックを進め、時間を一時停止します。このメソッドが呼び出されると、Clock.runFor()、Clock.fastForward()、Clock.pauseAt()、または Clock.resume() が呼び出されない限りタイマーは起動しません。
期日を過ぎたタイマーは最大1回だけ起動します。これは、ユーザーがしばらくの間ノートパソコンの蓋を閉じ、指定された時間に再度開いて一時停止することと同じです。
使用法
SimpleDateFormat format = new SimpleDateFormat("yyy-MM-dd");
page.clock().pauseAt(format.parse("2020-02-02"));
page.clock().pauseAt("2020-02-02");
最良の結果を得るには、ページをナビゲートする前にクロックをインストールし、意図するテスト時刻よりわずかに前の時刻に設定してください。これにより、ページ読み込み中にすべてのタイマーが正常に動作し、ページが停止するのを防ぎます。ページが完全に読み込まれたら、Clock.pauseAt() を使用して安全にクロックを一時停止できます。
// Initialize clock with some time before the test time and let the page load
// naturally. `Date.now` will progress as the timers fire.
SimpleDateFormat format = new SimpleDateFormat("yyy-MM-dd'T'HH:mm:ss");
page.clock().install(new Clock.InstallOptions().setTime(format.parse("2024-12-10T08:00:00")));
page.navigate("https://:3333");
page.clock().pauseAt(format.parse("2024-12-10T10:00:00"));
引数
戻り値
resume
追加バージョン: v1.45タイマーを再開します。このメソッドが呼び出されると、時間の流れが再開され、タイマーは通常通り起動します。
使用法
Clock.resume();
戻り値
runFor
追加バージョン: v1.45クロックを進め、すべての時間関連コールバックを起動します。
使用法
page.clock().runFor(1000);
page.clock().runFor("30:00");
引数
-
時間は、クロックを進めるミリ秒数、または人間が判読できる文字列のいずれかです。有効な文字列形式は、8秒の場合は「08」、1分の場合は「01:00」、2時間34分10秒の場合は「02:34:10」です。
戻り値
setFixedTime
追加バージョン: v1.45Date.now
および new Date()
が常に固定のフェイク時間を返すようにし、すべてのタイマーを実行し続けます。
このメソッドは、あらかじめ定義された時間でテストするだけでよいシンプルなシナリオで使用してください。より高度なシナリオでは、代わりにClock.install() を使用してください。クロックエミュレーションに関するドキュメントを読んで詳細を確認してください。
使用法
page.clock().setFixedTime(new Date());
page.clock().setFixedTime(new SimpleDateFormat("yyy-MM-dd").parse("2020-02-02"));
page.clock().setFixedTime("2020-02-02");
引数
戻り値
setSystemTime
追加バージョン: v1.45システム時刻を設定しますが、タイマーは起動しません。これは、ウェブページがサマータイムからウィンタータイムへの切り替えやタイムゾーンの変更など、時刻変更にどのように反応するかをテストするために使用します。
使用法
page.clock().setSystemTime(new Date());
page.clock().setSystemTime(new SimpleDateFormat("yyy-MM-dd").parse("2020-02-02"));
page.clock().setSystemTime("2020-02-02");
引数
戻り値