Files
piratepoet/mailpoet/tests/performance/utils/helpers.js
2023-03-30 11:03:28 +02:00

49 lines
1.6 KiB
JavaScript

/* eslint-disable import/no-unresolved */
/* eslint-disable import/no-default-export */
/**
* Internal dependencies
*/
import { adminUsername, adminPassword } from '../config.js';
/* global Promise */
// WordPress login authorization
export function authenticate(page) {
// Enter login credentials and login
page.waitForNavigation({ waitUntil: 'networkidle' });
page.waitForLoadState('networkidle');
page.locator('input[name="log"]').type(`${adminUsername}`);
page.locator('input[name="pwd"]').type(`${adminPassword}`);
// Wait for asynchronous operations to complete
return Promise.all([
page.waitForNavigation(),
page.locator('input[name="wp-submit"]').click(),
]);
}
// Select a segment or a list from a select2 search field
export function selectInSelect2(page, listName) {
// Click and write a list name from a dropdown
page.locator('.select2-selection').type(listName);
page.keyboard.press('Enter');
}
// Select a segment or a list from a react search field
export function selectInReact(page, reactSelector, reactValue) {
// Click to write a list name from a dropdown
page.locator(reactSelector).click();
page.locator(reactSelector).type(reactValue);
page.keyboard.press('Enter');
}
// Wait and click the element with waiting for navigation
export function waitAndClick(page, elementName) {
page.waitForSelector(elementName);
page.locator(elementName).click();
page.waitForNavigation({ waitUntil: 'networkidle' });
}
// Wait for selector to be visible
export async function waitForSelectorToBeVisible(page, element) {
await page.locator(element).waitFor({ state: 'visible' });
}