Los fixtures de Playwright son funciones de setup/teardown que se ejecutan antes y después de cada test (o una sola vez por worker) y se inyectan como argumentos a la función del test. En automation-arqc los fixtures cumplen dos roles: gestionan la autenticación (para que cada test comience ya con la sesión establecida) y precreación de datos (para que los tests E2E dispongan de un tercero, contribuyente y establecimiento reales en la base de datos antes de que el test empiece). Esto desacopla completamente la preparación de datos de la lógica de aserciones del test.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Giofelix/Proyecto-automatizacion-Empresa/llms.txt
Use this file to discover all available pages before exploring further.
Jerarquía de fixtures
Los fixtures de Reteica forman una cadena de dependencias: cada nivel extiende el anterior con un fixture adicional. Playwright garantiza el teardown en orden LIFO (Last In, First Out) — el establecimiento se elimina primero, luego el contribuyente, y finalmente el tercero.base.extend(...). Un test E2E que necesita el stack completo importa directamente establecimiento.fixture.js y obtiene los cuatro fixtures (paginaAutenticada, terceroData, contribuyenteData, establecimientoData) en un solo import.
paginaAutenticada
paginaAutenticada es el fixture base definido en fixtures/auth.fixture.js y re-exportado por fixtures/index.js. Lee la sesión guardada en playwright/.auth/user.json, la inyecta en el sessionStorage del navegador antes de que Angular arranque, navega a BASE_URL y espera a que la URL contenga /modulos y el mat-drawer-inner-container sea visible. El resultado es una instancia de page ya autenticada lista para usar en el test.
Uso en un test de componente
Cualquier spec que solo necesite la sesión importa desdefixtures/index.js (que re-exporta auth.fixture.js):
paginaAutenticada: page en la desestructuración hace que dentro del cuerpo del test la variable se llame page, igual que en un test estándar de Playwright, evitando cambiar la interfaz mental.
Fixtures de datos Reteica
Los fixturesterceroData, contribuyenteData y establecimientoData son todos de scope worker: se ejecutan una sola vez por proceso worker de Playwright (no una vez por test). Esto es eficiente cuando una suite serial de tres tests (crear → editar → eliminar) necesita el mismo conjunto de datos preexistentes — el fixture los crea una vez, los tres tests los usan, y el teardown los elimina al final.
Cada fixture sigue el mismo patrón:
Generar seed único
Usa
Date.now().toString().slice(-9) para obtener un número de 9 dígitos único por ejecución. Este valor se usa como NIT del tercero, parte del nombre del contribuyente y del establecimiento.Setup: crear datos con un browser auxiliar
Abre un contexto nuevo (independiente del contexto del test), inyecta la sesión, navega al módulo correspondiente y realiza la creación a través de los page objects.
Entregar datos al test con `use()`
Llama a
await use({ seed, nit, razonSocial, ... }) para que el test reciba el objeto con los datos creados.Referencia de fixtures de datos
| Fixture | Archivo | Datos entregados al test | Depende de |
|---|---|---|---|
terceroData | tercero.fixture.js | { seed, nit, razonSocial } | paginaAutenticada |
contribuyenteData | contribuyente.fixture.js | { seed, nit, razonSocial, matricula } | terceroData |
establecimientoData | establecimiento.fixture.js | { seed, nit, razonSocial, matricula, nombreEstablecimiento } | contribuyenteData |
Ejemplo: test E2E con establecimientoData
Un test E2E que necesita el stack completo solo importa establecimiento.fixture.js. El fixture ya garantiza que tercero, contribuyente y establecimiento existen en la base de datos antes de que el cuerpo del test comience a ejecutarse.
Orden de teardown (LIFO)
Dado queestablecimientoData depende de contribuyenteData que depende de terceroData, Playwright deshace la cadena en orden inverso:
Referencia: Auth Fixture
API detallada de
paginaAutenticada: parámetros, comportamiento y opciones de configuración.Referencia: Fixtures de Reteica
API completa de
terceroData, contribuyenteData y establecimientoData con todos los campos expuestos.