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

Терміни, нюанси та джерела

Практика · 35:55

Red/green перевірка trace retention

Запустіть один green test і переконайтеся, що ZIP не створено.
Тимчасово зробіть його assertion неправильним і повторіть запуск.
Відкрийте єдиний ZIP через playwright show-trace, після чого поверніть тест у green state.
Green path не створює trace; failure path створює один читабельний artifact для потрібного test ID.

4. Повертаємо traces, pytest hooks, рефакторинг дублювань у fixtures →

Python мануфактура · Програма курсу · 15:15–21:55

Окремий ZIP на основі pytest `request`

Built-in fixture `request` надає `request.node.name`, тому trace можна назвати ім’ям конкретного тесту й зберігати в `test-results/traces/<test>.zip`. Це робить артефакт однозначним і придатним для CI. ZIP відкривається командою `playwright show-trace <path>`. На timeline видно переходи, clicks, fills, assertions, snapshots, network і Python sources, що дає більше діагностичної інформації, ніж відео самого браузера.

4. Повертаємо traces, pytest hooks, рефакторинг дублювань у fixtures →

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

Вкладені ZIP і macOS Archive Utility

Artifact може бути ZIP-архівом, усередині якого лежать окремі `trace.zip`. Archive Utility на macOS рекурсивно розпаковує вкладені архіви й змінює очікувану структуру, після чого Trace Viewer не розпізнає результат як trace. Надійніший шлях — розпакувати зовнішній artifact консольною командою `unzip` у визначену директорію та передати Trace Viewer внутрішній `trace.zip` без повторного пакування. Пробіли в шляху треба екранувати або передавати шлях одним quoted argument.

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

Python мануфактура · Програма курсу · 21:55–25:45

Чому зберігати лише failed traces

Trace для кожного успішного тесту швидко збільшує обсяг CI artifacts. Простий варіант «зберігати все» допустимий для малого набору з коротким retention, але кращий контракт — залишати ZIP лише коли тест упав. Артефакт має жити достатньо, щоб інженер устиг провести root-cause analysis. Retention і upload налаштовуються на рівні CI; сама fixture відповідає лише за локальне створення файлу.

4. Повертаємо traces, pytest hooks, рефакторинг дублювань у fixtures →

Python мануфактура · Програма курсу · 35:55–39:40

Мінімальна tracing fixture і перевірка green path

Tracing helpers приймають `page.context`, тому app fixture не мусить окремо повертати context. `start_tracing()` централізує options, а `stop_tracing_on_failure()` або записує ZIP, або зупиняє tracing без path. Після рефакторингу запускаються Free та Enterprise тести. Вони проходять, а папка traces залишається порожньою — це позитивна перевірка, що successful tests не створюють артефакт.

4. Повертаємо traces, pytest hooks, рефакторинг дублювань у fixtures →

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

Навмисний failure і перевірка Trace Viewer

Один locator навмисно змінюється на неправильний. Тест падає, з’являється ZIP із назвою тесту, а Trace Viewer показує останній успішний крок і assertion, який не знайшов очікуваний елемент. Після доказу failure path тимчасову помилку треба прибрати й повернути suite у green state. Завершена зміна комітиться в окремій гілці; у командній роботі вона проходить pull request, а не пряме злиття без review.

4. Повертаємо traces, pytest hooks, рефакторинг дублювань у fixtures →
Запитати в чаті про «zip» →