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

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

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

0:00

Коли потрібен Allure і з чого він складається

Повноцінний reporting — це додаткова система, яку доведеться оновлювати й підтримувати. Якщо команді достатньо logs, screenshots, traces і простого HTML report, не варто автоматично додавати Allure лише через популярність. Він доречний, коли потрібні історія, структуровані steps, attachments і спільна точка перегляду результатів.

Екосистема має три практичні шари: Allure CLI генерує report; language binding формує сумісні result files; framework adapter на кшталт allure-pytest підключається до конкретного test runner. У відео також прямо згадано ризик telemetry та походження продукту: перед adoption треба перевірити актуальну політику даних і вимкнути необов’язкову аналітику відповідно до правил організації.

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

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

У відеоУрок описує Java-based Allure CLI flow, характерний для Allure 2.

АктуальноСтаном на 2026-07-31 існує Allure 3, який встановлюється через npm і потребує Node.js. Migration guide заявляє сумісність з official framework integrations, але перехід генератора є окремим migration decision.

Що змінилосяAllure 3 migration documentation перевірено 2026-07-31.

Термін

Allure CLI

Command-line interface, який обробляє Allure Results і генерує або відкриває report, зокрема через allure generate та allure serve.

5:30

Встановлення й pipeline artifacts

CLI встановлюється як системний інструмент, а allure-pytest додається до Python dependencies. Pytest налаштовується зберігати машинні результати в allure-results; цю директорію не комітять.

Smoke і regression jobs завантажують свої allure-results як artifacts. Publish job завантажує їх, встановлює сумісну версію Allure CLI та виконує allure generate. Старі Playwright HTML artifacts можна прибрати, якщо Allure справді стає єдиним report і не втрачає потрібної діагностики.

Версії CLI, Python binding і pytest adapter мають залишатися сумісними. Їх не слід незалежно оновлювати без pipeline verification, бо format results і генератор розвиваються окремо.

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

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

У відеоУрок радить узгоджувати версії Allure CLI та Python integration.

Актуальноallure-pytest package metadata pin-ить ту саму версію allure-python-commons і вимагає pytest>=4.5.0, але не оголошує dependency або version matrix для Allure CLI. Сумісність генератора й adapter треба доводити pipeline run.

Що змінилосяPackage metadata commit d420cff86a6bb4a9b42cd16164cd5828b84a24ef перевірено 2026-07-31.

Увага

Не змішуйте results різних запусків випадково

allure-results за default може зберігати existing files. Якщо run не повинен агрегувати попередню історію, очистьте directory або використайте --clean-alluredir.

Термін

Allure Results

Machine-readable files, які test framework adapter записує під час run; Allure Report читає їх для генерації HTML report.

Приклад коду

Мінімальний Allure step і attachment

import allure

@allure.step("Open login page")
def open_login(page) -> None:
    page.goto("https://example.test/login")

def attach_screenshot(page) -> None:
    allure.attach(
        page.screenshot(),
        name="failure",
        attachment_type=allure.attachment_type.PNG,
    )

Показує окремий business-readable step і binary screenshot attachment без додаткової wrapper abstraction.

Очікуваний результат: Після запуску pytest з --alluredir report містить step Open login page і PNG attachment, якщо attach_screenshot викликано.

Потрібно: allure-pytest, Playwright for Python

Практика

Підтвердити reporting flow

  1. Додайте один allure.step до публічної Page Object action.
  2. Згенеруйте allure-results для одного green і одного failed test.
  3. Додайте screenshot та окремий Playwright trace artifact для failure.
  4. Згенеруйте static report і окремо відкрийте published URL.
  5. Зафіксуйте, чи доступний trace end to end; не прибирайте fallback без цього доказу.
10:30

Screenshots, traces та Allure steps

При failure fixture може додати screenshot і trace до результату через Allure attachments із відповідним content type. Screenshot після завершення тесту інколи фіксує стан запізно, тому Playwright trace залишається ціннішим джерелом послідовності дій.

Публічні дії Page Object позначаються @allure.step, щоб report показував бізнес-зрозумілі кроки, а не лише назву тесту. Приватні helpers, constructors і прості properties не потребують окремих steps: вони створять шум без корисного контексту.

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

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

У відеоУ Python experiment інтерактивний Playwright trace attachment у generated report не запрацював; окремий trace artifact залишився fallback.

АктуальноAllure renderer документує media type application/vnd.allure.playwright-trace і різну поведінку viewer в Allure 2/3. Automatic trace detection офіційно описане для JS/TS allure-playwright, не для ланцюжка pytest-playwright → allure-pytest.

Що змінилосяДокументацію перевірено 2026-07-31; дата появи media type не встановлена.

Термін

Allure step

Іменована операція всередині test case, яку integration adapter додає до result model, щоб report показував послідовність дій і їхній status.

Термін

Attachment

Файл або byte content, доданий до test result із media type; report може показати його inline або як файл для завантаження.

14:00

Масове додавання decorators і перевірка diff

Для наявного набору Page Objects decorators додаються через project-wide search/replace. Демонстрація показує ризик такого скорочення: regex зачіпає __init__, properties та неправильні відступи, після чого зміни доводиться вручну чистити й додавати imports.

Після механічної зміни запускаються format check і Ruff. Це обов’язкова межа безпеки для bulk edit: результат пошуку не вважається правильним, доки diff не переглянуто, код не форматується й статичні checks не проходять.

20:30

Генерація і публікація Allure report

Pipeline успішно збирає smoke results, генерує Allure static site і публікує його через GitHub Pages. Початкове посилання повертає 404 через неправильний path; після переходу до фактичного deployment path report відкривається й показує tests та додані steps.

Це корисне нагадування: зелена publish job доводить, що deployment завершився, але не доводить, що користувацький URL правильний. Посилання на report треба відкрити окремою перевіркою.

23:30

Експеримент із Playwright trace attachment

Навмисно створюється failure, щоб перевірити новий content type для Playwright trace в Allure. У цьому Python setup очікуваний інтерактивний trace у report не з’являється. Автор не видає припущення за успіх і залишає робочий fallback: зберігати traces окремим artifact та відкривати їх через Playwright Trace Viewer.

Таким чином Allure покращує навігацію по tests і steps, але не замінює перевірену trace-діагностику, доки конкретна інтеграція не підтверджена end to end.

Увага

Не прибирайте trace fallback завчасно

У демонстрації Allure report не показав очікуваний інтерактивний Playwright trace. Зберігайте окремий trace artifact, доки конкретна інтеграція не пройшла end-to-end verification у вашому стеку.

26:30

Валідація workflow й підсумок

Спроба вивести URL через run у неправильному місці YAML ламає workflow schema, і GitHub відхиляє конфігурацію ще до тестів. Команду переносять усередину валідного step. IDE plugin і GitHub validation допомагають ловити такі структурні помилки до або одразу після push.

Фінальний мінімальний ланцюжок: pytest створює allure-results, test jobs передають їх як artifacts, publish job генерує site, GitHub Pages розміщує report, а Playwright traces поки зберігаються окремо як надійний diagnostic artifact.

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

  • Allure Report Docs — Pytest ↗Allure Report

    Описує installation, --alluredir, decorators, steps і pytest integration.

  • Allure Pytest reference ↗Allure Report

    Фіксує API steps, attachments, media types і pytest-specific metadata.

  • Migrate to Allure 3 ↗Allure Report

    Відокремлює Allure 3 Node.js runtime і migration від Allure 2-style CLI flow у відео.

  • Attachments ↗Allure Report

    Фіксує API та media types для screenshots і інших diagnostic files.