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.

playwright.config.js es el archivo central de configuración de automation-arqc. Define el comportamiento de toda la suite: dónde están los tests, cuántos workers correr, qué tan largo esperar antes de fallar, qué reportes generar, y cómo configurar el navegador. El archivo adapta automáticamente su comportamiento según el contexto de ejecución: cuando la variable de entorno process.env.CI está definida (en Jenkins), activa retries más agresivos, habilita más workers, y previene que un test.only() accidental pase desapercibido.

Configuración completa

playwright.config.js
import { defineConfig, devices } from '@playwright/test';
import dotenv from 'dotenv';
import path from 'path';
dotenv.config({ path: path.resolve(__dirname, '.env') });

export default defineConfig({
  testDir: './suites',
  globalSetup: './playwright/global-setup.js',
  globalTeardown: './playwright/global-teardown.js',
  fullyParallel: true,
  forbidOnly: !!process.env.CI,
  retries: process.env.CI ? 2 : 1,
  timeout: 240000,
  workers: process.env.CI ? 2 : 1,
  reporter: [
    ['list'],
    ['allure-playwright', {
      detail: true,
      outputFolder: 'allure-results',
      suiteTitle: false,
      environmentInfo: { node_version: process.version, os_platform: process.platform },
    }],
    ['html', { outputFolder: 'playwright-report', open: 'never' }],
  ],
  use: {
    locale: 'es-ES',
    timezoneId: 'America/Bogota',
    extraHTTPHeaders: {
      'Accept-Language': 'es-ES,es;q=0.9'
    },
    launchOptions: {
      args: [
        '--lang=es-ES',
        '--accept-lang=es-ES',
        '--force-renderer-locale=es-ES'
      ]
    },
    navigationTimeout: 120000,
    actionTimeout: 45000,
    trace: 'retain-on-failure',
    screenshot: 'only-on-failure',
    video: 'retain-on-failure',
  },
  projects: [{
    name: 'chromium',
    use: {
      ...devices['Desktop Chrome'],
      locale: 'es-ES',
      extraHTTPHeaders: {
        'Accept-Language': 'es-ES,es;q=0.9'
      },
      launchOptions: {
        args: ['--lang=es-ES', '--accept-lang=es-ES', '--force-renderer-locale=es-ES']
      }
    },
  }],
});

Parámetros explicados

ParámetroValor localValor CIDescripción
testDir./suites./suitesDirectorio raíz donde Playwright busca archivos *.spec.js
globalSetup./playwright/global-setup.jsigualScript que corre una sola vez antes de todos los tests — ejecuta el login Angular y guarda la sesión en playwright/.auth/user.json
globalTeardown./playwright/global-teardown.jsigualScript que corre una sola vez al finalizar todos los tests — cierra la sesión y elimina user.json
fullyParalleltruetrueLos tests dentro de un mismo archivo corren en paralelo (no solo entre archivos)
forbidOnlyfalsetrueSi es true, la presencia de test.only() en cualquier archivo hace fallar el build entero
retries12Número de reintentos automáticos antes de marcar el test como fallido — 1 en local cubre fallos transitorios de red sobre VPN
timeout240000 ms240000 msTimeout por test completo (4 minutos) — amplio para acomodar la lentitud del servidor Angular remoto
workers12Número de procesos workers paralelos — 1 en local evita condiciones de carrera en user.json
localees-ESes-ESIdioma del navegador y formato de fechas/números
timezoneIdAmerica/BogotaAmerica/BogotaZona horaria del navegador — crítica para campos de fecha en el sistema tributario
navigationTimeout120000 ms120000 msTiempo máximo para que una navegación complete — 2 minutos para cubrir el servidor Angular sobre VPN
actionTimeout45000 ms45000 msTiempo máximo para que una acción de usuario (clic, fill, etc.) complete
traceretain-on-failureretain-on-failureGuarda la traza Playwright solo cuando el test falla
screenshotonly-on-failureonly-on-failureToma captura de pantalla solo cuando el test falla
videoretain-on-failureretain-on-failureGraba video solo cuando el test falla

Reporters

La suite utiliza tres reporters en paralelo para cubrir diferentes necesidades de visibilidad:

list

Reporter de consola. Imprime cada test con su resultado ( / ) en tiempo real durante la ejecución. Es la salida principal que Jenkins captura en el log de la etapa de pruebas.

allure-playwright

Reporter primario. Genera los artefactos en allure-results/ para construir el reporte Allure interactivo. Incluye detail: true para capturar pasos, adjuntos y trazas, e inyecta node_version y os_platform en la sección de entorno del reporte.

html

Reporter de respaldo local. Genera un reporte HTML autónomo en playwright-report/ con open: 'never' para que no intente abrir el navegador en CI. Útil cuando Allure no está disponible o para compartir un reporte rápido sin necesidad del CLI de Allure.
Para generar y visualizar los reportes localmente:
# Generar y abrir reporte Allure
npm run report:generate

# Servir el último reporte Allure generado
npm run report:serve

# Abrir el reporte HTML de Playwright
npm run report:pw

# Inspeccionar una traza específica manualmente
npx playwright show-trace test-results/<nombre-test>/trace.zip

Configuración de idioma (locale)

El sistema tributario muestra fechas, separadores de miles y textos en español colombiano. Para evitar fallos en selectores de fecha y aserciones de texto, el locale es-ES se configura en tres capas redundantes:
  1. use.locale — define el locale del contexto de navegador de Playwright
  2. use.extraHTTPHeaders — envía Accept-Language: es-ES,es;q=0.9 en todas las peticiones HTTP
  3. use.launchOptions.args — pasa --lang=es-ES, --accept-lang=es-ES y --force-renderer-locale=es-ES directamente a Chromium
Los fixtures de Reteica replican las mismas tres capas al crear sus propios contextos de navegador para el setup/teardown de datos.
forbidOnly: !!process.env.CI convierte test.only() en un error de compilación cuando la variable CI está definida. Esto protege el pipeline de Jenkins de ejecuciones accidentales con scope reducido: si un desarrollador deja un test.only() en el código y hace push, la etapa de pruebas fallará inmediatamente con el mensaje "Error: focused items are not allowed" antes de correr ningún test.

Build docs developers (and LLMs) love