- 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>
51 lines
1.9 KiB
TypeScript
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})`);
|
|
}
|