← Java

Після цього уроку ви зможете

Конспект і таймкоди

0:00

Базова технічна самостійність middle engineer

Middle має володіти мовою настільки, щоб писати й підтримувати UI та API tests, а також пояснити, як перевірити нову поведінку й які наявні тести варто змінити. UI automation легше показує зв'язок із діями користувача, тоді як API automation часто швидша й стабільніша, але вимагає впевнено працювати з більшими структурами даних і контрактами.

Очікується знання базових типів, перетворень і наслідків звуження/розширення типів, dependency/build tool свого stack (requirements.txt, pip/uv, Maven/Gradle, npm), а також можливостей test runner. Важливо вміти запустити тести паралельно й розуміти, які ресурси та змінні створюються для кожного worker.

3:30

Незалежні тести, test design і участь у плануванні

Тести мають бути незалежними за даними та станом. Залежна послідовність інколи може з'явитися як швидка перша ітерація, але це технічний борг: окремий тест не можна надійно повторити, а suite важче паралелити й діагностувати.

Automation engineer не звільняється від базових QA-навичок: decomposition, impact analysis, risk assessment і test-design techniques. Межа між manual та automation розмивається, але повний перехід лише в один тип роботи атрофує іншу частину навичок. Участь на ранній фазі refinement допомагає заздалегідь визначити testability та потрібний рівень покриття.

Термін

BrowserContext

Ізольоване browser profile у Playwright. Playwright Test створює окремий context для кожного test, ізолюючи cookies, local storage і session storage.

Приклад коду

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

import { test, expect } from '@playwright/test';

test('signs in', async ({ page }) => {
  await page.goto('https://example.test/login');
  await page.getByLabel('Email').fill('learner@example.test');
  await page.getByRole('button', { name: 'Sign in' }).click();
  await expect(page.getByRole('heading', { name: 'Dashboard' })).toBeVisible();
});

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

Очікуваний результат: Test проходить лише проти application, що має наведений login contract.

Потрібно: @playwright/test

Практика

Знайти три джерела flaky behavior

  1. Візьміть залежний UI test і відокремте browser state від server-side test data.
  2. Замініть випадковий CSS/XPath на user-facing locator там, де є semantic contract.
  3. Запустіть test без retry, зафіксуйте root cause і лише потім порівняйте report із retry enabled.

Результат: Незалежний test, locator rationale і report, де retry не приховує root cause.

6:00

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

9:30

Lifecycle, declaration, initialization і live coding

Варто розуміти порядок, у якому test runner завантажує модулі, створює suite/test fixtures, запускає setup, test і teardown. Declaration задає ім'я та тип, assignment присвоює значення, а runtime initialization створює фактичний стан під час виконання програми. Точні терміни залежать від мови, але практичне питання однакове: коли ресурс уже існує й хто ним володіє.

На співбесіді можуть попросити пояснити різницю між class та object, відрефакторити тест або написати надійний locator. Потрібно знати CSS/XPath настільки, щоб читати старий код, і віддавати перевагу user-facing locator API Playwright, коли семантична роль або label точніше виражає контракт.

Термін

Strict locator

Locator contract, за якого action, що очікує один target, падає при кількох matches. Це сигнал уточнити user-facing або explicit contract, якщо множинність не очікувана.

12:30

Standard library, flaky tests і прості принципи дизайну

Middle має орієнтуватися у standard library та основних конструкціях мови: collections, functions, reserved words/operators, способи створення й перетворення даних. Це дає змогу використовувати вбудовані можливості замість зайвих dependencies і custom wrappers.

Окремий практичний блок — діагностика flaky tests: відрізнити проблему очікування, нестабільні дані, shared state, зовнішню залежність або справжню race condition. retry не є виправленням першопричини.

Для дизайну automation code достатньо впевнено застосовувати KISS, DRY, YAGNI та DAMP. SOLID і design patterns корисні як словник для конкретних проблем, але не як вимога створювати багатошарову архітектуру. Також потрібно вміти запускати suite у CI та читати test report.

Термін

Flaky test у Playwright

Test, який упав під час першого run, але пройшов retry. Playwright відрізняє його від passed і failed; default retries дорівнює zero.

16:30

API-мислення, MVC, AAA і data-driven tests

MVC стає корисним словником, коли engineer працює з API та backend contract: model представляє дані, controller/endpoint приймає дію, view або client відображає результат. У тестовому коді DTO може типізувати JSON-відповідь, але не повинен автоматично копіювати кожну внутрішню модель сервісу.

Сценарій зручно структурувати як Arrange–Act–Assert: підготувати стан, виконати одну ключову дію, перевірити результат. Повторювані варіанти можна виразити data-driven test, якщо таблиця прикладів не приховує різні бізнес-правила. На співбесідах також можуть питати BDD/Gherkin; важливо пояснити, коли цей формат покращує спільне розуміння, а коли лише дублює код.

Джерела та додаткові матеріали

  • Playwright Isolation ↗Microsoft / Playwright · перевірено 2026-07-31

    Описує per-test BrowserContext і межу client-side isolation.

  • Playwright Locators ↗Microsoft / Playwright · перевірено 2026-07-31

    Фіксує priority user-facing locators і strictness behavior.

  • Playwright Retries ↗Microsoft / Playwright · перевірено 2026-07-31

    Описує worker restart, default retries і classification flaky.