estructura_automation
Version:
Paquete de estructura de automation
68 lines (58 loc) • 2.06 kB
text/typescript
/* 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);
},
});