Spec-Zone.ru › Playwright

Clock

эмуляция часов.

Обратите внимание: часы устанавливаются для всего BrowserContext, поэтому время на всех страницах и во всех iframe контролируется одними и теми же часами.

Методы​

fastForward​

Переводит часы вперёд, мгновенно перематывая время. Срабатывают только таймеры, время которых наступило, и каждый — не более одного раза. Это эквивалентно ситуации, когда пользователь на некоторое время закрывает крышку ноутбука, а затем открывает её после указанного промежутка времени.

Использование

await page.clock.fastForward(1000);
await page.clock.fastForward('30:00');

Аргументы

  • ticks number | string

    Время можно указать как количество миллисекунд, на которое нужно перевести часы вперёд, или как строку в удобочитаемом формате. Допустимые форматы строк: "08" для восьми секунд, "01:00" для одной минуты и "02:34:10" для двух часов, 34 минут и десяти секунд.

Возвращает

  • Promise<void>

install​

Устанавливает поддельные реализации следующих функций, связанных со временем:

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

Поддельные таймеры позволяют вручную управлять ходом времени в тестах: перемещать время вперёд, запускать таймеры и контролировать поведение функций, зависящих от времени. Подробнее см. в разделах clock.runFor() и clock.fastForward().

Использование

await clock.install();
await clock.install(options);

Аргументы

  • options Object (необязательно)
    • time number | string | Date (необязательно)

      Время для инициализации; по умолчанию используется текущее системное время.

Возвращает

  • Promise<void>

pauseAt​

Переводит часы вперёд, мгновенно перематывая время, и приостанавливает его. После вызова этого метода таймеры не срабатывают, пока не будет вызван один из методов clock.runFor(), clock.fastForward(), clock.pauseAt() или clock.resume().

Срабатывают только таймеры, время которых наступило, и каждый — не более одного раза. Это эквивалентно ситуации, когда пользователь закрывает крышку ноутбука на некоторое время, открывает её в указанное время и приостанавливает ход времени.

Использование

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('http://localhost:3333');
await page.clock.pauseAt(new Date('2024-12-10T10:00:00'));

Аргументы

  • time number | string | Date

    Время, на котором нужно приостановить часы.

Возвращает

  • Promise<void>

resume​

Возобновляет работу таймеров. После вызова этого метода время снова идёт, а таймеры срабатывают в обычном режиме.

Использование

await clock.resume();

Возвращает

  • Promise<void>

runFor​

Переводит часы вперёд, запуская все обратные вызовы, связанные со временем.

Использование

await page.clock.runFor(1000);
await page.clock.runFor('30:00');

Аргументы

  • ticks number | string

    Время можно указать как количество миллисекунд, на которое нужно перевести часы вперёд, или как строку в удобочитаемом формате. Допустимые форматы строк: "08" для восьми секунд, "01:00" для одной минуты и "02:34:10" для двух часов, 34 минут и десяти секунд.

Возвращает

  • Promise<void>

setFixedTime​

Заставляет Date.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');

Аргументы

  • time number | string | Date

    Время, задаваемое в миллисекундах.

Возвращает

  • Promise<void>

setSystemTime​

Устанавливает системное время, не запуская таймеры. Используйте этот метод, чтобы проверить реакцию веб-страницы на изменение времени, например при переходе с летнего времени на зимнее или при смене часового пояса.

Использование

await page.clock.setSystemTime(Date.now());
await page.clock.setSystemTime(new Date('2020-02-02'));
await page.clock.setSystemTime('2020-02-02');

Аргументы

  • time number | string | Date

    Время, задаваемое в миллисекундах.

Возвращает

  • Promise<void>

© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-clock

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API