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

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

Що змінилося після запису · 0:00

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

Workflow у відео окремо налаштовує uv і Python.

Поточний setup-uv може встановити Python через uv, тому actions/setup-python не є обов’язковим. Окремий setup-python може залишатися виправданим через runner tool cache.

setup-uv v9.0.0 перевірено 2026-07-31; точну дату появи Python management у цьому brief не встановлено.

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

Практика · 0:00

Заміна UI setup на API precondition

Знайдіть одну OpenAPI operation за operationId.
Напишіть окремий API contract test для status і мінімальної response schema.
Передайте отриманий ID у page object і приберіть лише зайві UI setup-кроки.
API test окремо перевіряє контракт, а UI test починається з готового server-side state й перевіряє свій основний сценарій.

3. API preconditions →

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

`pytest_runtest_makereport` і фази виконання

Fixture не знає результат тесту напряму, тому `conftest.py` підключає hook `pytest_runtest_makereport`. Hook отримує звіт для кожної фази та записує його в атрибут node, наприклад `rep_setup`, `rep_call`, `rep_teardown`. Для assertion failure самого тесту перевіряється `request.node.rep_call.failed`. `setup` охоплює код до `yield`, `call` — тіло тесту, `teardown` — код після `yield`. Якщо потрібно зберігати trace також при fixture setup failure, це окреме розширення контракту; демонстрація фокусується на `call`.

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

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

Composite action і artifacts

Повторювані checkout, setup `uv`, setup Python та install dependencies винесено у локальний composite action. Input `install-playwright` вмикає браузерні залежності лише для jobs, яким вони потрібні. Це виправдане перевикористання, бо той самий setup уже виконується в smoke і regression jobs. Після тестів workflow завантажує HTML report і Playwright traces як artifacts. Для них задається retention, наприклад 14 днів: це тимчасові діагностичні результати, а не постійне сховище. HTML report зберігається завжди, traces — переважно після failure.

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

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

Коли прямий DB access справді прискорює тести

Створення або читання сутності через API проходить routing, application logic, database access і serialization, тому сотні setup-запитів накопичують час. Прямий запит до database інколи виконується за кілька мілісекунд і може бути корисним для підготовки або пошуку test data. У Java типовим низькорівневим контрактом є JDBC; у Python — драйвер конкретної СУБД, який зазвичай підтримує Python DB-API. Для підключення потрібні host/URL, database/schema, credentials і driver. Секрети не мають бути в коді, а тестовий користувач БД повинен мати мінімальні права. Прямий insert не завжди еквівалентний product operation: він може обійти validation, events, audit, caches та синхронізацію. Тому DB setup доречний лише для сутностей, де команда явно приймає такий контракт.

Автомтизація баз даних та що з тим робити та що знати →

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

Інкапсуляція та automation objects

Інкапсуляція ховає складну реалізацію за невеликою public operation. У тестовому проєкті це API clients, database helpers, Page Objects і data objects. Зовнішньому коду важливо знати, яку дію викликати, а не повторювати connection setup, headers, selectors або permission checks.

10 ооп →

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

Fixture scopes і задача параметризації

Pytest fixture може мати scope `session`, `package`, `module`, `class` або `function`. Чим ширший scope, тим рідше створюється ресурс: session fixture — один раз на весь test run, function fixture — окремо для кожного тесту. Код до `yield` виконує setup, а після `yield` — teardown відповідного scope. Ціль уроку — перетворити один негативний login test на параметризований. Тіло сценарію залишається одним, а різні пари email/password та читабельні case IDs передаються як дані.

2. Pytest fixtures, playwright fixture, прараметризація тестів →

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

Встановлення інструментів через пакетні менеджери

Автор радить не завантажувати Python та інші інструменти вручну з випадкових сторінок завантаження. На macOS для цього використовується Homebrew, а на Windows — Chocolatey або Windows Package Manager. Такий підхід спрощує подальші оновлення та контроль встановлених версій. Для macOS базова команда має вигляд: ```bash brew install python ``` Після виконання команди потрібно перевірити, що встановилась стабільна версія Python і що саме цей інтерпретатор використовуватиметься у проєкті.

1. Налаштування PyCharm, JetBrains Toolbox, створення проєкту та структура проектів →

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

Та сама підготовка потрібна в CI

У CI перед тестами теж потрібен крок встановлення браузерів. Підготовка runner має відтворювати локальні передумови явно; наявність залежності у `requirements.txt` не замінює цього кроку. Практично варто встановлювати лише ті браузери, які справді запускає pipeline. Це скорочує час і обсяг завантаження без нового шару конфігурації.

Навіщо встановлювати Playwright-браузери, як часто та чому треба оновлювати бібліотеки →

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

Codegen і trace як контрольована відправна точка

Практичний flow: людина вручну проходить сценарій через Playwright Codegen, передає згенерований код моделі, просить рознести його по наявних page objects, запускає тест і дає trace для наступного review. Генерація відбувається малими порціями, а людина контролює data setup, reuse та фактичний user journey. Для складного enterprise flow з inventory, credit limits, third-party integrations і stateful users автономний agent без domain context не буде надійним.

Playwright MCP, CLI, Codegen та AI в розробці →

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

`yield` і життєвий цикл context

Fixture створює context, завантажує готовий state або виконує login і записує його, після чого віддає page через `yield`. Код після `yield` є teardown і закриває page/context. Важливо повертати вже створену page, а не викликати `new_page()` ще раз. Так test actions, trace і cleanup належать одному browser context.

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

Python мануфактура · Сесії: AMA та PMP · 9:30–12:30

Lifecycle, declaration, initialization і live coding

Варто розуміти порядок, у якому test runner завантажує модулі, створює suite/test fixtures, запускає setup, test і teardown. Declaration задає ім'я та тип, assignment присвоює значення, а runtime initialization створює фактичний стан під час виконання програми. Точні терміни залежать від мови, але практичне питання однакове: коли ресурс уже існує й хто ним володіє. На співбесіді можуть попросити пояснити різницю між class та object, відрефакторити тест або написати надійний locator. Потрібно знати CSS/XPath настільки, щоб читати старий код, і віддавати перевагу user-facing locator API Playwright, коли семантична роль або label точніше виражає контракт.

Що має вміти та знати мідл автоматизатор →
Запитати в чаті про «setup» →