Слідкуйте за спливаючим вікном, яке відкрило ваша дія.
Прив'яжіть нове вікно до його початкової дії, а потім перевірте бажану сторінку замість довільної вкладки.

Перекладне видання. Технічні ідентифікатори залишаються в оригінальній формі.

Кнопка довідки відкриває нове вікно. Тест продовжує читати оригінальну сторінку або захоплює вкладку, яка є останньою. Він може проходити, коли присутнє інше вікно, і не працювати, коли змінюється середовище. Відсутня угода про право власності: яку сторінку було створено цією дією?
Цей посібник дотримується документації на сторінках Playwright із вікном підтримки, вигаданим локально. Це не вхід до облікового запису чи зовнішній платіжний потік. Мета полягає в тому, щоб приєднати спливаюче вікно до його початкової дії, перевірити фактично отриману сторінку та уникнути перетворення порядку табуляції на доказ.
Зачекайте на сторінці, якій належить дія
Почніть очікування спливаючого вікна, перш ніж клацнути елемент керування, який його відкриває. Потім дочекайтеся тієї самої обіцянки та збережіть повернуте посилання на сторінку. Швидке нове вікно не повинно уникнути очікування, а інша наявна вкладка не повинна стати випадковою ціллю.
const pendingPopup = page.waitForEvent('popup');
await page.getByRole('button', { name: 'Open demo help' }).click();
const popup = await pendingPopup;
await expect(popup.getByRole('heading', { name: 'Demo help' })).toBeVisible();У цьому прикладі передбачається, що локальна програма відкриває спливаюче вікно з корисним заголовком. Він не створює заголовок і не гарантує, що кожна політика веб-переглядача дозволяє всі типи нових вікон. Поставте слухача перед дією, а потім перевірте фактичний очікуваний вміст.
Посібник зі сторінок також описує прослуховування нової сторінки в контексті браузера. Ця ширша подія корисна, коли початкова сторінка невідома. Коли це відомо, спливаюча подія на рівні сторінки дає більш чітке відношення. Запропонуйте очікування поведінці замість того, щоб прийняти найширший прослуховувач за замовчуванням.
Нова сторінка ще не є правильним місцем призначення
Отримання об'єкта Page доводить, що вікно було створено. Це не підтверджує завантажений вміст або те, що навігація закінчилася в дозволеному місці. Спливаюче вікно може показати помилку, переспрямування або інший документ. Перевірте значущу URL-адресу чи умову сторінки щодо фактичних вимог до продукту.
Для демонстрації достатньо заголовка, щоб продемонструвати право власності. Для реального потоку використовуйте схвалений очікуваний пункт призначення та інформацію, яку має отримати особа. Не сприймайте видимий заголовок як успіх. Не вводьте облікові дані на неочікуваній сторінці, оскільки вона відкрилася в потрібний момент.
Використовуйте повернуте спливаюче посилання для тверджень і дій. Уникайте покладатися на порядок context.pages(). Контекст може вже містити вкладку сповіщень, попереднє вікно довідки або сторінки, створені програмою. Припущення останньої вкладки - це припущення, приховане в читабельному коді.
Розділіть навігацію та завершення роботи
Документ, який з'являється в іншому вікні, може бути лише одним із кроків у цьому шляху. Стаття підтримки має містити обіцяні вказівки. Сформований звіт має відповідати вибраному запису. Вікно підтвердження має відображати фактичну операцію. Подія нового вікна сама по собі не може підтвердити жодного з цих бізнес-результатів.
Під час розробки тесту використовуйте вигадані або затверджені записи постановки. Якщо спливаюче вікно відкриває службу третьої сторони, установіть межу дозволеного тестування, перш ніж діяти там. Зручне посилання браузера – це не дозвіл надсилати форму, витрачати гроші чи розкривати дані облікового запису іншому сайту.
Для робочих процесів, які завершуються у вихідному вікні, збережіть обидва посилання та назвіть їх. Перевірте наступний стан оригінальної сторінки після схваленої спливаючої дії. Не закрийте випадково батьківську сторінку, щоб спростити очищення. Тест повинен зберегти відносини, які переживає людина.
Вирішіть, як повідомляти про відсутність спливаючих вікон
Продукт може навмисно повторно використовувати ту саму вкладку на мобільному пристрої або в іншій конфігурації. Підтвердьте цю поведінку, перш ніж скрізь вимагати спливаюче вікно. Якщо специфікація обіцяє спливаюче вікно, але воно не з'являється, очікування обмеженої події має завершитися невдало з цією чіткою межею, а не зависати на невизначений час.
Не виправляйте помилку повторним натисканням. Повторні клацання можуть створити кілька вікон, коли оригінальний запит просто повільний. Перевірте, чи відбувся клацання, чи не заблокував браузер дію та чи змінила програма навігаційний дизайн. Правильне виправлення залежить від цих доказів.
Закрийте локальне спливаюче вікно, коли тест завершить його перевірку. Зберігайте необхідні докази відповідно до політики конфіденційності пакета. URL-адреси вікон, заголовки та знімки екрана можуть містити інформацію про особисті записи, тому чистий знімок екрана батьківського вікна не робить кожне вкладене спливаюче вікно безпечним для розповсюдження.
AnyTest описує дослідження програм і наскрізні тести, які перевіряють люди. Рецензент може запитати, на яке вікно насправді націлена згенерована подорож і як воно доводить цей зв'язок. Жодна конкретна реалізація спливаючих вікон у AnyTest не заявлена. Корисним результатом є чітка перевірка власника сторінки та призначення, а не більша колекція вкладок.
Загальні запитання
Чи має тест використовувати останню вкладку?
Не тоді, коли початкову дію можна прив'язати до спливаючої події. Збережіть повернуте посилання на сторінку.
Чи є спливаюча подія кінцевим результатом?
Ні. Перевірте призначення/вміст і бізнес-результат окремо.