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

Python мануфактура · Програма курсу · 3:45–10:45

Стабільні перевірки тарифу й перемикання проєкту

Tooltip із назвою тарифу з’являється після hover, тому тест спочатку знаходить стабільний label, виконує hover і лише потім перевіряє текст підписки. DOM/attribute breakpoints допомагають зрозуміти, який компонент створює анімацію. Повторювані елементи Enterprise і Free додаються в page object, а тест перевіряє стан до та після `select_company`. Це формує observable contract, на який можна спертися під час оптимізації авторизації.

2.1. Storage state: практична реалізація, фікстури для ролей →

Python мануфактура · Програма курсу · 4:10–6:10

Діагностика hover-різниці на CI

Trace показує реальну причину: на CI hover відбувся, але очікуваний UI state не став видимим так, як локально. Це звужує проблему з абстрактного «тест падає на CI» до конкретної взаємодії браузера й locator assertion. У демонстрації перевірка адаптується для CI/headless режиму, а також розглядається примусова взаємодія. Такий workaround треба застосовувати лише після перегляду trace: інакше легко приховати реальний дефект сторінки або тесту.

3. Фікс трейсів на СІ →

Python мануфактура · Програма курсу · 28:00–35:30

Trace Viewer і мінімальний smoke gate

Завантажений trace відкривається через Playwright Trace Viewer. Демонстрація виявляє, що hover-стан поводиться інакше на headless CI runner, а сторінка може зберігати неочікуваний authorization state. Тимчасовий fix перевіряється повним smoke-командним запуском, але нез’ясована причина shared state прямо залишається окремою проблемою, а не оголошується остаточно виправленою. Smoke suite має падати рано й зупиняти беззмістовний regression run, якщо застосунок не завантажився або критичний flow зламаний. Якщо smoke зелений, а regression масово червоний, критерії smoke треба переглянути.

2. Практика та написання пайплану CI/CD →

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 початок, основи, фікстури →
Запитати в чаті про «hover» →