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

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

Приклад коду · 3:30

User-facing locator у незалежному Playwright test

Playwright Test надає isolated page, а locators виражають user-facing contract через label, role і accessible name.

Test проходить лише проти application, що має наведений login contract.

Що має вміти та знати мідл автоматизатор →

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

RFC 9557 оновив timestamp contract

У відео timestamp, local date і timezone наведено як приклад неоднозначного API/data contract.

RFC 9557, опублікований 2024 року, оновлює RFC 3339 для additional timezone/context information та семантики unknown local offset. Базова вимога явного offset для Internet timestamp лишається чинною.

2024

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

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

Спроєктувати safe test contract

Відокремити application-flow, provider-integration і production-smoke tests.
Обрати official test key або non-production test mode.
Описати scope, secret storage, allowlist, rotation, logging і expiry.
Додати negative test, який підтверджує, що звичайний traffic не отримує bypass.
Threat-reviewed contract не містить hardcoded production bypass і має окрему перевірку provider integration.

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

Термін · 0:00

actionability

Набір перевірок, які Playwright виконує перед locator action. Для click офіційний contract включає один match, visible, stable, receives events та enabled; timeout завершується TimeoutError.

3. Selenium vs Playwright - яка різниця →

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

Гіпотеза про бізнес-важливі елементи

Учасник пропонує вважати сторінку завантаженою після появи важливих для бізнес-сценарію елементів і контенту, а не лише після формального відкриття. Він порівнює це з метрикою готовності сторінки та одразу ставить питання про межу такого контракту. Основний trade-off — не додати в кожен перехід зайві очікування. Які саме сигнали належать до `isLoaded`, залежить від типу сторінки та наступної дії тесту.

Що має описувати isLoaded →

Java Light · 0:00–2:28

Consumer, producer і REST resources

Звична client–server model узагальнюється термінами consumer і producer. Consumer споживає дані або можливість, producer їх надає. Така мова працює не лише для browser і web server, а й для взаємодії між сервісами. Комунікація має protocol і contract. API-документації може не бути, вона може бути написаною вручну і застарілою або code-generated з анотацій у коді. У REST сутності представлені resources, а операції над ними — endpoints з HTTP-методами `GET`, `POST`, `PUT`, `DELETE`.

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

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

Динамічний контент і blocking loader

У динамічному UI HTML може вже існувати, але продукти, кошик або кнопка checkout ще не готові. Тест, який одразу клікає елемент, отримує flaky failure: дія сталася раніше, ніж сторінка могла її обробити. Надійний readiness contract чекає, що blocking preloader зник, skeleton замінився реальним контентом, а ключовий елемент став видимим або доступним для дії.

Що має описувати isLoaded →

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

Стабільні перевірки тарифу й перемикання проєкту

Tooltip із назвою тарифу з’являється після hover, тому тест спочатку знаходить стабільний label, виконує hover і лише потім перевіряє текст підписки. DOM/attribute breakpoints допомагають зрозуміти, який компонент створює анімацію. Повторювані елементи Enterprise і Free додаються в page object, а тест перевіряє стан до та після `select_company`. Це формує observable contract, на який можна спертися під час оптимізації авторизації.

2.1. Storage state: практична реалізація, фікстури для ролей →

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

Ланцюг gateway, сервісів і invite token

[Дивитися з 06:10](https://www.youtube.com/watch?v=GwmAB4IvQUk&t=370s). У реальній архітектурі browser звертається до API gateway, той перевіряє authentication та authorization, передає запит backend-сервісу, а backend отримує шаблон або ініціює відправлення через інший сервіс. Invite token має бути згенерований правильним компонентом, переданий без зміни й мати визначений TTL. Якщо контракт нечіткий, один сервіс може додати зайвий або захардкоджений token, після чого формально валідний request завершується невалідним invite. Перевірка лише зовнішньої специфікації endpoint не знаходить помилку в розподілі відповідальності між сервісами.

Прихована складність бекенд-тестування →

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

PM-оркестрація та паралельні потоки

[Дивитися з 07:10](https://www.youtube.com/watch?v=crzGm6nzfbU&t=430s). PM знає ролі інших агентів, читає статус реалізації, делегує роботу й підсумовує результати в головний потік. Після погодження architecture та API contract frontend, backend і test analysis можуть працювати паралельно, але кожен у власному контексті й за власними правилами. Демонстрація показує, що така оркестрація не приховує окремі запуски: користувач може перемикатися між агентами, бачити їхні задачі й контролювати, хто саме зараз працює.

Як налаштувати мультиагентне середовище →

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

Коли UI-фрагмент стає окремим компонентом

Popup, який використовується на кількох сторінках, є природним кандидатом на окремий object. Назву варто шукати в його heading, `data-testid`, class або іншому атрибуті найближчого контейнера. Так automation-модель повторює структуру продукту й полегшує пошук коду. Якщо test environments обфускують усі стабільні назви, це варто обговорити з frontend-командою: production може мати обфускацію, але dev/stage потребують передбачуваного test contract. Водночас не можна прив’язувати неймінг чи selectors до випадкових inline styles або кольорів.

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

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

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

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

3. Селектори та пошук елементів →
Запитати в чаті про «contract» →