Skip to main content

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.

Los fixtures Reteica crean y eliminan entidades de prueba de forma automática siguiendo un ciclo de vida de tipo setup/teardown, utilizando el scope 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 mediante base.extend(), formando una cadena de herencia donde cada nivel añade su propio fixture sin romper los anteriores:
authFixture (paginaAutenticada)
    └── tercero.fixture.js (terceroData)
            └── contribuyente.fixture.js (contribuyenteData)
                    └── establecimiento.fixture.js (establecimientoData)
Importar desde 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.
PropiedadValor
Archivofixtures/reteica/tercero.fixture.js
Scopeworker
Depende deauthFixture (paginaAutenticada)
Valor cedido{ seed: string, nit: string, razonSocial: string }

Setup

Genera un seed 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:
CampoValor
NITseed (9 dígitos del timestamp)
Tipo DocumentoNIT
Razón SocialAUTOTEST CON {seed}
Tipo RégimenMenores Ingresos
NaturalezaPERSONA JURIDICA
DirecciónCL 18 25 50
Teléfonos6027234567
PaísColombia
DepartamentoBOYACA
CiudadBOYACA

Teardown

Llama a eliminarTerceroConBrowser(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

import {
  crearTerceroConBrowser,
  eliminarTerceroConBrowser
} from '../../fixtures/reteica/tercero.fixture.js';
Estos helpers están disponibles para specs que necesiten crear/eliminar Terceros fuera del ciclo de vida del fixture (por ejemplo, en tests de flujo que verifican la eliminación manualmente).

Cuándo usar

Usa terceroData 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.
PropiedadValor
Archivofixtures/reteica/contribuyente.fixture.js
Scopeworker
Depende deterceroData
Valor cedido{ seed: string, nit: string, razonSocial: string, matricula: string }

Setup

Reutiliza el seed 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:
  1. contribuyenteData teardown — elimina el Contribuyente filtrando por NIT
  2. terceroData teardown — elimina el Tercero filtrando por NIT
Esto respeta la integridad referencial: siempre se elimina el Contribuyente antes que el Tercero al que está vinculado.

Helpers exportados

import {
  navegarAContribuyentes,
  cerrarDrawerSiVisible,
  crearContribuyenteConBrowser,
  eliminarContribuyenteConBrowser
} from '../../fixtures/reteica/contribuyente.fixture.js';

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”.
PropiedadValor
Archivofixtures/reteica/establecimiento.fixture.js
Scopeworker
Depende decontribuyenteData
Valor cedido{ seed, nit, razonSocial, matricula, nombreEstablecimiento }

Setup

Reutiliza el seed 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:
CampoValor
Nombreautotest_EST_{seed}
Teléfono3100000000
PaísColombia
DepartamentoNARIÑO
CiudadPASTO
BarrioPrimera opción disponible en el combo
DirecciónCALLE 18 # 24-30
Correo electrónicoautotest_{seed}@correo.com
Inicio de actividad1/1/2024

Teardown (LIFO)

El orden de teardown garantizado por Playwright es:
  1. establecimientoData teardown — navega a Establecimientos del Contribuyente y elimina por nombre
  2. contribuyenteData teardown — elimina el Contribuyente por NIT
  3. terceroData teardown — elimina el Tercero por NIT

Cuándo usar

Usa establecimientoData 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 E2E de declaración
import { test } from '../../../fixtures/reteica/establecimiento.fixture.js';

test('TC-DEC-001 — Happy Path declaración',
  { tag: '@e2e @contribuyentes @reteica' },
  async ({ paginaAutenticada: page, establecimientoData }) => {
    const { seed, razonSocial, nombreEstablecimiento } = establecimientoData;
    // Fixture ya creó tercero + contribuyente + establecimiento
    // Teardown automático al finalizar
  }
);

Para tests de contribuyentes (sin establecimiento)

// Para tests de contribuyentes (sin establecimiento)
import { test } from '../../fixtures/reteica/contribuyente.fixture.js';

test('mi-test', async ({ paginaAutenticada: page, contribuyenteData }) => {
  const { seed } = contribuyenteData;
});

Para tests que solo necesitan un Tercero

import { test } from '../../fixtures/reteica/tercero.fixture.js';

test('TC-TER-E2E-001 — Editar Tercero existente',
  { tag: '@e2e @terceros @reteica' },
  async ({ paginaAutenticada: page, terceroData }) => {
    const { seed, razonSocial } = terceroData;
  }
);
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.
Los fixtures con { scope: 'worker' } corren exactamente una vez por proceso worker de Playwright, no una vez por test. Si tienes cuatro tests en el mismo archivo spec que usan contribuyenteData, el Tercero y el Contribuyente se crean una sola vez al arrancar el worker, los cuatro tests los reutilizan, y se eliminan una sola vez al finalizar el worker. Esto hace que la suite sea eficiente incluso con muchos tests por módulo.

Build docs developers (and LLMs) love