Playwright Inspector
GUI для покрокового виконання тесту, редагування locator і перегляду actionability logs; page.pause() зупиняє тест у потрібній точці під час запуску в debug mode.
Відеобібліотека
Пошук у нотатках курсу Python мануфактура та спільних матеріалах з переходом на потрібну секунду.
GUI для покрокового виконання тесту, редагування locator і перегляду actionability logs; page.pause() зупиняє тест у потрібній точці під час запуску в debug mode.
Створіть auth state локально й переконайтеся, що файл заігнорований Git.
Додайте feature cookie через context.
Поставте page.pause() і перевірте cookie в DevTools Application перед assertion.
Тест повторно використовує login, cookie видно на правильному origin, state-файл не відстежується Git.
`page.pause()` зупиняє виконання й відкриває Playwright Inspector. У ньому можна покроково продовжувати тест, підсвічувати елементи, досліджувати locators і записувати дії. У відео для швидкої вставки pause створюється IDE Live Template. Альтернатива — звичайний breakpoint і Debug у PyCharm. `Step over`, `Step into My Code` і `Step out` дають контроль над Python-викликами, а Evaluate Expression дозволяє перевіряти locator або інший вираз у поточному стані. Playwright Inspector зручніший для браузерної частини, debugger IDE — для Python state; обирати варто за місцем проблеми.
`page.pause()` зупиняє тест і відкриває Playwright Inspector. Це дає змогу подивитися поточний DOM, перевірити locator та виконувати кроки по одному, не покладаючись лише на звичайний debugger IDE. Для короткоживучого статусу на кшталт `Saving`/`Saved` треба поставити паузу одразу після дії, яка його породжує. Якщо елемент зникає надто швидко, DevTools Sources може призупинити JavaScript через `F8`.
Для частих операцій створюються малі шаблони, кожен з яких прибирає конкретний повторюваний фрагмент: - `page.pause()` для зупинки тесту й дослідження стану; - заготовка методу Page Object із параметром і локатором; - `self.page.get_by_role(...)` з курсором на ролі та подальших аргументах; - виклик потрібного локатора з `.click()`; - очікування `expect(button).to_be_hidden()` після відправлення форми. Шаблон `get_by_role` дає виграш не кількістю згенерованого коду, а тим, що не треба щоразу набирати `self.page`, назву методу й дужки. Після розгортання залишається вибрати роль, наприклад `button`, і вказати доступне ім’я. Також показано запуск поточного тесту зі скорочення та переміщення цілого statement вгору або вниз (`⌘⇧↑` / `⌘⇧↓` у демонстрації). Якщо комбінації в локальному keymap інші, дію слід знайти за назвами `Move Statement Up` і `Move Statement Down`. Після кліку тест очікує зникнення кнопки. Це робить перехід до наступної сторінки явним: подальші дії починаються лише після підтвердженої зміни стану.
Після успішного запуску тест перейменовується відповідно до перевірюваної поведінки. Для ще одного повторюваного фрагмента створюється простий live template, який розгортається в `return self`. Це підтримує ланцюжкові виклики Page Object без повторного ручного набору. Плагіни не є основою цього процесу. У викладача встановлений Junie, але частіше для окремих задач використовується Claude Code. Головний приріст швидкості в уроці дають штатні засоби PyCharm: пошук у Settings, keymap, рефакторинги та шаблони. Параметри сторонніх плагінів варто змінювати лише під реальну потребу. Підсумкова модель трьох механізмів: - **postfix template** застосовується після виразу через крапку та обгортає або перетворює цей вираз; - **live template** розгортає за абревіатурою блок коду в позиції курсора; - **file template** створює новий файл із готовою структурою. На практиці postfix зручний для `locator` або `expect`, live template — для `page.pause()`, `get_by_role()` і повторюваних методів, а file template — для Page Object. Ці механізми доповнюють один одного й не потребують зовнішнього генератора.