Відео визначає контракт `isLoaded`: метод має чекати не формального відкриття URL, а мінімального стану, в якому користувач і тест можуть надійно продовжувати роботу. До цього стану входять ключовий контент, зникнення blocking loader і готовність критичних інтерактивних елементів.
Примітка: конспект укладено за автоматичними українськими субтитрами; назви UI-станів і тестових термінів нормалізовано за контекстом відео.
Після цього уроку ви зможете
Визначити мінімальний business-ready стан сторінки для наступної дії.
Відрізнити Playwright actionability від предметної готовності page або component.
Використати web-first assertions для loader, skeleton і критичних controls.
Працювати з полями всередині iframe через frame-aware locator.
Учасник пропонує вважати сторінку завантаженою після появи важливих для бізнес-сценарію елементів і контенту, а не лише після формального відкриття. Він порівнює це з метрикою готовності сторінки та одразу ставить питання про межу такого контракту.
Основний trade-off — не додати в кожен перехід зайві очікування. Які саме сигнали належать до isLoaded, залежить від типу сторінки та наступної дії тесту.
Початковий end-to-end тест має бути стабільним. Лише після цього його можна декомпозувати або переносити частину перевірок на нижчі рівні заради швидкості.
isLoaded підтримує стабільність двома способами: фіксує видимий користувацький стан і рано зупиняє сценарій із зрозумілою помилкою, якщо сторінка не готова.
Уточнення
Не дублюй auto-waiting у isLoaded
Playwright уже чекає actionability для конкретної action. isLoaded має додавати лише business readiness, якої одна action не доводить: завершене завантаження списку, зникнення blocking loader або поява повного payment form.
Термін
actionability
Набір перевірок Playwright перед дією. Для click це, зокрема, unique match, visible, stable, receives events та enabled.
У динамічному UI HTML може вже існувати, але продукти, кошик або кнопка checkout ще не готові. Тест, який одразу клікає елемент, отримує flaky failure: дія сталася раніше, ніж сторінка могла її обробити.
Надійний readiness contract чекає, що blocking preloader зник, skeleton замінився реальним контентом, а ключовий елемент став видимим або доступним для дії.
Що змінилося після запису
load event не дорівнює business readiness
АктуальноПоточна документація Playwright прямо застерігає, що універсального стану «page loaded» немає: після browser load application може ще отримувати дані або завершувати hydration. Якщо видимий control не реагує, спочатку перевір hydration; product-side виправлення — тримати control disabled до готовності, а не додавати sleep у тест.
Термін
Locator
Повторно обчислюваний опис пошуку елемента; Playwright знаходить актуальний DOM element перед кожною дією й поєднує Locator з auto-waiting.
Практика
Діагностувати hydration під Slow 3G
Увімкни Slow 3G у DevTools, одразу взаємодій із видимим control і перевір, чи handler уже підключений. Якщо дія губиться, зафіксуй product-side умову готовності без sleep у тесті.
Проблему відтворено або виключено на сповільненій мережі.
Відокремлено browser load, видимість control і завершення hydration.
Запропоновано disabled state до готовності, якщо handler підключається пізніше.
Payment page часто збирається кількома асинхронними етапами: зникає загальний loader, з’являється billing address, потім завантажуються поля платіжного iframe. Формальна поява контейнера ще не означає, що користувач може вводити дані.
Тому isLoaded повинен чекати саме готових полів або іншого мінімального набору елементів, потрібних наступному кроку сценарію.
Термін
FrameLocator
Locator boundary для елементів усередині iframe; дозволяє далі використовувати role, label та інші locator strategies в потрібному frame.
Не потрібно перевіряти кожен кадр анімації. Достатньо спостережуваного переходу: loader зник, skeleton замінився карткою, назва продукту видима, критична дія доступна.
Уповільнення мережі в DevTools допомагає знайти реальні проміжні стани й вибрати правильний сигнал. Підсумкове правило: isLoaded описує те, що користувач очікує побачити перед продовженням роботи, і те, без чого тест не може виконувати наступну дію стабільно.
Термін
web-first assertion
Assertion, який автоматично повторює перевірку до очікуваного стану або timeout, наприклад to_be_visible чи to_be_enabled.