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

Design Patterns для автоматизаторів · 6:00–13:00

Порівняння runtime Selenium і Playwright

Один login/business flow запускається спочатку через Selenium, а потім через Playwright. У демонстрації Selenium-виконання займає близько хвилини, тоді як Playwright проходить той самий flow приблизно за десять секунд. Playwright Java описується як client для взаємодії з browser через DevTools protocol. Швидкість не скасовує testability проблем, але зменшує protocol overhead і дає швидший feedback.

Playwright Java, пишемо тести та робимо Selenide на мінімалках →

Design Patterns для автоматизаторів · 47:00–52:38

Trace Viewer замість відео

Playwright trace зберігає actions, before/after snapshots, console, network requests, request/response bodies і metadata. Це дозволяє відкрити локальний Trace Viewer та побачити, що відбулося перед failure, без повторного запуску. Trace artifact може бути десятки megabytes, але часто дає більше діагностичної інформації за video. На CI варто зберігати trace для кожного test або при failure й публікувати його як downloadable artifact чи у власному hosted viewer. **Актуальність станом на 2026-08-08.** Низькорівневий `BrowserContext.tracing()` у Playwright Java записує browser operations і network activity, але не test assertions. Це обмеження треба врахувати, якщо wrapper обіцяє повний assertion-aware trace ([Playwright Java documentation](https://playwright.dev/java/docs/api/class-tracing)).

Playwright Java, пишемо тести та робимо Selenide на мінімалках →

Design Patterns для автоматизаторів · 1:43:46–1:49:21

Playwright і Cypress

Cypress описується як більш закритий framework зі своїм execution model, dashboard і довгою історією обмежень навколо iframes, parallelization та artifact storage. Community plugins закривали частину цих прогалин. Playwright уже надає browser automation, tracing і multi-browser support як library, тому менше прив'язує suite до одного hosted dashboard. Відео подає це як операційну перевагу, не як гарантію, що будь-який Cypress project потрібно переписувати.

Playwright Java, пишемо тести та робимо Selenide на мінімалках →

Design Patterns для автоматизаторів · 15:18–20:00

Вибір automation layer через архітектуру

React Native app іноді можна переважно тестувати Playwright через web-rendered version, залишивши WebdriverIO/Appium лише для native navigation та системних дій. Це скорочує runtime, якщо основний UI справді доступний як Web. Перед вибором інструмента потрібно з'ясувати, де реалізована логіка: frontend, mobile client, backend чи database. Network requests через browser tools або proxy показують фактичний consumer/producer contract краще за припущення з UI.

2. API. Патерни проєктування або чому огірок нікому не тре. →

Design Patterns для автоматизаторів · 31:00–40:00

Assertions і незручність сирого fluent API

Playwright Java розділяє locator actions і assertions: для перевірки потрібно окремо передавати locator в assertion API. Після action не завжди можна продовжити читабельний chain на тому самому object, тому Page Object наповнюється повторними locator calls. Автор прагне до Selenide-подібного стилю: знайти element, викликати `shouldBe`/`shouldHave`, виконати `click`, `setValue` або `press`, читаючи chain зліва направо. Замість великого framework потрібен вузький wrapper над уже наявними Playwright capabilities.

Playwright Java, пишемо тести та робимо Selenide на мінімалках →

Design Patterns для автоматизаторів · 40:00–47:00

Мінімальний wrapper: actions і conditions

Wrapper розділяє locator actions і conditions. Condition має метод `verify`, який отримує locator та викликає native Playwright expectation; concrete conditions реалізують visible, hidden, text та інші стани. Locator wrapper повертає себе після action або verification, тому Page Object читається як короткий fluent scenario. Custom waiting library пропонується лише для рідкісних conditions, яких немає в Playwright; основні очікування не переписуються.

Playwright Java, пишемо тести та робимо Selenide на мінімалках →

Design Patterns для автоматизаторів · 1:00:00–1:05:00

Inspector, pause і recorder

Playwright Inspector дозволяє поставити test на pause, виконувати кроки, перевіряти locators і дивитися стан page. Для debugging це може бути швидше за звичайний IDE debugger. Recorder генерує послідовність raw locator/actions, але не будує Page Objects і test-runner architecture. Він може допомогти початківцю побачити working command, проте generated main-method script не є готовим maintainable test suite.

Playwright Java, пишемо тести та робимо Selenide на мінімалках →

Design Patterns для автоматизаторів · 1:05:00–1:13:33

DOM tree, CSS і XPath

Пошук елемента має слідувати DOM tree: спочатку стабільний parent/container, потім потрібний descendant або text filter. Playwright і Selenide вміють фільтрувати locator за текстом, тому довгий XPath часто не потрібний. Playwright `locator` сам визначає XPath за `//`, але автор радить використовувати CSS, attributes і можливості бібліотеки. Recorder/debugger можуть запропонувати selector, однак його стабільність усе одно оцінює команда.

Playwright Java, пишемо тести та робимо Selenide на мінімалках →

Design Patterns для автоматизаторів · 1:37:00–1:43:46

Custom waits, soft assertions і remote browsers

Native Playwright assertions є dynamic waits і покривають більшість visible/hidden/text conditions. Якщо потрібні custom polling або AssertJ soft assertions, їх можна викликати всередині власної condition через Awaitility-подібний wait, але це окреме розширення, а не default шлях. У headless CI Playwright працює без спеціальних змін, окрім встановлення browser binaries; BrowserStack і Sauce Labs також мають власні integration instructions. Перший запуск довший через download Chromium, WebKit і Firefox artifacts.

Playwright Java, пишемо тести та робимо Selenide на мінімалках →

Design Patterns для автоматизаторів · 1:46:30–1:50:36

Підсумок патернів і подальші теми

Підсумкова структура розділяє Page Object на сторінки й компоненти, підключає спільні компоненти композицією, передає робочі дані як State, створює їх через Factory Method і перевіряє готовність через Loadable Component. Fluent-виклики роблять сценарій коротшим, якщо не приховують переходи між контекстами, а helpers, decorators і utilities залишаються вузькими за відповідальністю. Автор анонсує окремий розбір Playwright-обгортки з Singleton, Observable і Command: один інстанс для тестів, очікування стану UI та об'єкти команд/conditions на зразок Selenide. Відео завершується нагадуванням структурувати тестовий проєкт поступово й подякою за збір коштів для військових.

1. Патерни проєктування для UI тестів (перезапис) →
Запитати в чаті про «playwright» →