Para añadir un nuevo test a automation-arqc necesitas conocer tres cosas: cómo importar el fixture de autenticación correcto, qué Page Objects comunes están disponibles para navegar y operar la UI, y cómo expresar los pasos con la sintaxis BDD deDocumentation 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.
gherkin-lite. Esta guía cubre cada punto con ejemplos reales tomados de la suite.
Anatomía de un spec
Todo spec de automation-arqc sigue la misma estructura de imports, describe anidado y bloquesgiven / when / then. El ejemplo siguiente muestra el esqueleto mínimo para un test de navegación y carga de listado:
guides/example.spec.js
MenuNavegacion— despliega el acordeón de Angular Material y hace clic en la entrada indicada por la ruta.AccionesCrud— abstrae los botones de acción (Agregar, Editar, Guardar, Eliminar, Aceptar).ComponentesTabla— envuelve los controles de la tabla (filtrar, refrescar, paginar, seleccionar fila).
Usar datos de prueba con fixtures
Cuando el test necesita que ya exista un registro antes de correr (por ejemplo, para editar o eliminar), en lugar de crear el dato dentro del propio test debes importar el fixture de datos correspondiente. Esto mantiene la lógica de preparación separada de la lógica del test:fixtures/reteica/establecimiento.fixture.js expone establecimientoData para tests del subformulario de Establecimientos. Ambos fixtures tienen scope: 'worker', lo que significa que el registro se crea una sola vez para todos los tests del bloque serial y se elimina al final.
Bloques serial para CRUD
Cuando varios tests son dependientes entre sí (crear → editar → eliminar), deben ejecutarse en orden y en el mismo worker. Para eso se usatest.describe.configure({ mode: 'serial' }) al inicio del describe que los agrupa:
serial, si el primer test falla los siguientes se marcan automáticamente como skipped, evitando errores en cascada difíciles de diagnosticar. Los tests de validación independientes deben ir en un describe separado, sin serial, para aprovechar el paralelismo.
Convenciones obligatorias
Tag obligatorio por tipo de test
Tag obligatorio por tipo de test
Cada test debe incluir al menos uno de los tags de tipo que describe su naturaleza:
@smoke— test de humo que verifica la carga básica de una pantalla o flujo crítico.@crud— test que cubre operaciones de creación, edición o eliminación de registros.@search— test de filtrado y búsqueda en listados.@negative— test de validación de errores, campos obligatorios o restricciones de negocio.@regression— test de regresión que forma parte de la ejecución completa.@e2e— flujo que recorre varias pantallas para completar un proceso real de usuario (suites/<Modulo>/e2e/flujo-<proceso>.spec.js).
@tagprueba para que npm run test:smoke los incluya.ID de test: TC-<MÓDULO>-<número>
ID de test: TC-<MÓDULO>-<número>
El nombre de cada test debe comenzar con un identificador único con el formato
TC-<MÓDULO>-<número>, por ejemplo:TC-TER-01 — Navegación y carga del listadoTC-CON-03 — Filtrar por razón social
TER para Terceros, CON para Conceptos, CONT para Contribuyentes, etc.). El número es secuencial dentro del módulo.Describe anidados: Módulo - TipoBloque
Describe anidados: Módulo - TipoBloque
Los describes siguen el patrón Esto genera una jerarquía legible tanto en la consola como en el reporte Allure.
NombreModulo - TipoBloque, donde el tipo de bloque es uno de: Smoke, CRUD, Validaciones y Búsqueda, o E2E. Por ejemplo:Semilla única por ejecución
Semilla única por ejecución
Siempre que un test crea datos (NIT, nombre, dirección), debe usar una semilla derivada del timestamp para garantizar unicidad entre ejecuciones y evitar colisiones en el servidor de pruebas:La semilla se define una sola vez por archivo y se comparte entre todos los bloques que la necesiten (crear, editar, eliminar el mismo registro).