UNPKG

estructura_automation

Version:

Paquete de estructura de automation

68 lines (58 loc) 2.06 kB
/* eslint-disable @typescript-eslint/no-explicit-any */ import { test as base } from '@playwright/test'; import Selectors from './Locators/index'; import { BrowserContext } from '@playwright/test'; // Definición de los tipos de fixtures personalizados type MyFixtures = { globalSelectors: Selectors; }; type WorkerFixtures = { skipAuth: boolean; authContext: BrowserContext; _autoAuth: void; }; // Extensión del test de Playwright con los fixtures personalizados export const test = base.extend<MyFixtures, WorkerFixtures>({ skipAuth: [false, { option: true, scope: 'worker' }], authContext: [async ({ browser, skipAuth }, use) => { const context = await browser.newContext(); let page:any; let selectors:any; if (!skipAuth) { await context.addCookies([ { name: '_secPrint', value: '822ebceb-0e9c-40fe-a29c-0de70453bf0b', domain: '.demo.paguetodo.com', path: '/' } ]); page = await context.newPage(); selectors = new Selectors(page); await selectors.page.goto(process.env.BASE_URL || ''); await selectors.page.waitForTimeout(1_500); await selectors.fields.emailInput.fill(process.env.EMAIL || ''); await selectors.fields.passwordInput.fill(process.env.PASSWORD || ''); await selectors.buttons.loginButton.click(); await selectors.page.waitForTimeout(1_500); await selectors.page.waitForURL('**/apps'); await selectors.page.context().storageState({ path: 'auth.json' }); } await use(context); if (!skipAuth && page && selectors) { await selectors.buttons.logoutButton.click(); await selectors.page.waitForTimeout(1500); await page.close(); } await context.close(); }, { scope: 'worker' }], _autoAuth: [async ({ authContext }, use) => { void authContext; await use(); }, { auto: true, scope: 'worker' }], // Fixture para selectores globales globalSelectors: async ({ page }, use) => { const selectorsInstance = new Selectors(page); await use(selectorsInstance); }, });