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 →

Приклад коду · 0:00

Fail-fast завантаження локальної конфігурації

Приклад завантажує сусідній .env, перевіряє всі обов’язкові keys і завершується з явною помилкою, якщо конфігурація неповна.

Для підготовленого .env друкується https://example.test; при відсутньому key виникає RuntimeError.

2.1. відео, енв файл →

Термін · 0:00

NICE Framework

NIST framework, що описує cybersecurity work через roles, competency areas, tasks, knowledge і skills; він допомагає зіставити learning path із цільовою роботою.

Перехід у пентестинг: що важливо →

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

`TemporaryDirectory` і `Path`

`with TemporaryDirectory() as tmp_dir` створює ізольовану directory та автоматично видаляє її після виходу з context manager. `Path(tmp_dir) / "test-result.txt"` будує platform-safe path. Тому файл доступний усередині блоку, але закономірно зникає після завершення операції.

7 робота з файлами →

Python мануфактура · Програма курсу · 6:00–7:22

Relative й absolute paths

Relative path залежить від current working directory, з якого запущено процес; absolute path починається від filesystem root або drive. Hardcoded local paths роблять тести непереносними між macOS, Linux, Windows і CI. Краще будувати шлях від стабільної project directory через `Path`.

7 робота з файлами →

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

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

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

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

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 мануфактура · Сесії: AMA та PMP · 0:00–2:32

Звідки брати назву Page Object

Першим джерелом назви сторінки є route: кореневий шлях підказує home page, а змістовний path — конкретний екран. Якщо це SPA або URL не змінюється, наступним джерелом стає видима назва сторінки: `h1`, `h2`, title чи інший семантичний заголовок. Коли framework генерує сторінку переважно з `div`, треба орієнтуватися на мову продукту та стабільні атрибути DOM. Мета — щоб назва в automation-коді відповідала тому, як екран уже називають користувачі й розробники.

Неймінг та структура automation-проєкту →

Python мануфактура · Сесії: AMA та PMP · 1:42–2:08

Спочатку робочий тест, потім пояснення механіки

Учасники спочатку вчаться складати й запускати тестовий сценарій. Після цього курс поступово пояснює, як працюють типи даних, операції зі строками, повторне використання коду та інші конструкції, які вже зустрілися в реальній роботі. Саме з цього підходу виникає питання: якщо класична піраміда тестування радить мати більше нижньорівневих тестів, чому курс починається з UI, а не з API.

Як проходити курс та його логіка →

Python мануфактура · Сесії: AMA та PMP · 2:24–4:54

Чому навчання починається з UI, а не з API

UI-тест на початку наочніший: відкрити сторінку, знайти елемент, натиснути й побачити результат. Такий сценарій дає швидший практичний зворотний зв’язок людині, яка ще не звикла до IDE, коду, бібліотек і діагностики помилок. Навчальний маршрут іде від сирого сценарію до повторно використовуваних функцій і патернів проєктування, а вже потім — до оптимізації через API. Так учасник розуміє, що саме він спрощує і чому нижчий рівень може бути швидшим та стабільнішим. Postman корисний для дослідження API, але в межах цієї дискусії не вважається повноцінною заміною кодової автоматизації: складніше структурувати великі набори тестів, повторно використовувати частини сценарію й контролювати архітектуру. Для системного навчання автор обирає код та IDE.

Піраміда тестування, чому не API спочатку та як жити з упровадженням ШІ →

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

OTP, rate limits і production smoke

Для OTP можна зарезервувати test identity і детермінований code; для rate limits — окреме правило для CI traffic. Автор допускає такий bypass навіть на production, хоча прямо зазначає, що цього бажано не робити. Редакційне security-застереження: на production безпечніше виконувати smoke через звичайний захист або спеціально спроєктований найменш привілейований test path. Будь-який production bypass header чи hardcoded OTP стає критичним секретом: його витік фактично вимикає захист, тому потрібні ротація, журналювання, вузький scope і окремий security review.

Антибот-захист у контрольованих автотестах →

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

Кілька середовищ і поступова еволюція конфігурації

Для dev, staging, UAT та інших середовищ можуть існувати окремі локальні файли, і кожен із них має бути проігнорований. Якщо файл випадково додали до індексу, простого нового правила в `.gitignore` недостатньо: треба забрати його зі staged/tracked стану й тільки тоді перевірити ignore. Середовище не завжди визначається окремим доменом. Маршрутизація може залежати від path, cookie, custom header або feature flag; у production подібний механізм використовується для canary release. У тестах ці параметри мають бути явною конфігурацією, а не розкиданими константами. Ланцюжок розвитку у відео: hardcode → `.env` → структурований config → централізований config server. Перехід потрібен лише тоді, коли попередній варіант уже створює вимірювану незручність або ризик.

Юзер менеджмент та костилі з якими ви стикнетесь в житті →

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

CVE, dependencies і patching

Відомі вразливості реєструються в загальнодоступних базах та ідентифікуються, зокрема, через CVE. Scanners зіставляють dependency versions із такими записами й повідомляють, що конкретна library або її transitive dependency потребує оновлення. Patching не завжди дорівнює зміні номера version. Якщо vulnerable API змінено або видалено, команді доводиться оновити dependency і переписати код, який спирався на небезпечну behavior. Security engineer має пояснити не лише «scanner червоний», а шлях експлуатації, реальний impact і безпечний upgrade path.

Перехід у пентестинг: що важливо →
Запитати в чаті про «Path» →