Files
plantillas-proyectos/frontend/e2e/global-setup.ts
Galindo97 65832a92bc feat(e2e): replicar patrón de autenticación de aduanasoft-hub
- fixtures/keycloak.ts: Admin REST API helpers (createTestUser, assignRoles,
  deleteTestUser) — copia exacta del hub
- global-setup.ts: crea usuario e2e-anexo76 en KC antes de los tests
- global-teardown.ts: elimina el usuario al finalizar
- auth.setup.ts: navega a /login → Workspace → llena form → /dashboard
  (ya no usa password grant ni Direct Access Grants)
- playwright.config.ts: agrega globalSetup y globalTeardown
- Jenkinsfile: a76-e2e-credentials ahora son credenciales de KC admin;
  usuario de prueba es efímero (creado/borrado por global-setup/teardown)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 13:50:39 -05:00

51 lines
1.9 KiB
TypeScript

/**
* Playwright globalSetup — se ejecuta UNA vez antes de todos los tests E2E.
*
* Crea el usuario de prueba en Keycloak desde cero vía Admin REST API.
* No depende de que el usuario exista previamente — funciona con KC vacío
* siempre que el realm y los clientes estén configurados.
*
* Patrón idéntico al de aduanasoft-hub.
*/
import { writeFileSync } from 'fs';
import { join, dirname } from 'path';
import { fileURLToPath } from 'url';
import { createTestUser, assignRoles } from './fixtures/keycloak.js';
const __dirname = dirname(fileURLToPath(import.meta.url));
const KC_CFG = {
url: process.env.KC_URL ?? 'https://workspace.aduanasoft.com/kcauth',
realm: process.env.KEYCLOAK_REALM ?? 'master',
adminUser: process.env.E2E_KC_ADMIN_USER ?? 'admin',
adminPassword: process.env.E2E_KC_ADMIN_PASSWORD ?? ''
};
const TEST_USER = {
username: process.env.E2E_TEST_USER ?? 'e2e-anexo76',
password: process.env.E2E_TEST_PASSWORD ?? '',
email: process.env.E2E_TEST_EMAIL ?? 'e2e-anexo76@test.local'
};
export default async function globalSetup() {
console.log('\n[E2E setup] Creando usuario de prueba en Keycloak...');
if (!KC_CFG.adminPassword) {
throw new Error('E2E_KC_ADMIN_PASSWORD no está configurado');
}
if (!TEST_USER.password) {
throw new Error('E2E_TEST_PASSWORD no está configurado');
}
const userId = await createTestUser(KC_CFG, TEST_USER);
// Roles de Keycloak necesarios para acceder a Anexo76
await assignRoles(KC_CFG, userId, ['admin']);
// Guardar el ID para que globalTeardown pueda borrar el usuario
const statePath = join(__dirname, '..', '.e2e-state.json');
writeFileSync(statePath, JSON.stringify({ userId, username: TEST_USER.username }));
console.log(`[E2E setup] Usuario '${TEST_USER.username}' listo (id: ${userId})`);
}