Los fixtures Reteica crean y eliminan entidades de prueba de forma automática siguiendo un ciclo de vida de tipo setup/teardown, utilizando el scopeDocumentation 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.
worker de Playwright para que cada proceso worker tenga datos aislados y compartidos entre todos los tests que corren en él. Cada fixture de esta cadena extiende al anterior: terceroData crea un Tercero, contribuyenteData lo usa para crear un Contribuyente vinculado, y establecimientoData crea un Establecimiento sobre ese Contribuyente. Playwright garantiza el teardown en orden LIFO (Last In, First Out), por lo que siempre se elimina primero la entidad más derivada, evitando errores de integridad referencial en la base de datos.
Jerarquía de dependencias
Los fixtures se encadenan mediantebase.extend(), formando una cadena de herencia donde cada nivel añade su propio fixture sin romper los anteriores:
establecimiento.fixture.js expone los cuatro fixtures: paginaAutenticada, terceroData, contribuyenteData y establecimientoData. Importar desde contribuyente.fixture.js expone los tres primeros, y así sucesivamente — siempre importa desde el nivel más profundo que necesites.
terceroData
El fixture de nivel base de la cadena Reteica. Genera un Tercero con NIT único derivado del timestamp actual y lo elimina automáticamente al finalizar el worker.
| Propiedad | Valor |
|---|---|
| Archivo | fixtures/reteica/tercero.fixture.js |
| Scope | worker |
| Depende de | authFixture (paginaAutenticada) |
| Valor cedido | { seed: string, nit: string, razonSocial: string } |
Setup
Genera unseed tomando los últimos 9 dígitos de Date.now() — suficientemente único para evitar colisiones entre workers paralelos. Luego abre un contexto de navegador separado con sesión inyectada desde user.json, navega a Reteica → Archivos → Terceros, y crea el Tercero con los siguientes valores fijos de prueba:
| Campo | Valor |
|---|---|
| NIT | seed (9 dígitos del timestamp) |
| Tipo Documento | NIT |
| Razón Social | AUTOTEST CON {seed} |
| Tipo Régimen | Menores Ingresos |
| Naturaleza | PERSONA JURIDICA |
| Dirección | CL 18 25 50 |
| Teléfonos | 6027234567 |
| País | Colombia |
| Departamento | BOYACA |
| Ciudad | BOYACA |
Teardown
Llama aeliminarTerceroConBrowser(browser, seed) que filtra el listado por NIT, selecciona la fila y confirma la eliminación via el diálogo SweetAlert2. Si la fila ya no existe (por ejemplo, si el test la eliminó), el teardown termina silenciosamente.
Helpers exportados
Cuándo usar
UsaterceroData cuando el test solo necesita que exista un Tercero en el sistema, sin requerir Contribuyente ni Establecimiento asociado.
contribuyenteData
Extiende terceroData para crear adicionalmente un Contribuyente vinculado al Tercero del seed. Es el fixture más usado para tests del módulo Contribuyentes.
| Propiedad | Valor |
|---|---|
| Archivo | fixtures/reteica/contribuyente.fixture.js |
| Scope | worker |
| Depende de | terceroData |
| Valor cedido | { seed: string, nit: string, razonSocial: string, matricula: string } |
Setup
Reutiliza elseed del terceroData ya creado. Abre un contexto autenticado independiente, navega a Reteica → Archivos → Contribuyentes mediante el helper navegarAContribuyentes(page), hace clic en Agregar, selecciona el Tercero por NIT desde el diálogo de selección, y asigna la matrícula MAT-{seed}.
Teardown (LIFO)
Playwright corre los teardowns en orden inverso a la declaración. El orden garantizado es:contribuyenteDatateardown — elimina el Contribuyente filtrando por NITterceroDatateardown — elimina el Tercero filtrando por NIT
Helpers exportados
navegarAContribuyentes(page)
Navega al listado de Contribuyentes desde cualquier estado de la página. Detecta si ya está en la URL correcta y hace early return para evitar navegación redundante. Si el drawer de Angular Material está abierto, lo cierra antes de continuar.
cerrarDrawerSiVisible(page)
Hace clic en el backdrop del drawer de Angular Material si está visible, luego espera a que se oculte completamente. Útil para tests que abren un subformulario en drawer y necesitan volver al listado.
establecimientoData
El fixture más completo de la cadena: crea Tercero, Contribuyente y Establecimiento en ese orden, y los elimina en orden inverso. Es el fixture requerido para los flujos E2E de “Presentar Declaración”.
| Propiedad | Valor |
|---|---|
| Archivo | fixtures/reteica/establecimiento.fixture.js |
| Scope | worker |
| Depende de | contribuyenteData |
| Valor cedido | { seed, nit, razonSocial, matricula, nombreEstablecimiento } |
Setup
Reutiliza elseed del contribuyenteData. Abre un contexto autenticado, filtra el Contribuyente en el listado por NIT, abre su detalle, navega a Establecimientos desde el menú more_vert del detalle, y crea el Establecimiento con los siguientes valores:
| Campo | Valor |
|---|---|
| Nombre | autotest_EST_{seed} |
| Teléfono | 3100000000 |
| País | Colombia |
| Departamento | NARIÑO |
| Ciudad | PASTO |
| Barrio | Primera opción disponible en el combo |
| Dirección | CALLE 18 # 24-30 |
| Correo electrónico | autotest_{seed}@correo.com |
| Inicio de actividad | 1/1/2024 |
Teardown (LIFO)
El orden de teardown garantizado por Playwright es:establecimientoDatateardown — navega a Establecimientos del Contribuyente y elimina por nombrecontribuyenteDatateardown — elimina el Contribuyente por NITterceroDatateardown — elimina el Tercero por NIT
Cuándo usar
UsaestablecimientoData para tests del flujo Presentar Declaración, que requieren que el árbol completo Tercero → Contribuyente → Establecimiento esté creado antes de comenzar.
Importar y usar los fixtures
Para flujos E2E de declaración
Para tests de contribuyentes (sin establecimiento)
Para tests que solo necesitan un Tercero
Cada fixture contiene una guarda
existsSync(authFile) al inicio de su bloque de setup. Si playwright/.auth/user.json no existe (como ocurre durante una ejecución CI antes de que globalSetup haya corrido, o en entornos donde el login falló), el fixture omite la creación de datos y cede directamente el objeto seed con valores derivados del timestamp. Esto previene fallos en cascada: el test recibirá datos de fixture “vacíos” y fallará por su propia lógica, no por un error en el fixture mismo.