メインコンテンツへスキップ

Clock

アプリケーションの正確性を検証するには、時間依存の動作を正確にシミュレートすることが不可欠です。詳細については、時計エミュレーションをご覧ください。

時計は BrowserContext 全体に対してインストールされるため、すべてのページとiframeの時間は同じ時計によって制御されることに注意してください。


メソッド

fastForward

バージョン 1.45 で追加 clock.fastForward

時間を早送りして時計を進めます。期限切れのタイマーは最大で1回のみ発火します。これは、ユーザーがラップトップの蓋をしばらく閉じて、指定された時間後に再び開くのと同じです。

使用法

page.clock().fastForward(1000);
page.clock().fastForward("30:00");

引数

  • ticks long | String#

    時間は、時計を進めるミリ秒数、または人間が読める文字列で指定できます。有効な文字列形式は、8秒の場合は "08"、1分の場合は "01:00"、2時間34分10秒の場合は "02:34:10" です。

戻り値


install

バージョン 1.45 で追加 clock.install

次の時間関連関数に偽の実装をインストールします。

  • Date
  • setTimeout
  • clearTimeout
  • setInterval
  • clearInterval
  • requestAnimationFrame
  • cancelAnimationFrame
  • requestIdleCallback
  • cancelIdleCallback
  • performance

偽のタイマーは、テストで時間の流れを手動で制御するために使用されます。これらを使用すると、時間を進めたり、タイマーを発火させたり、時間依存関数の動作を制御したりできます。詳細については、Clock.runFor() および Clock.fastForward() を参照してください。

使用法

Clock.install();
Clock.install(options);

引数

  • options Clock.InstallOptions (オプション)
    • setTime long | String | Date (オプション)#

      初期化する時間。デフォルトは現在のシステム時間です。

戻り値


pauseAt

バージョン 1.45 で追加 clock.pauseAt

時間を早送りして時計を進め、時間を一時停止します。このメソッドが呼び出されると、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("http://localhost:3333");
page.clock().pauseAt(format.parse("2024-12-10T10:00:00"));

引数

戻り値


resume

バージョン 1.45 で追加 clock.resume

タイマーを再開します。このメソッドが呼び出されると、時間の流れが再開し、タイマーが通常どおり発火します。

使用法

Clock.resume();

戻り値


runFor

バージョン 1.45 で追加 clock.runFor

時計を進め、すべての時間関連のコールバックを発火させます。

使用法

page.clock().runFor(1000);
page.clock().runFor("30:00");

引数

  • ticks long | String#

    時間は、時計を進めるミリ秒数、または人間が読める文字列で指定できます。有効な文字列形式は、8秒の場合は "08"、1分の場合は "01:00"、2時間34分10秒の場合は "02:34:10" です。

戻り値


setFixedTime

バージョン 1.45 で追加 clock.setFixedTime

`Date.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

バージョン 1.45 で追加 clock.setSystemTime

システム時間を設定しますが、タイマーはトリガーしません。これを使用して、Webページがタイムシフトにどのように反応するかをテストします。たとえば、夏時間から冬時間への切り替えや、タイムゾーンの変更などです。

使用法

page.clock().setSystemTime(new Date());
page.clock().setSystemTime(new SimpleDateFormat("yyy-MM-dd").parse("2020-02-02"));
page.clock().setSystemTime("2020-02-02");

引数

戻り値