Python мануфактураJavaDesign Patterns для автоматизаторів

Python мануфактура · Програма курсу · 18:00–26:00

Launch options і context options

Playwright дозволяє передати частину параметрів через CLI, але для керованої конфігурації у відео перевизначаються pytest fixtures `browser_type_launch_args` і `browser_context_args`. Перша група відповідає за запуск браузера: `headless`, `slow_mo`, launch timeout і browser channel. Друга — за ізольований browser context: viewport, locale, timezone, permissions, HTTPS errors, headers, base URL та запис відео. Viewport варто обирати з підтримуваних продуктом меж. Мінімальний підтримуваний розмір часто краще виявляє перекриття й недоступні елементи, ніж великий екран розробника. При цьому viewport — це область сторінки всередині браузера, а не повний розмір системного вікна. `slow_mo` корисний для демонстрації або візуальної діагностики, але не є способом синхронізації й не повинен маскувати flaky tests. Надійний тест очікує конкретний стан через locator assertions або іншу умову, а не покладається на постійну затримку між діями.

1. Налаштування Playwright та Pytest, простий репортінг →

Python мануфактура · Програма курсу · 40:00–44:50

Стабілізація сценарію та практичне завдання

Явні умови застосовуються до success message після логіну та до заголовка проєкту після навігації. Тепер падіння точніше описує проблему: не «клік не спрацював», а очікуваний елемент не став видимим за відведений час. Для відтворюваного layout driver може максимізувати вікно або встановити фіксований розмір через `set_window_size()`. Локальний курсор також варто прибирати з області браузера: hover-стани, підказки та підсвічування можуть змінити DOM або перекрити ціль. У CI цей фактор зазвичай відсутній, але viewport усе одно треба задавати явно. Практика після уроку: повторити простий Selenium-тест від fixture до входу й пошуку, а потім замінити одноразові `is_displayed()` у точках переходу на explicit waits із locator-based conditions.

1. Selenium початок, основи, фікстури →

Java: архівні доповнення · 2:20–4:45

`id`, attributes і частковий збіг

`#search` знаходить елемент з `id="search"`. Довільний attribute записується у квадратних дужках: `[name='viewport']`. Коли значення має стабільну частину та змінний hash, оператор `*=` дає пошук за підрядком. Це корисно для generated attributes у frontend frameworks, але стабільна частина має бути досить специфічною, щоб не отримати кілька збігів.

CSS і XPath: пошук елементів →

Python мануфактура · Сесії: AMA та PMP · 14:20–20:00

Actionability і правильна область кліку

[Дивитися з 14:20](https://www.youtube.com/watch?v=6QdvE9DHOIY&t=860s). Перед дією Playwright перевіряє її передумови. Для `locator.click()` це, зокрема, strict resolution до одного елемента, visibility, stability, здатність отримувати pointer events і enabled state. Якщо умови не виконуються до завершення timeout, action завершується помилкою замість випадкового кліку. Візуальний текст усередині button не завжди є правильним click target: event listener може бути на батьківському element, а вкладений `span` — лише оформленням. Через це семантичний locator на кшталт `getByRole('button', { name: ... })` часто стабільніший за пошук найглибшого text node. Велика активна область також краща для користувача й доступності. Вибір між `click()` і touch-oriented `tap()` має залежати від реального input mode та context configuration, а не лише від розміру viewport.

Як Playwright взаємодіє з браузером через протокол →

Python мануфактура · Програма курсу · 48:00–52:54

Аналіз помилок через LLM і практичне завдання

Failed output можна передати LLM у контексті проєкту, щоб скоротити час на читання великого traceback або логів. Найкраще це працює в IDE-інструменті, який бачить код і пов'язані файли. Водночас демонстрація показує межу підходу: модель може змінити порядок дій або запропонувати неправильний fix, тому її diff і повторний запуск тесту завжди треба перевіряти. Практика після уроку — перенести параметри браузера й context у fixtures, спробувати headless/headed режими, viewport, timeout і `slow_mo`, навмисно зламати тест та пройти повний цикл діагностики через HTML report, trace і debugger.

1. Налаштування Playwright та Pytest, простий репортінг →
Запитати в чаті про «viewport» →