Clock
時間依存の動作を正確にシミュレートすることは、アプリケーションの正しさを検証するために不可欠です。クロックエミュレーションについて詳しくはこちらをご覧ください。
ClockはBrowserContext全体にインストールされるため、すべてのページとiframeの時間は同じクロックによって制御されることに注意してください。
メソッド
fastForward
追加バージョン: v1.45時間をジャンプさせてクロックを進めます。期限切れのタイマーは最大1回のみ発火します。これは、ユーザーがラップトップの蓋をしばらく閉じて、指定された時間後に再び開くことと同じです。
使用法
await page.clock.fastForward(1000);
await 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()の詳細については、こちらを参照してください。
使用法
await clock.install();
await clock.install(options);
引数
戻り値
pauseAt
追加バージョン: v1.45時間を進めてクロックを一時停止します。このメソッドが呼び出された後、clock.runFor()、clock.fastForward()、clock.pauseAt()、またはclock.resume()が呼び出されない限り、タイマーは発火しません。
期限切れのタイマーは最大1回のみ発火します。これは、ユーザーがラップトップの蓋をしばらく閉じて、指定された時間に再び開いて一時停止するのと同じです。
使用法
await page.clock.pauseAt(new Date('2020-02-02'));
await 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.
await page.clock.install({ time: new Date('2024-12-10T08:00:00') });
await page.goto('https://:3333');
await page.clock.pauseAt(new Date('2024-12-10T10:00:00'));
引数
戻り値
resume
追加バージョン: v1.45タイマーを再開します。このメソッドが呼び出された後、時間の流れが再開され、タイマーは通常通り発火します。
使用法
await clock.resume();
戻り値
runFor
追加バージョン: v1.45クロックを進め、時間関連のコールバックをすべて発火させます。
使用法
await page.clock.runFor(1000);
await page.clock.runFor('30:00');
引数
-
時間は、クロックを進めるミリ秒数、または人間が読める形式の文字列で指定できます。有効な文字列形式は、8秒の場合は「08」、1分の場合は「01:00」、2時間34分10秒の場合は「02:34:10」です。
戻り値
setFixedTime
追加バージョン: v1.45Date.now
およびnew Date()
が常に固定の偽の時間を返すようにし、すべてのタイマーを実行し続けます。
このメソッドは、あらかじめ定義された時間でテストするだけでよい単純なシナリオで使用してください。より高度なシナリオでは、代わりにclock.install()を使用してください。クロックエミュレーションに関するドキュメントを読んで詳細を確認してください。
使用法
await page.clock.setFixedTime(Date.now());
await page.clock.setFixedTime(new Date('2020-02-02'));
await page.clock.setFixedTime('2020-02-02');
引数
戻り値
setSystemTime
追加バージョン: v1.45システム時間を設定しますが、タイマーはトリガーしません。これは、サマータイムから冬時間への切り替えやタイムゾーンの変更など、ウェブページが時間シフトにどのように反応するかをテストするために使用します。
使用法
await page.clock.setSystemTime(Date.now());
await page.clock.setSystemTime(new Date('2020-02-02'));
await page.clock.setSystemTime('2020-02-02');
引数
戻り値