Integración6 min de lectura

Probar zonas horarias de Australia en Playwright

Ejecuta 12 comprobaciones de reloj para Australia en Playwright, incluido el cambio de 30 minutos de Lord Howe. Separa el UTC fijo, la zona del navegador y Node.

En esta página

Configura el timezoneId del navegador en Playwright, fija un instante UTC explícito y después comprueba la fecha que muestra tu página. Mantén aparte la zona horaria del runner de Node: cambiar el ajuste del navegador no cambia el runner. Playwright documenta esa distinción en sus controles de configuración regional y zona horaria.

La comprobación descargable de abajo te da 12 casos australianos repetibles: Sídney y Brisbane en dos estaciones, el desfase de media hora de Broken Hill y el cambio de horario de verano de 30 minutos de Lord Howe. Sirve su propia página pequeña en 127.0.0.1, lee el reloj renderizado en Chromium y guarda las aserciones como JSON. No hacen falta proxy ni credenciales.

Ejecuta la comprobación del reloj

Usa Node.js 24. En una shell de macOS o 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

El script y el README están disponibles directamente. Compara tu salida con el JSON de referencia, que incluye todas las aserciones y el entorno, o con el CSV de referencia, que contiene campos seleccionados de cada fila.

Una ejecución correcta termina con 0 e informa summary.allPassed: true, con total: 12 y passed: 12. Eso incluye las relaciones de reloj esperadas y las comprobaciones de solicitudes y errores. Una salida 1 con JSON de resultados significa que falló una aserción. Un error de arranque o de dependencias en la salida de error estándar es un fallo de configuración; si Chromium no arranca en Linux, revisa las dependencias de sistema de los navegadores de Playwright.

Para cada fila, el script crea un contexto de navegador nuevo, define su timezoneId y llama a page.clock.setFixedTime(new Date(test.utc)) antes de cargar la página. La entrada UTC termina en Z, así que identifica el mismo instante en cualquier entorno del runner. setFixedTime fija los valores que devuelven Date.now() y new Date() mientras los temporizadores siguen funcionando con normalidad; este fixture comprueba fechas renderizadas. API de tiempo fijo de Playwright

Conserva las excepciones australianas en tus casos de prueba

Estas ocho filas usan la medianoche UTC del 15 de enero de 2026 y del 15 de julio de 2026. Los desfases de abajo son al este de UTC. El JSON los expresa en minutos, con el signo opuesto al de getTimezoneOffset() de JavaScript.

timezoneId del navegadorEnero: hora local / desfase UTCJulio: hora local / desfase UTC
Australia/Sydney11:00 / +11:0010:00 / +10:00
Australia/Brisbane10:00 / +10:0010:00 / +10:00
Australia/Broken_Hill10:30 / +10:3009:30 / +09:30
Australia/Lord_Howe11:00 / +11:0010:30 / +10:30

Sídney y Brisbane coinciden en julio, pero difieren en una hora en enero. Broken Hill y Lord Howe también impiden que «NSW» se convierta en una única expectativa de reloj. Las definiciones de hora y excepciones de Nueva Gales del Sur describen estos desfases y la ausencia de horario de verano en Queensland. Los resultados de referencia registran lo que esta ejecución de Chromium renderizó en los instantes declarados.

Las cuatro filas restantes enmarcan los cambios modelados del 4 de octubre de 2026. Cada par avanza UTC un segundo:

Zona del navegadorInstantáneas UTC del 3 de octubre de 2026Instantáneas locales del 4 de octubre de 2026Cambio de desfase
Australia/Lord_Howe15:29:59 → 15:30:0001:59:59 → 02:30:00+10:30 → +11:00
Australia/Sydney15:59:59 → 16:00:0001:59:59 → 03:00:00+10:00 → +11:00

Son instantáneas sintéticas de tiempo fijo, ejecutadas el 26 de septiembre de 2026 UTC. Las entradas de octubre simulan instantes futuros según las reglas comprobadas ese día; no registran una transición real ni prueban un temporizador en marcha durante ella. Las fechas estacionales de NSW y las reglas de IANA para Australasia respaldan las expectativas de fecha y desfase. El cambio de Lord Howe es de 30 minutos y, en este par, ocurre 30 minutos antes en UTC que el de Sídney.

Cambia el runner sin cambiar el resultado del navegador

Ejecuta el mismo archivo con Perth como zona horaria del runner de Node:

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

Compara los 12 objetos rows[].browser con results-utc.json. Deberían coincidir. Los objetos runner deberían diferir: la ejecución en UTC informa un desfase 0, mientras que Perth informa 480 minutos al este de UTC. La variable de entorno TZ de Node controla el runner.

Las dos ejecuciones registradas superaron las 12 filas, con lecturas del navegador idénticas. Los archivos JSON completos diferirán porque también conservan marcas de tiempo de ejecución y metadatos del runner. Esta comparación ayuda a detectar una expectativa de prueba calculada por accidente en la zona local del runner.

Comprueba que las aserciones rechazan un error

El script incluye tres modos deliberadamente incorrectos. Ejecuta cada comando por separado si tu shell o tu trabajo de CI se detiene tras una salida distinta de cero:

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
ModoError deliberadoFilas fallidas registradas
one-nsw-clockEsperar el desfase de Sídney en el mismo instante para Broken Hill y Lord Howe.5 de 12
one-hour-dstEsperar que el desfase estándar de Lord Howe, +10:30, aumente una hora completa.2 de 12
omit-browser-timezoneQuitar el ajuste del navegador conservando las expectativas australianas con el runner en UTC.12 de 12

Cada modo debería terminar con 1. Los dos primeros cambian deliberadamente los valores esperados; el tercero quita un control del navegador. Demuestran que se detectan esos errores concretos. En wrong-nsw.json, los cinco identificadores fallidos son Broken Hill en enero y julio, Lord Howe en julio y las dos instantáneas de frontera de Lord Howe. En wrong-dst.json, Lord Howe en enero y la instantánea posterior al cambio rechazan el desfase inventado de +11:30.

Ante un fallo inesperado en la ejecución normal, revisa summary.failed y las assertions de esa fila:

Comprobación fallidaQué revisar después
fixedInstantConfirma la entrada UTC explícita y que el tiempo fijo se establece antes de que la página lea su reloj.
requestedTimezoneConfirma que la página pertenece al contexto con el timezoneId solicitado.
expectedOffset o expectedWallTimeComprueba la fecha de la fila, la zona, el signo del desfase y las reglas vigentes antes de cambiar la expectativa.
renderedEqualsSampledRevisa los errores de página y cualquier diferencia entre el reloj renderizado y la lectura posterior del navegador.

Si todas las filas pasan pero summary.allPassed es false, revisa también relationshipsMinutes, requests, blockedRequests y pageErrors. El fixture exige las relaciones de desfase declaradas, exactamente 12 solicitudes a su página de loopback y ninguna solicitud de página bloqueada ni error de página.

Aplica los controles a tu propia página

Elige una fecha mostrada o un horario cuyo comportamiento esperado puedas enunciar. Conserva la entrada UTC explícita y el timezoneId del navegador, y sustituye la aserción del reloj visible del fixture por una aserción sobre ese elemento en tu propia prueba. La descarga en sí no acepta ninguna URL de destino externa.

Mantén constantes las demás entradas en la primera comparación: configuración regional, preferencias guardadas, configuración de la aplicación y datos de prueba. Si la aplicación formatea a propósito un horario en una zona comercial fija, comprueba ese comportamiento. Una marca de tiempo generada por el servidor o una preferencia de zona horaria a nivel de cuenta necesita su propia preparación; la emulación del navegador por sí sola no establece ninguno de los dos valores.

Empieza por el par enero/julio pertinente y luego añade un caso de frontera que tu aplicación admita. Conserva la entrada fallida y el registro de entorno del JSON al investigar una discrepancia. Cambiar la salida esperada solo para que coincida con una ejecución del navegador eliminaría la comprobación independiente.

Si la aplicación también toma una decisión a partir de la ubicación de la IP de la solicitud, usa una prueba aparte de ubicación de salida. La página de selección de proxies de Australia explica cómo elegir la evidencia de ubicación que necesita esa regla.

Método y límites

Las ejecuciones registradas usaron Node.js 24.20.0, Playwright 1.63.0 y Chromium 153.0.8010.12 en macOS arm64. Tras instalar las dependencias, cada ejecución hizo 12 solicitudes a su propia página de loopback, con cero intentos de la página fuera de su origen y cero errores de página. Los desfases esperados proceden de las fuentes primarias anteriores; el script comparó el reloj renderizado de la página con una segunda lectura del navegador.

Esto cubre un motor de navegador y un sistema operativo en 12 casos declarados. No establece el avance de los temporizadores, las horas repetidas cuando los relojes se atrasan, todos los territorios australianos, el comportamiento de tu aplicación ni la geografía de las IP australianas. La fuente de IANA comprobada fue la versión 2026d. El valor nodeTz: 2026a de los resultados describe los datos de zonas horarias de Node; no se midió la versión de la base de datos interna de Chromium. Conserva la información de versiones y vuelve a comprobar las reglas al actualizar o elegir fechas nuevas.

No se ha confirmado la disponibilidad de proxies australianos. Consigue acceso anticipado. Un correo cuando se abra el acceso. Nada más.

Fuentes y lecturas adicionales

Referencias técnicas usadas para esta guía. Consulta la documentación de tu versión instalada y la configuración compatible de tu proveedor.