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

Java · Основний курс · 30:30–34:30

Потокобезпечний `WebDriverProvider` через `ThreadLocal`

`WebDriverProvider` зберігає driver instance у `ThreadLocal`. Test runner створює потоки для запусків, а provider повертає драйвер, пов'язаний із поточним thread id: якщо його ще немає, створюється `ChromeDriver`; якщо є — повторно використовується поточний instance. Окремий метод закриття викликає `quit()` і видаляє значення з `ThreadLocal`. Це готує основу до паралельних запусків: тести в різних потоках не повинні ділити один браузерний session instance.

Selenium: очікування та мікрообгортки →

Java · Основний курс · 1:16:02–1:25:30

Application facade і потокобезпечна ініціалізація

Щоб не створювати Page Object-и безпосередньо в кожному тесті, будується невеликий application facade. Він один раз приймає `Page`, створює `HomePage`, `SignInPage`, `ProjectsPage` та інші сторінки у правильному порядку й віддає їх тесту через короткі методи. Під час рефакторингу перевіряється момент ініціалізації: Page Object-и не можна створювати раніше, ніж JUnit integration надасть валідний `Page`. Після перенесення створення у constructor application object отримується стабільний lifecycle без повторюваних `new ...Page(page)` у тесті. У вбудованій Playwright JUnit implementation показано зберігання instances через `ThreadLocal`. Це дає окремі Playwright, Browser, BrowserContext і Page для кожного test thread; tracing lifecycle додатково враховує завершення, падіння або скасування тесту.

Playwright для Java: основи та поглиблення →

Java · Сесії: AMA та PMP · 6:00–9:30

OOP, патерни й ізоляція browser state

На базовому рівні потрібно розуміти primitives/value types, reference/object types, класи, об'єкти та принципи OOP. Із прикладних патернів найчастіше зустрічається Page Object; корисно впізнавати Singleton, Builder, Facade та інші рішення, але не впроваджувати їх без проблеми, яку вони реально спрощують. Page Factory виник навколо старих Selenium-підходів із lazy initialization елементів. Для сучасного Selenium або Playwright його не варто застосовувати за інерцією. У багатопоточному WebDriver framework кожен тест/worker повинен мати власний browser context або driver; спільний mutable driver спричиняє взаємний вплив тестів.

Що має вміти та знати мідл автоматизатор →
Запитати в чаті про «ThreadLocal» →