Я использую testcafe для запуска некоторых тестов на странице электронной коммерции, но случайное всплывающее окно нарушает тест. Когда он появляется в окне, Testcafe не может щелкнуть следующий селектор и продвинуться вперед с тестом, а затем терпит неудачу.
В настоящее время я использую файлы .js для хранения селекторов, например:
import { Selector } from 'testcafe';
export default class Checkout {
constructor () {
//address
this.addressName = Selector('input#CC-checkoutCepAddressBook-sfirstname');
this.addressLastname = Selector('input#CC-checkoutCepAddressBook-slastname');
//Rest of selectors...
}
Затем я импортирую их в другой .js и объявляю тесты как функции:
import { ClientFunction } from 'testcafe';
import { Selector } from 'testcafe';
import Fixture from '../../../DesktopModel/Chrome/fixture.js';
import Home from '../../../DesktopModel/Chrome/home.js';
import Cart from '../../../DesktopModel/Chrome/cart.js';
...
const fixtureUrlBase = new Fixture();
const home = new Home();
const pdp = new Pdp();
const cart = new Cart();
...
export async function checkoutLoggedBoleto(t) {
await t
.click(pdp.addToCartBtn)
.click(home.finishOrderBtn)
.click(cart.finishOrderBtn)
//Rest of the test actions...}
Наконец, я выполняю another.js, где объявляю тесты с помощью команды test:
test
.before(async t => {
await login(t);
})
('Desktop - User Login + Checkout with Invoice', async t => {
// Function Login => Search => PDP => Checkout with Invoice
await checkoutLoggedBoleto(t);
});
Поскольку это случайное событие (оно происходит в разные моменты, например, иногда на странице продукта, а иногда на странице оформления заказа), можно использовать какой-либо условный тест, просто пропустив это всплывающее окно, например, если всплывающее окно 'x' появляется на экрана, нажмите «закрыть всплывающее окно» и продолжите тест, в противном случае продолжите тест.
Я ищу в тестовом кафе Test API и не нашел такой функции.
Я использую testcafe 0.17.0.