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

Design Patterns для автоматизаторів · 0:00–2:01

Селектори, KISS і Proof of Concept

Для селекторів потрібна або впевнена навігація DOM-деревом, або командна домовленість про стабільні `data-*` атрибути; за потреби тестувальник може сам додати їх у frontend і перевірити зміни локально. Автоматизацію радять починати з найпростішого Proof of Concept, щоб рано виявити bot protection, проблемні локатори та інші обмеження системи. Сценарій має підтверджувати бізнес-ціль, а не просто взаємодію з UI. Для e-commerce початковою перевіркою обрано додавання товару до кошика з подальшим підтвердженням результату.

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

Design Patterns для автоматизаторів · 1:07:10–1:20:11

State для вибраного товару та локальний selector scope

`ProductInfoDto` передається в конструктор `ProductItem` один раз і стає станом компонента. Методи `hasTitle`, `addToCart` та `openProductPage` використовують той самий товар без повторення аргумента в кожному виклику. Це корисно, коли багато методів одного класу працюють з одними й тими самими даними. `ProductList` надає фабричний метод, який створює `ProductItem` для потрібного товару. Всередині компонента спільний батьківський selector картки формується один раз з `id`, а конкретні методи звужують пошук до title чи кнопки. Так selector scope і стан залишаються локальними для картки, а тест не знає її DOM-структури.

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

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

Collections і BrowserContext

Перебирання UI element collection створює багато browser round trips для visibility і text. Коли можливо, краще працювати з конкретним target element або один раз отримати потрібний text/content і перевірити його локально; selectors за `nth`/index названі нестабільними. `BrowserContext` ізолює cookies, local/session/shared storage, base URL та device emulation settings. Окремий context на test дає дешевшу ізоляцію, а Playwright через Page/Frame API працює з tabs, iframes і dialogs без Selenium-style global driver state.

Playwright Java, пишемо тести та робимо Selenide на мінімалках →
Запитати в чаті про «selectors» →