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

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

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

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

Урок описує 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.

4. Allure репорт, основи та інтеграція в CI →

Практика · 7:25

Migration mapping checklist

Оберіть одну DTO з проєкту.
Для кожного field зафіксуйте source entity/service, mapping rule, nullability, required status, serializer behavior і regression test.
Додайте один gateway header, який має пройти до внутрішнього service.
Mapping table і один перевірений routing contract.

Міграція бази даних і тестування даних →

Java API-автоматизація · 0:00–5:00

Починати з product pain, а не з tool

Перше питання — що саме болить: release speed, regressions, platform drift, backend instability, device coverage чи migration. Далі з’ясовують product architecture, team ownership, roadmap і engineering maturity. Інструмент обирається після цього. Наприклад, планована migration з native на cross-platform або навпаки змінює test seams і робить speculative framework марним.

Стратегія тестування мультиплатформних систем →

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

Стратегія поступової міграції legacy-тестів

Повне одночасне переписування Selenium-проєкту на Playwright створює надто великий ризик. Практичний порядок інший: спочатку переносити тести, які вже падають або є flaky, потім — короткі ізольовані сценарії, а далі рухатися функціональними зрізами. Старі й нові інструменти можуть тимчасово співіснувати в одному репозиторії. Окремі pytest suites і CI-команди дозволяють запускати Selenium та Playwright незалежно, тому міграцію можна виконувати без зупинки розвитку наявного набору тестів.

1. Фіксаємо назви файлів, рефакторинг та оптимізація під Python, підключаємо Ruff та uv →

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

Поступове впровадження нового інструмента

Переписувати весь test suite з нуля зазвичай не потрібно. Коли старий тест зламався або нову задачу значно легше реалізувати новим засобом, її можна зробити на uv чи Playwright і залишити робочі старі тести на pip або Selenium. В одному репозиторії тимчасово можуть співіснувати: - pip і uv; - Maven і Gradle; - Selenium і Playwright; - pytest та інший test runner; - JUnit і TestNG. CI просто виконує окремі команди для відповідних наборів. Основний ризик — не саме співіснування, а конфлікти спільних транзитивних залежностей і додаткова вартість підтримки двох стеків. Найбезпечніший аргумент для міграції — конкретна користь на конкретному сценарії: швидше встановлення, простіша діагностика, потрібне мокання network або стабільніша робота з браузером. Після доказу підхід можна розширювати.

Як працює проєктний білдер, ізоляція залежностей і впровадження нових інструментів →

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

Яку мову вивчати і навіщо знати кілька

Розповсюдженість мови залежить від ринку, країни й конкретного моменту. Замість абстрактного рейтингу радиться дивитися на актуальні вакансії та стеки продуктів, у яких хочеться працювати. Друга мова корисна під час migration з одного stack на інший: generated translation code все одно треба перевірити на language-specific idioms, concurrency model і зайві конструкції. Для staff/principal/SDET ролей кілька мов дають змогу працювати не лише із зовнішніми tests, а й додавати coverage та testability у frontend і backend repositories.

Який рівень програмування потрібен automation engineer →

Python мануфактура · Сесії: AMA та PMP · 10:37–13:14

Маленькі оновлення дешевші за великий стрибок

Регулярне підняття версій змушує поступово прибирати застарілі конструкції. Якщо пропустити десятки релізів, міграція може вимагати не лише заміни імпорту, а й переписування locator, assertion або іншого API по всьому проєкту. Рекомендація відео — читати release notes і переходити малими кроками. Так легше побачити, яка саме версія змінила API, і планомірно адаптувати код, поки різниця не перетворилася на велику міграцію.

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

Python мануфактура · Сесії: AMA та PMP · 11:41–15:35

Міграція моноліту в мікросервіси

Під час декомпозиції логіку, яка раніше жила в одному або кількох класах, переносять у різні services. Треба не лише перенести записи, а й зберегти правила зіставлення полів та джерела кожного значення. Показано типовий регресійний ланцюжок: `fullName` випадково мапиться лише з `lastName`; локальний fix додає `name`, але дані все одно не оновлюються, бо справжнім джерелом був інший service. Так само похідний `status` може формуватися з timestamps лише на одному code path і залишитися `null` під час читання.

Міграція бази даних і тестування даних →

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

Великі зміни через план-файл і короткі сесії

Для великої міграції план доцільно зберегти в окремому Markdown-файлі й виконувати по одному пункту в нових сесіях. Це зменшує ризик, що модель втратить початкові обмеження у довгому контексті або спробує змінити забагато файлів за один раз. Стабільні правила проєкту — структура, команди, naming, бібліотеки та перевірки — корисно тримати у спільному інструкційному файлі на кшталт `AGENTS.md`. Тимчасовий migration plan можна не комітити, якщо він потрібен лише для локальної роботи.

1. Фіксаємо назви файлів, рефакторинг та оптимізація під Python, підключаємо Ruff та uv →

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

Application object і поступова міграція

`send_keys()` використовується не лише для тексту: file input можна передати шлях до локального файлу, після чого браузер виконає upload. У такому спеціальному сценарії взаємодія з невидимим input може бути виправдана, тому generic helper не повинен безумовно вимагати visibility для кожної операції. Application object може один раз ініціалізувати всі Page Objects і дати тестам єдину точку доступу. Це прибирає повторну ініціалізацію з кожного тесту; обсяг статичних селекторів у пам’яті тут не є практичною проблемою. Той самий контейнер дозволяє поступово переводити Python-suite із Selenium на Playwright: старі Page Objects продовжують працювати, нові сценарії отримують Playwright implementation. Переписувати весь набір одразу не потрібно, особливо коли корисні API/database fixtures уже живуть у цьому pytest-проєкті.

2. Selenium організація PageObject's та Очікувань →

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

Перевикористання fixtures в інших тестах

Після прискорення login cases нові fixtures пробують застосувати до решти suite. Для сценаріїв, яким уже потрібен авторизований користувач, planned fixture має один раз виконати login і віддати готову page. Для негативного login test, навпаки, потрібна неавторизована shared page. Автоматичний рефакторинг змінює більше тестів, ніж очікувалося, і частково плутає їх передумови. Це демонструє практичне правило: fixture називається за гарантованим станом (`anonymous_page`, `authenticated_page`), а migration робиться по одному behavior з повторним запуском, а не одним глобальним LLM-edit.

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

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

Routing-регресії та роль API tests

Під час міграції можна правильно перенести service, але помилитися в gateway route: не прокинути authorization header, body або інший обов’язковий параметр. Клієнт передасть credentials, gateway прийме request, а внутрішній service поверне `401`, бо потрібний header загубився між ними. API tests швидко виявляють такі дефекти mapping, schema й routing без довгого пошуку причини через UI. Практична стратегія сесії: окремо перевіряти контракт ресурсу, окремо — ключові business flows, а під час database чи infrastructure migration запускати обидва набори як regression coverage.

Міграція бази даних і тестування даних →
Запитати в чаті про «migration» →