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

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

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

Playwright setup залежить від версії

У відео рекомендовано API preconditions, reused authenticated state та незалежні test data.

Поточна документація Playwright рекомендує не комітити auth state і використовувати окремий account на parallel worker, якщо tests змінюють shared server-side state. Конкретні fixtures, directories та worker APIs слід звіряти з версією Playwright у проєкті.

Практика курсу на YOY, домашні завдання та формат ПМП →

Приклад коду · 2:55

Окремий context для Free-користувача

Fixture створює isolated BrowserContext із наперед підготовленим Free-state; Enterprise-state має бути окремою fixture або parameterized input із чіткою очікуваною роллю.

Тест стартує у визначеному Free-контексті без умовного розгалуження за випадковим UI-станом.

На сторінці може бути різний контент — що робити? →

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

Відокремити local state від instance state

Створи два PageObject instances із різними page values і доведи assertions, що зміна local variable не змінює self.page іншого instance.
Обидва instances мають незалежні page attributes.
У method немає global state.
Автор може пояснити, чому obj.method() передає obj як перший argument.

__init__, self, page та принципи ООП →

Java · Сесії: AMA та PMP · 45:30–48:19

Банківські процеси, BPMS і state machines

У banking та інших регульованих доменах onboarding може проходити довгий Business Process Management flow з compliance-перевірками. Одна сутність не завжди може одночасно рухатися двома переходами стану, тому паралельні тести на спільному профілі конфліктують або блокують processing. Для стабільної автоматизації потрібно знати state machine, зовнішні залежності та правила блокування. Якщо динамічне створення неможливе, керований pool тестових сутностей має враховувати їх поточний стан, reservation, recovery після падіння тесту та регулярне відновлення після refresh середовища.

Юзер менеджмент та костилі з якими ви стикнетесь в житті →

Java · Сесії: AMA та PMP · 0:00–0:58

Тест має знати очікуваний стан

Після авторизації користувач може потрапити в різні компанії або проєкти й побачити різний контент. Це не означає, що один тест має приймати обидва варіанти через `if`: такий сценарій перестає однозначно повідомляти, яку бізнес-поведінку він перевірив. Кожен тест повинен мати відомі передумови, послідовність дій і конкретний результат. «Універсальна» fixture корисна лише тоді, коли вона готує визначений стан, а не приховує невизначеність усередині сценарію.

На сторінці може бути різний контент — що робити? →

Java · Сесії: AMA та PMP · 2:10–5:30

Чому один Appium-сценарій не гарантує однаковий тест

Appium і WebdriverIO дають спільний зовнішній API для iOS та Android, але додають кілька шарів комунікації між тестом, Appium server, platform driver і device. Через це сценарії повільніші, а діагностика instability складніша, ніж у native tests. Одна бізнес-дія також може мати різний UI на різних платформах: date picker, введення числа, back navigation і переходи між екранами підпорядковуються різним design guidelines. Відрізняється й lifecycle: після згортання або повернення екран може відновити state з local storage чи повторно звернутися до backend. Спільний тест часто все одно отримує platform-specific branches або окремі page/screen objects.

Типи мобільних застосунків та мобільна автоматизація →

Java · Сесії: AMA та PMP · 2:55–5:45

Окремі `storageState` і suites для кожного контексту

Fixture може завантажувати заздалегідь підготовлений Playwright `storageState` з потрібними cookies та `companyId`. Тоді free-plan і enterprise suites стартують одразу у своїх контрольованих контекстах і не залежать від випадкового вибору компанії. Та сама модель працює не лише для тарифів: у медичному продукті це можуть бути doctor і patient, а всередині ролі — додаткові рівні доступу. Спільний end-to-end сценарій між ролями залишається окремим тестом, бо має іншу бізнес-мету.

На сторінці може бути різний контент — що робити? →

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

`__init__` задає обов’язковий стан об’єкта

Через `__init__` клас отримує залежності й початковий стан, без яких його методи не мають сенсу. Наприклад, компонент приймає кореневий locator, а Page Object — Playwright `page`; наступні методи перевикористовують ці значення через `self`. У повсякденній мові `__init__` часто називають constructor. Технічно екземпляр створює `__new__`, а `__init__` ініціалізує вже створений об’єкт. Для звичайного Page Object достатньо реалізувати саме `__init__`.

__init__, self, page та принципи ООП →

Java · Додаткові матеріали · 4:02–6:23

Ризик очищення Local History

Опція очищення Local History видаляє детальну локальну історію edits, з якої можна відновити незакомічений код або невдалі експерименти. Перед її вибором потрібно commit-нути чи іншим способом зберегти корисний working state. Якщо ця історія не потрібна, `Invalidate and Restart` може очистити caches та побудувати indexes заново.

Діагностика Java-проєкту в JetBrains IDE →

Java · Сесії: AMA та PMP · 4:30–8:00

Власні AI-інструменти та цінність системного мислення

[Дивитися з 04:30](https://www.youtube.com/watch?v=jAl2Qf8Zlyg&t=270s). На прикладах диктування, transcription, Papuga, app switcher, browser extension та event platform показано, що невеликі власні tools уже реально створювати без глибокого знання кожного framework. Але здатність сформулювати problem, описати state і перевірити output важливіша за саму генерацію. Для professional work syntax knowledge частково дешевшає, тоді як system design, contracts і розуміння причин defect-ів стають ціннішими.

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

Java · Сесії: AMA та PMP · 5:30–8:00

Від простого UI-тесту до Page Objects, API та CI

[Дивитися з 05:30](https://www.youtube.com/watch?v=viR9Rnmxse4&t=330s). Suite ускладнюється вертикально: спочатку прямий UI-flow, потім reusable helpers, Page Objects, розширення object model, API preconditions і повторне використання authenticated state. Складніший сценарій може створити другу людину, зареєструвати її на event і перевірити participant list від імені admin. Пізніше ті самі tests мають запускатися в CI, де з’являться окремі environment-specific failures.

Практика курсу на YOY, домашні завдання та формат ПМП →

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 спричиняє взаємний вплив тестів.

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

Java · Основний курс · 6:10–8:55

Gateway і вкладена архітектура

Gateway може бути зовнішньою обгорткою над одним або кількома services. Тому один квадрат на high-level diagram може приховувати власну базу, декілька внутрішніх services і нові integrations. Кожен із цих components можна «наблизити» і знову побачити нову архітектуру. На новому проєкті варто попросити lead або developer намалювати таку service map, а потім уточнювати data stores і взаємодії. Це безпосередньо впливає на test design: де готувати state, які контракти перевіряти і де локалізувати падіння.

Вступ до API-автоматизації →
Запитати в чаті про «state» →