Я использую CodeceptJS и пытаюсь написать настраиваемый помощник, который утверждает текст и нажимает" ОК ". Это диалоговое окно появляется как модальное окно iframe для согласия на использование файлов cookie.
Если я напишу следующие шаги в моем сценарии
I.amOnPage('/some-path');
within({frame: '#iframeID'}, () => {
I.see('Headline text for dialog');
I.click('OK');
});
// ...
... мой тест, кажется, работает нормально.
Но когда я делаю из этого специального помощника и правильно его настраиваю, чтобы я мог его использовать:
const { Helper } = codeceptjs;
class CookieConsent extends Helper {
consentWithCookies() {
const { Puppeteer } = this.helpers;
within({frame: '#iframeID'}, () => {
Puppeteer.see('Headline text for dialog');
Puppeteer.click('OK');
});
}
}
module.exports = CookieConsent;
... и используйте его как шаг:
I.amOnPage('/some-path');
I.consentWithCookies();
// ...
... похоже, это не работает, поскольку диалоговое окно согласия не отключается, как это было при реализации этого непосредственно в сценарии. Согласно некоторым console.log()
отладкам, внутренний обратный вызов вообще не вызывается. Консоль не выдает ошибок о неопределенном within
или о чем-либо подозрительном.
Я подозреваю, что использование within
в пользовательском помощнике не работает или я делаю что-то не так, что не могу понять из документации.
Это предупреждение в документации на самом деле не поясняет, когда внутри используется неправильно, а при использовании await
не не помочь в проблеме.
внутри может вызвать проблемы при неправильном использовании. Если вы видите странное поведение теста, попробуйте его рефакторинг, чтобы он не использовался внутри. По возможности рекомендуется для простейших случаев укладываться в рамки. Поскольку внутри возвращает обещание, может потребоваться дождаться результата, даже если вы не собираетесь использовать возвращаемое значение.