intelica-library-e2e
v1.0.2
Published
Herramental común de las suites E2E (Playwright) del stack de Intelica: config, sesión, discovery de selectores, helpers del shell y ticketing de Jira.
Readme
intelica-library-e2e
Herramental común de las suites E2E (Playwright) del stack de Intelica.
Antes, cada microfront copiaba ~136 KB de código idéntico en su proyecto de tests —el motor del
discovery, los tres scripts de Jira, la sesión, los helpers del shell y el playwright.config.ts
entero—. Cada copia envejecía por su cuenta y actualizarlas era ir repo por repo. Acá viven una
sola vez y se actualizan con un bump de versión.
No es una librería Angular. No se compila con
ng-packagrni está declarada enangular.json: es Node plano, se compila contscy su consumidor es un proyecto de tests, no una aplicación.
Instalación
npm install intelica-library-e2eDependencia normal, no devDependency. El reusable que publica los tickets de Jira instala con
npm i --omit=dev, que no trae devDependencies: como devDep, el binario intelica-e2e-jira-submit
no existiría en ese job. Y la distinción no cuesta nada, porque el proyecto de tests es privado y
nunca se publica.
@playwright/test es peer dependency: lo pone el proyecto de tests, que ya lo tiene. Por eso
tenerlo en este repo no arrastra navegadores a nadie.
Qué expone
| Subpath | Qué da |
| --- | --- |
| intelica-library-e2e/config | defineE2EConfig({ baseURL }) — el playwright.config.ts completo |
| intelica-library-e2e/auth | login, ensureAuth, isAuthEnabled, AUTH_STATE — la sesión |
| intelica-library-e2e/shell | switchProfile — helpers de la UI compartida del portal |
| intelica-library-e2e/discovery | runDiscovery({ baseUrl, pages }) — el motor del catálogo |
| intelica-library-e2e/jira/reporter | el reporter que propone bugs; se referencia por nombre en el config |
| intelica-e2e-jira-submit (bin) | el script que crea los tickets, tras la aprobación de QA |
Cómo se usa en un proyecto de tests
playwright.config.ts
import { defineE2EConfig } from "intelica-library-e2e/config";
export default defineE2EConfig({ baseURL: "https://<microfront>.qa.intelica.com" });Los timeouts tienen los defaults del stack (test 60 s, aserción 10 s, acción 15 s, navegación 30 s) y se ajustan por proyecto sin tocar el resto:
export default defineE2EConfig({
baseURL: "...",
timeouts: { navigation: 60_000 }, // lo que no se pasa, queda con el default
});Si te encontrás pasando el mismo override en varios proyectos, eso es señal de que el default del paquete tiene que cambiar — no cada repo.
discover.config.ts — lo único del microfront: su baseURL y su inventario de rutas.
import { runDiscovery, type PageSpec } from "intelica-library-e2e/discovery";
import type { Page } from "@playwright/test";
const BASE_URL = "https://<microfront>.qa.intelica.com";
const PAGES: PageSpec[] = [
{ path: "/login", auth: false },
{ path: "/dashboard", prepare: async (page: Page) => { /* abrir overlays */ } },
];
runDiscovery({ baseUrl: BASE_URL, pages: PAGES });tests/auth.setup.ts — tiene que estar bajo testDir o Playwright no lo recolecta.
import { test as setup } from "@playwright/test";
import { ensureAuth } from "intelica-library-e2e/auth";
setup("authenticate", async ({ page }) => {
await ensureAuth(page);
});Variables de entorno
Las lee del .env del proyecto que llama, no del paquete. Todas las rutas que el paquete
escribe (.auth/state.json, selectors/, jira-tickets.json) son relativas a ese proyecto.
| Variable | Para qué |
| --- | --- |
| QA_AUTH_LOGIN_URL | el interruptor: sin ella no se autentica nada y no se arma el proyecto setup |
| QA_AUTH_USER / QA_AUTH_PASS | credenciales de QA |
| QA_AUTH_TTL_MIN | minutos que se reutiliza la sesión guardada (default 30) |
| JIRA_BASE_URL / JIRA_EMAIL / JIRA_API_TOKEN | solo las necesita el bin de submit; el reporter nunca habla con Jira |
Publicación
Igual que las librerías Angular de este repo: el workflow
.github/workflows/publish-intelica-library-e2e.yml se dispara al mergear a main cambios bajo
projects/intelica-library-e2e/**, compila con tsc y publica desde dist/intelica-library-e2e.
