# Проверка часовых поясов Австралии в Playwright

Source: https://ipvolt.com/ru/guides/playwright-australia-timezones
Markdown: https://ipvolt.com/ru/guides/playwright-australia-timezones.md
Language: ru

[ipvolt — главная](https://ipvolt.com/ru.md) / [Руководства](https://ipvolt.com/ru/guides.md) / Проверка часовых поясов Австралии в Playwright

Интеграция
Проверено: 2026-09-27
6 мин чтения
Автор: ipvolt

12 проверок часов браузера для Австралии в Playwright, включая 30-минутный переход Лорд-Хау. Отделите фиксированное UTC, пояс браузера и раннер Node.

Задайте в Playwright браузерный `timezoneId`, зафиксируйте явный момент времени в UTC, а затем проверьте дату, которую показывает ваша страница. Часовой пояс раннера Node держите отдельно: настройка браузера его не меняет. Playwright описывает это различие в разделе о [локали и часовом поясе](https://playwright.dev/docs/emulation#locale--timezone).

Скрипт для скачивания ниже даёт 12 воспроизводимых австралийских случаев: Сидней и Брисбен в два сезона, получасовое смещение Брокен-Хилла и 30-минутный переход на летнее время на острове Лорд-Хау. Он сам поднимает небольшую страницу на `127.0.0.1`, считывает часы, отрисованные в Chromium, и сохраняет проверки в JSON. Ни прокси, ни учётные данные не нужны.

## Запустите проверку часов

Нужен Node.js 24. В оболочке macOS или Linux:

```sh
mkdir australia-clock-demo
cd australia-clock-demo
curl --fail --silent --show-error --output australia-clock-check.mjs https://ipvolt.com/downloads/australia-clock-check.mjs
npm install --no-audit --no-fund --save-exact playwright@1.63.0
npx playwright install chromium
TZ=UTC node australia-clock-check.mjs > results-utc.json
```

[Скрипт](/downloads/australia-clock-check.mjs) и [README](/downloads/australia-clock-README.md) доступны напрямую. Сравните свой вывод с [эталонным JSON](/downloads/australia-clock-results.json), где есть все проверки и описание окружения, или с [эталонным CSV](/downloads/australia-clock-results.csv), где собраны отдельные поля строк.

Успешный запуск завершается с кодом `0` и сообщает `summary.allPassed: true`, а также `total: 12` и `passed: 12`. Сюда входят ожидаемые соотношения часов и проверки запросов и ошибок. Код `1` вместе с JSON результата означает, что не прошла одна из проверок. Ошибка запуска или зависимостей в стандартном потоке ошибок означает сбой настройки; если Chromium не стартует в Linux, проверьте [системные зависимости браузеров](https://playwright.dev/docs/browsers#install-system-dependencies) Playwright.

Для каждой строки скрипт создаёт новый контекст браузера, задаёт его `timezoneId` и до загрузки страницы вызывает `page.clock.setFixedTime(new Date(test.utc))`. Входное значение UTC оканчивается на `Z`, поэтому оно обозначает один и тот же момент при любом окружении раннера. `setFixedTime` фиксирует значения, которые возвращают `Date.now()` и `new Date()`, а таймеры продолжают работать как обычно; эта фикстура проверяет отрисованные даты. [API фиксированного времени в Playwright](https://playwright.dev/docs/api/class-clock#clock-set-fixed-time)

## Сохраните австралийские исключения в тестовых случаях

Эти восемь строк используют полночь по UTC **15 января 2026 года** и **15 июля 2026 года**. Смещения ниже указаны к востоку от UTC. В JSON они выражены в минутах, со знаком, противоположным `getTimezoneOffset()` в JavaScript.

| `timezoneId` браузера | Январь: местное время / смещение от UTC | Июль: местное время / смещение от UTC |
| --- | --- | --- |
| `Australia/Sydney` | 11:00 / +11:00 | 10:00 / +10:00 |
| `Australia/Brisbane` | 10:00 / +10:00 | 10:00 / +10:00 |
| `Australia/Broken_Hill` | 10:30 / +10:30 | 09:30 / +09:30 |
| `Australia/Lord_Howe` | 11:00 / +11:00 | 10:30 / +10:30 |

Сидней и Брисбен совпадают в июле, но в январе расходятся на час. Брокен-Хилл и Лорд-Хау тоже не дают свести «NSW» к одному ожидаемому времени. В [определениях времени и исключениях](https://dcj.nsw.gov.au/about-us/daylight-saving/definitions-of-time-and-how-time-is-regulated.html) Нового Южного Уэльса описаны эти смещения и сказано, что в Квинсленде нет летнего времени. [Эталонные результаты](/downloads/australia-clock-results.json) фиксируют, что этот запуск Chromium отрисовал в заданные моменты.

Оставшиеся четыре строки охватывают смоделированные переходы **4 октября 2026 года**. В каждой паре UTC сдвигается на одну секунду:

| Пояс браузера | Снимки UTC 3 октября 2026 года | Местные снимки 4 октября 2026 года | Изменение смещения |
| --- | --- | --- | --- |
| `Australia/Lord_Howe` | 15:29:59 → 15:30:00 | 01:59:59 → 02:30:00 | +10:30 → +11:00 |
| `Australia/Sydney` | 15:59:59 → 16:00:00 | 01:59:59 → 03:00:00 | +10:00 → +11:00 |

Это **синтетические снимки с фиксированным временем**, выполненные 26 сентября 2026 года по UTC. Октябрьские входные значения имитируют будущие моменты по правилам, проверенным в тот день; они не фиксируют реальный переход и не проверяют таймер, работающий во время него. Ожидаемые даты и смещения опираются на [сезонные даты NSW](https://www.nsw.gov.au/about-nsw/daylight-saving) и [правила IANA для Австралазии](https://data.iana.org/time-zones/tzdb/australasia). На Лорд-Хау часы переводят на 30 минут, и в этой паре это происходит на 30 минут раньше по UTC, чем в Сиднее.

## Смените пояс раннера, не меняя результат браузера

Запустите тот же файл, задав Перт как часовой пояс раннера Node:

```sh
TZ=Australia/Perth node australia-clock-check.mjs > results-perth.json
```

Сравните 12 объектов `rows[].browser` с `results-utc.json`. Они должны совпасть. Объекты `runner` должны различаться: запуск в UTC сообщает смещение `0`, а Перт сообщает `480` минут к востоку от UTC. Раннером управляет [переменная окружения `TZ`](https://nodejs.org/docs/latest-v24.x/api/cli.html#tz) в Node.

Оба записанных запуска прошли все 12 строк с одинаковыми показаниями браузера. JSON-файлы целиком будут различаться, потому что в них сохраняются ещё и метки времени выполнения и метаданные раннера. Такое сравнение помогает заметить ожидаемое значение, случайно вычисленное в местном поясе раннера.

## Убедитесь, что проверки отклоняют ошибку

В скрипте есть три намеренно неверных режима. Запускайте каждую команду отдельно, если ваша оболочка или задание CI останавливается после ненулевого кода выхода:

```sh
TZ=UTC node australia-clock-check.mjs one-nsw-clock > wrong-nsw.json
TZ=UTC node australia-clock-check.mjs one-hour-dst > wrong-dst.json
TZ=UTC node australia-clock-check.mjs omit-browser-timezone > wrong-browser-zone.json
```

| Режим | Намеренная ошибка | Записанные непройденные строки |
| --- | --- | --- |
| `one-nsw-clock` | Ожидать для Брокен-Хилла и Лорд-Хау смещение Сиднея в тот же момент. | 5 из 12 |
| `one-hour-dst` | Ожидать, что стандартное смещение Лорд-Хау +10:30 вырастет на целый час. | 2 из 12 |
| `omit-browser-timezone` | Убрать настройку браузера, сохранив австралийские ожидания при раннере в UTC. | 12 из 12 |

Каждый режим должен завершаться с кодом `1`. Первые два намеренно меняют ожидаемые значения; третий убирает настройку браузера. Они показывают, что именно эти ошибки обнаруживаются. В `wrong-nsw.json` пять непройденных идентификаторов относятся к Брокен-Хиллу в январе и июле, Лорд-Хау в июле и обоим пограничным снимкам Лорд-Хау. В `wrong-dst.json` Лорд-Хау в январе и снимок после перехода отклоняют выдуманное смещение +11:30.

При неожиданном сбое в обычном запуске посмотрите `summary.failed` и `assertions` этой строки:

| Непройденная проверка | Что смотреть дальше |
| --- | --- |
| `fixedInstant` | Убедитесь, что вход UTC задан явно и что фиксированное время установлено до того, как страница прочитает часы. |
| `requestedTimezone` | Убедитесь, что страница принадлежит контексту с запрошенным `timezoneId`. |
| `expectedOffset` или `expectedWallTime` | Проверьте дату строки, пояс, знак смещения и действующие правила, прежде чем менять ожидание. |
| `renderedEqualsSampled` | Изучите ошибки страницы и любую разницу между отрисованными часами и более поздним показанием браузера. |

Если все строки проходят, но `summary.allPassed` равно false, изучите ещё `relationshipsMinutes`, `requests`, `blockedRequests` и `pageErrors`. Фикстура требует заявленных соотношений смещений, ровно 12 запросов к своей loopback-странице и отсутствия заблокированных запросов страницы и ошибок страницы.

## Примените эти настройки к своей странице

Выберите отображение даты или расписание, ожидаемое поведение которого вы можете сформулировать. Сохраните явный вход UTC и браузерный `timezoneId`, а проверку видимых часов фикстуры замените проверкой этого элемента в собственном тесте. Сам скачиваемый скрипт не принимает внешний целевой URL.

Для первого сравнения держите остальные входные данные постоянными: локаль, сохранённые настройки, конфигурацию приложения и тестовые данные. Если приложение намеренно форматирует расписание в фиксированном деловом поясе, проверяйте именно это поведение. Метке времени, сформированной сервером, или настройке часового пояса на уровне аккаунта нужна своя подготовка; одна лишь эмуляция в браузере не задаёт ни то, ни другое.

Начните с подходящей пары январь/июль, затем добавьте пограничный случай, который поддерживает ваше приложение. При разборе расхождения сохраняйте непройденный вход и запись об окружении из JSON. Если менять ожидаемый результат только ради совпадения с запуском браузера, независимая проверка исчезнет.

Если приложение ещё и принимает решение по местоположению IP-адреса запроса, используйте отдельный тест местоположения выхода. [Страница выбора прокси для Австралии](/ru/proxies/australia) объясняет, как выбрать доказательства местоположения, которые нужны такому правилу.

## Метод и ограничения

Записанные запуски использовали Node.js **24.20.0**, Playwright **1.63.0** и Chromium **153.0.8010.12** на macOS arm64. После установки зависимостей каждый запуск сделал 12 запросов к собственной loopback-странице, без единой попытки страницы обратиться к другому источнику и без ошибок страницы. Ожидаемые смещения взяты из первичных источников выше; скрипт сравнивал отрисованные часы страницы со вторым показанием браузера.

Это охватывает один браузерный движок и одну ОС в 12 заявленных случаях. Отсюда не следуют выводы о ходе таймеров, о повторяющемся времени при переводе часов назад, обо всех территориях Австралии, о поведении вашего приложения или о географии австралийских IP-адресов. Проверялся источник IANA [версии **2026d**](https://data.iana.org/time-zones/tzdb/version). Значение `nodeTz: 2026a` в результатах описывает данные о часовых поясах в Node; версия внутренней базы Chromium не измерялась. Сохраняйте сведения о версиях и перепроверяйте правила при обновлении или выборе новых дат.

Наличие австралийских прокси не подтверждено. [Получите ранний доступ](/ru/proxies#waitlist-closing). Одно письмо, когда откроется доступ. Больше ничего.

## Источники и дополнительное чтение

- [Browser locale and timezone; separate runner](https://playwright.dev/docs/emulation#locale--timezone)
- [Clock setFixedTime API](https://playwright.dev/docs/api/class-clock#clock-set-fixed-time)
- [Browser installation and system dependencies](https://playwright.dev/docs/browsers#install-system-dependencies)
- [Time definitions and NSW exceptions](https://dcj.nsw.gov.au/about-us/daylight-saving/definitions-of-time-and-how-time-is-regulated.html)
- [Current daylight-saving dates](https://www.nsw.gov.au/about-nsw/daylight-saving)
- [Australasian zone rules](https://data.iana.org/time-zones/tzdb/australasia)
- [Live directory version](https://data.iana.org/time-zones/tzdb/version)
- [Node.js TZ environment variable](https://nodejs.org/docs/latest-v24.x/api/cli.html#tz)

## Связанные руководства

- [Прокси Австралии: страна, мобильные сети и проверки nbn](https://ipvolt.com/ru/guides/australia-proxies.md)
- [Настройка прокси в Playwright](https://ipvolt.com/ru/guides/playwright-proxy-setup.md)
- [Ротируемые и sticky-прокси: планируйте непрерывность сессии](https://ipvolt.com/ru/guides/rotating-vs-sticky-proxies.md)

## О ipvolt

Примеры используют обобщённые настройки прокси со ссылками на оригинальную техническую документацию. Поведение конкретного продукта уточняйте у своего провайдера. ipvolt пока в разработке.

[Читать оригинал на английском](https://ipvolt.com/guides/playwright-australia-timezones.md)

## Узнайте, когда откроется доступ.

ipvolt · В разработке

Мы строим прокси-инфраструктуру для разработчиков и команд, работающих с данными. Оставьте email, чтобы получить уведомление, когда ipvolt будет готов.

Одно письмо, когда откроется доступ. Больше ничего.

[Получить ранний доступ](https://ipvolt.com/ru/guides/playwright-australia-timezones#waitlist-closing)

[Конфиденциальность](https://ipvolt.com/privacy)

