← Python мануфактура

Після цього уроку ви зможете

Завантаження trace artifact

Відкрити в YouTube ↗

Конспект і таймкоди

0:00

Завантаження trace artifact

Після падіння smoke job у її artifacts знаходиться архів із traces. Його завантажують і переносять у локальний проєкт або тимчасову директорію для аналізу. Trace відкривається командою playwright show-trace, яку можна викликати через інструмент керування Python-середовищем проєкту.

Увага

Trace artifact може містити secrets

Trace, logs і reports можуть містити credentials, tokens, test source або application source. Зберігайте їх лише в trusted artifact store або encryption-protected share; local show-trace є простішою межею для чутливих artifacts.

Термін

Playwright trace

Архів записаних browser actions і diagnostic data, який Trace Viewer показує як timeline, DOM snapshots, logs, network, source і metadata test run.

Термін

retain-on-failure

Playwright pytest tracing mode, який зберігає trace лише для failed tests; default tracing mode у plugin — off.

Приклад коду

Розпакування artifact і відкриття trace

unzip smoke-traces.zip -d smoke-traces
uv run playwright show-trace smoke-traces/test-results/example/trace.zip

Перший рядок розпаковує лише зовнішній artifact; другий передає внутрішній trace.zip Playwright CLI.

Очікуваний результат: Відкривається Trace Viewer для конкретного failed test.

Потрібно: unzip, uv, Playwright for Python

Практика

Відтворити failure-to-trace цикл

  1. Візьміть artifact із навмисно failed Playwright test.
  2. Розпакуйте лише зовнішній archive і знайдіть внутрішній trace.zip.
  3. За Trace Viewer назвіть першу дію, де actual state відрізняється від expected.
  4. Зробіть одну вузьку зміну й підтвердьте її повним smoke run.
1:30

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

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

Надійніший шлях — розпакувати зовнішній artifact консольною командою unzip у визначену директорію та передати Trace Viewer внутрішній trace.zip без повторного пакування. Пробіли в шляху треба екранувати або передавати шлях одним quoted argument.

Що змінилося після запису

Що змінилося після запису

У відеоУрок показує macOS-specific workaround, щоб не розпакувати внутрішній Playwright trace archive.

АктуальноPlaywright офіційно документує цілий trace.zip як input для playwright show-trace, але не документує поведінку macOS Archive Utility. macOS workaround залишається авторським evidence, а не універсальним platform rule.

Що змінилосяОфіційний contract перевірено 2026-07-31; дата macOS behavior не встановлена.

4:10

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

Trace показує реальну причину: на CI hover відбувся, але очікуваний UI state не став видимим так, як локально. Це звужує проблему з абстрактного «тест падає на CI» до конкретної взаємодії браузера й locator assertion.

У демонстрації перевірка адаптується для CI/headless режиму, а також розглядається примусова взаємодія. Такий workaround треба застосовувати лише після перегляду trace: інакше легко приховати реальний дефект сторінки або тесту.

6:10

Повторний pipeline run

Fix комітиться й повторно запускається в pull request. Linter і smoke можуть стартувати паралельно, щоб базова функціональна перевірка не чекала на завершення статичного аналізу; точна залежність між jobs визначається вимогами проєкту.

Після оновлення п’ять smoke tests проходять. Практичний цикл завершено повним ланцюжком: CI failure → artifact → локальний Trace Viewer → вузька зміна → повторний зелений smoke run.

Джерела та додаткові матеріали

  • Trace viewer ↗Microsoft Playwright

    Описує CLI та web способи відкриття trace, доступні panels і privacy model hosted viewer.

  • Pytest plugin reference ↗Microsoft Playwright

    Фіксує --tracing modes, включно з retain-on-failure, та default off.

  • Setting up CI ↗Microsoft Playwright

    Показує retain-on-failure artifact flow і попереджає про sensitive data у reports та traces.