Clock
эмуляция часов.
Обратите внимание: часы устанавливаются для всего BrowserContext, поэтому время на всех страницах и во всех iframe контролируется одними и теми же часами.
Методы
fastForward
Переводит часы вперёд, мгновенно перематывая время. Срабатывают только таймеры, время которых наступило, и каждый — не более одного раза. Это эквивалентно ситуации, когда пользователь на некоторое время закрывает крышку ноутбука, а затем открывает её после указанного промежутка времени.
Использование
await page.clock.fastForward(1000);
await page.clock.fastForward('30:00'); Аргументы
-
Время можно указать как количество миллисекунд, на которое нужно перевести часы вперёд, или как строку в удобочитаемом формате. Допустимые форматы строк: "08" для восьми секунд, "01:00" для одной минуты и "02:34:10" для двух часов, 34 минут и десяти секунд.
Возвращает
install
Устанавливает поддельные реализации следующих функций, связанных со временем:
DatesetTimeoutclearTimeoutsetIntervalclearIntervalrequestAnimationFramecancelAnimationFramerequestIdleCallbackcancelIdleCallbackperformance
Поддельные таймеры позволяют вручную управлять ходом времени в тестах: перемещать время вперёд, запускать таймеры и контролировать поведение функций, зависящих от времени. Подробнее см. в разделах clock.runFor() и clock.fastForward().
Использование
await clock.install(); await clock.install(options);
Аргументы
-
optionsObject (необязательно)
Возвращает
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')); Аргументы
Возвращает
resume
Возобновляет работу таймеров. После вызова этого метода время снова идёт, а таймеры срабатывают в обычном режиме.
Использование
await clock.resume();
Возвращает
runFor
Переводит часы вперёд, запуская все обратные вызовы, связанные со временем.
Использование
await page.clock.runFor(1000);
await page.clock.runFor('30:00'); Аргументы
-
Время можно указать как количество миллисекунд, на которое нужно перевести часы вперёд, или как строку в удобочитаемом формате. Допустимые форматы строк: "08" для восьми секунд, "01:00" для одной минуты и "02:34:10" для двух часов, 34 минут и десяти секунд.
Возвращает
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'); Аргументы
Возвращает
setSystemTime
Устанавливает системное время, не запуская таймеры. Используйте этот метод, чтобы проверить реакцию веб-страницы на изменение времени, например при переходе с летнего времени на зимнее или при смене часового пояса.
Использование
await page.clock.setSystemTime(Date.now());
await page.clock.setSystemTime(new Date('2020-02-02'));
await page.clock.setSystemTime('2020-02-02'); Аргументы
Возвращает
© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-clock