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

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

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

Review AI-generated vertical slice

Візьміть один feature flow і перевірте його через frontend, API та persistence boundaries. Зафіксуйте contract для time fields, кількість backend/provider calls, authorization states і system-level regression risks.
Короткий risk-based review із конкретними evidence та переліком перевірок, яких бракує.

Vibe coding, склад команди та нова роль тестувальника →

Що змінилося після запису · 26:30

Дубльований `id` — невалідний HTML, а scope лише workaround

HTML Standard вимагає, щоб id був унікальним у межах element tree. Scope до desktop container може стабілізувати test, але root fix належить frontend markup.

3. Селектори та пошук елементів →

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

Власні test IDs і внесок у frontend

Глибокі XPath не дають переваги в Playwright: потрібні parent/child operations уже є в locator API, а важливішу бізнес-логіку часто краще перевіряти нижче за UI. Команда автоматизації має домовитися з frontend developers про підтримку test attributes і, за можливості, додавати їх через звичайний pull request. Для публічного production DOM слід окремо оцінити, чи не спрощують описові IDs scraping або розкриття внутрішньої структури.

Пріоритети селекторів та їхня надійність →

Java Light · 15:45–17:23

Protocols, API Gateway і Backend for Frontend

Окрім REST, системи використовують WebSocket, gRPC і GraphQL. Протокол обирається під задачу, тому перед автоматизацією потрібно зрозуміти не лише endpoint, а й модель комунікації. Backend for Frontend — це gateway з контрактом, зручним для конкретного client: web frontend, mobile application або окремого screen. Зовні він відкриває потрібні resources, а всередині може агрегувати кілька services з їхніми базами і queues.

Вступ до API-автоматизації →

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

ORM trade-offs і вибір першого automation seam

ORM є компромісом: прискорює типову розробку, але може генерувати неефективні queries або приховувати N+1, зайві joins і transaction behavior. Повертатися до ручного SQL слід за профілем і вимірюванням, а не через загальну недовіру до abstraction. У бажаній архітектурі backend виконує бізнес-перетворення, а frontend переважно відображає готовий contract. Якщо значна logic усе ж живе на frontend, це підсилює цінність UI/component automation. Коли продукт створюється з нуля й UI ще немає, логічно почати з API. Для наявного продукту без automation перший seam вибирають за ризиком і вартістю ручної регресії, а не за універсальним правилом «завжди UI» або «завжди backend».

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

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

Як reCAPTCHA приймає рішення

Frontend збирає поведінкові signals і отримує token; backend передає token провайдеру та порівнює отриманий score з власним threshold. Автотест виглядає як бот і часто отримує низький score. Для test environment використовують офіційний test key або узгоджений mode, у якому frontend не показує challenge, а backend не викликає production verification. Так тест перевіряє application flow, не підмінюючи окрему перевірку реальної CAPTCHA integration.

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

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

Business example не замінює engineering task

Після узгодження behavior загальний scenario треба декомпозувати. Frontend task описує component, validation і UI states; backend task — endpoint, contract і business rule; test task — ризики й потрібне coverage. Для інженера прямий технічний опис часто коротший і точніший за повторення кожної умови через `Given/When/Then`. Проблема починається, коли один формат примусово використовують для всіх ролей. Business не має керувати деталями automation code, а automation engineer не повинен перекладати вже зрозумілий technical contract у довший Gherkin лише для формальної відповідності процесу.

Чому критикують BDD і Cucumber →

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

Один product engineer може закрити широкий vertical slice

[Дивитися з 08:00](https://www.youtube.com/watch?v=jAl2Qf8Zlyg&t=480s). Досвідчений engineer із точним plan може реалізувати frontend, backend і частину deployment pipeline, використовуючи готову design system та API contract. Frontend має знати, який resource і endpoint запросити; backend — який response повернути; shared components і design tokens дають повторюваний UI. AI допомагає заповнити реалізацію, але не визначає самостійно правильні boundaries і product behavior.

Vibe coding, склад команди та нова роль тестувальника →

Python мануфактура · Програма курсу · 10:03–12:20

Контрольовані `data-testid` та інші атрибути

Найстабільніший для команди варіант — атрибут, значення якого тестувальники та розробники свідомо контролюють, наприклад `data-testid`. Його можна додати у frontend-компонент і зберігати як частину контракту тестованості. Так само можуть використовуватися стабільні `id`, `name`, `aria-label` чи інші атрибути. Головний критерій автора — не назва механізму сама по собі, а можливість команди контролювати його та домовитися, коли він змінюється.

3. Селектори та пошук елементів →

Java: архівні доповнення · 2:20–4:45

`id`, attributes і частковий збіг

`#search` знаходить елемент з `id="search"`. Довільний attribute записується у квадратних дужках: `[name='viewport']`. Коли значення має стабільну частину та змінний hash, оператор `*=` дає пошук за підрядком. Це корисно для generated attributes у frontend frameworks, але стабільна частина має бути досить специфічною, щоб не отримати кілька збігів.

CSS і XPath: пошук елементів →

Java Light · 2:28–4:00

Ланцюжки сервісів і технічний борг

Один і той самий service може бути producer для одного виклику і consumer для іншого. Тому response, яку отримує frontend, може залежати від кількох внутрішніх викликів. Чиста теоретична модель не завжди збігається з production: дедлайни змушують команду накопичувати technical debt і порушувати ідеальні межі. Тестувальник має досліджувати фактичні зв’язки, а не покладатися лише на назви сервісів.

Вступ до API-автоматизації →

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

Accessibility tree, локалізація і стабільність атрибутів

Chrome DevTools дозволяє подивитися accessibility tree й accessible name, навіть якщо значення неочевидне з HTML. Текстові locators зручні, доки labels, placeholders і переклади стабільні. Для багатомовного продукту або content, який окремо змінює контент-команда, стабільний `data-testid` часто кращий. Атрибути можуть рендеритися по-різному залежно від frontend framework, а generated classes та IDs змінюватися між builds, тому вибір залежить від реального контракту команди.

Пріоритети селекторів та їхня надійність →
Запитати в чаті про «frontend» →