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

Java · Основний курс · 55:30–1:03:55

Основні параметри Selenide Configuration

`Configuration` містить багато параметрів, але для старту потрібні лише ті, що відповідають реальному середовищу. Assertion mode може дозволити soft assertions: окремі перевірки фіксують помилки, але тест доходить до кінця й лише тоді показує сукупний результат. `headless` приховує вікно браузера; у віддалених запусках такий режим є типовим. Розмір браузера радять ставити не довільно, а на мінімальну підтримувану продуктом ширину, бо саме там частіше проявляються проблеми компонування. Глобальний JavaScript click може трохи прискорити тести або обійти окрему проблему кліку, але його не слід вмикати всюди: він відрізняється від звичайної взаємодії й може зробити сценарій занадто швидким для застосунку. Для одиничного проблемного елемента краще обрати JavaScript лише в параметрах конкретного кліку. Швидке встановлення значення через JavaScript вставляє текст цілком. `sendKeys` або append потрібні, коли важливе посимвольне введення й виклик change/autocomplete-поведінки. Для завантажень Selenide має кілька режимів, а download folder варто розташувати в `build` для Gradle або `target` для Maven, щоб артефакти не потрапляли до репозиторію. `pollingInterval` визначає паузу між повторними перевірками умов на кшталт `shouldBe(visible)`; у прикладі стандартне значення — 200 мс. Зменшувати його слід лише після вимірювання: локально тест може прискоритися, але в Jenkins, BrowserStack або хмарних середовищах кожна перевірка має мережеву затримку між регіонами. Наприкінці викладач зводить мінімальну конфігурацію до `baseUrl` і обґрунтованого вибору headless-режиму.

Selenide: iframe, fluent interface та конфігурація →

Java · Advanced: API-автоматизація · 1:50:00–2:00:00

Environment configuration і secrets

Environment-specific base URLs, client IDs, users і non-secret defaults можуть жити в typed configuration/enum. Client secret, password і tokens не комітяться: вони передаються з CI secret store/environment. Відео показує enum/singleton-like initialization. Важливіший invariant: immutable configuration можна безпечно читати parallel tests, а mutable token/session state не можна безумовно розділяти між users/threads.

OAuth 2.0 і конфігурація →

Java · Основний курс · 51:20–1:02:20

`ObjectMapper` configuration і послідовне виправлення DTO

Через зміни в Jackson знадоблюється явна RestAssured configuration з `Jackson2MapperFactory` та налаштованим `ObjectMapper`. Після цього deserialization послідовно виявляє unrecognized fields у неповному DTO. Помилки читаються як карта того, які fields або constructors бракують. Автор показує, як початково можна віддати exception ChatGPT для пояснення, але не приймати відповідь без перевірки. Під час демонстрації згенерована модель пропускає кілька real response fields і змішує object з array. Це підтверджує, що великі DTO потрібно генерувати інструментом, який парсить повний JSON, і все одно звіряти з контрактом.

API-автоматизація: MVC і Jackson →

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

Environment variables і межа простого `.env`

Environment variable передає процесу значення на кшталт base URL, username або password без hardcode у вихідному коді. У Unix-подібній оболонці змінну можна експортувати перед запуском; у Windows вона задається іншим системним механізмом. `.env` є зручним локальним представленням таких пар ключ–значення, яке застосунок читає під час старту. Проблема з'являється, коли один продукт має кілька web/API/admin-сервісів і кожному потрібні окремі URL та credentials. Плоский набір ключів розростається, префікси дублюються, а залежності між значеннями стають неочевидними. Для невеликого проєкту `.env` достатній; переходити на складніший формат варто після реального зростання конфігурації.

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

Java · Основний курс · 0:00–3:20

План заняття і задача з iframe

Заняття охоплює AI-підказки коду, звіти й скріншоти Selenide, fluent interface, Application object та налаштування `Configuration`. Практичний сценарій — відкрити проєкт у Testomat.io, перейти до README, увімкнути редагування, змінити текст у редакторі та зберегти його. Редактор вбудований через `iframe`, тобто містить окремий HTML-документ. Selenium і Selenide не починають автоматично виконувати команди всередині такого документа: як і для нової вкладки або alert, потрібно спочатку перемкнути контекст, а після роботи повернутися до зовнішньої сторінки.

Selenide: iframe, fluent interface та конфігурація →

Java · Сесії: AMA та PMP · 1:30–3:30

Community flow і перші boundary cases

[Дивитися з 01:30](https://www.youtube.com/watch?v=viR9Rnmxse4&t=90s). Початковий end-to-end flow: створити user, створити community, перевірити її сторінку та редагування. Уже тут видно реальні edge cases: auto-generated URL під час створення не обов’язково поводиться так само під час edit, mobile-first layout відрізняється на desktop, а payment merchant потребує окремого test configuration і не має використовувати production credentials.

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

Java · Додаткові матеріали · 1:39–2:16

Звірка Gradle Wrapper і локальних distributions

Спочатку потрібно відкрити `gradle-wrapper.properties` і перевірити потрібну Gradle version. Потім у локальній `.gradle` слід знайти завантажені distributions і видалити пошкоджену або зайву версію, яка не відповідає wrapper configuration, щоб Gradle міг завантажити її заново. Видаляти всі project data для цього не потрібно.

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

Java · Основний курс · 5:20–11:53

`BaseController` і порівняння лінійного та controller-based тесту

Спільна RestAssured configuration переноситься в abstract `BaseController`. Бібліотека RestAssured має бути доступною main-коду, тому dependency переводиться з test-only у `implementation`. Controllers успадковують base class і працюють з protected request specification. Логін, пошук проєкту і створення suite розносяться між `AuthController`, `ProjectController` і `SuiteController`; controllers та DTO розкладаються в окремі packages. Для порівняння в тому самому class залишається початковий «брудний» сценарій і додається окремий MVC-варіант. Перенесення operations в окремі classes дає змогу розширювати кожен resource без розростання одного test class.

API-автоматизація: MVC і Jackson →

Java · Сесії: AMA та PMP · 6:05–9:10

SAST, DAST і спеціалізовані scanners

SAST аналізує codebase, configuration та infrastructure definitions без запуску повного user flow. До scope можуть входити source code, dependencies, YAML, Docker та Terraform files. DAST працює проти запущеного застосунку: генерує requests, змінює parameters, headers, authentication data й шукає небезпечну runtime behavior. OpenAPI specification може бути input для API security scanner-а. Окремі tools аналізують network traffic або вразливості, характерні для конкретної мови, cloud platform, protocol чи IoT stack. Тому pentesting швидко розгалужується на спеціалізації, а не зводиться до ручного перебору requests у Postman.

Перехід у пентестинг: що важливо →

Java · Додаткові матеріали · 6:10–8:35

Що не можна комітити

До Git додаються source code, Gradle Wrapper і потрібні configuration files. Не комітяться `.gradle`, `build`, `out`, локальна `.idea`, Maven build output та файли з environment variables чи secrets. Виняток для частини `.idea` може бути свідомим командним рішенням, наприклад для спільного code style. `.gitignore` має явно захищати repository від згенерованого сміття та приватних даних.

Публікація Java-проєкту на GitHub →
Запитати в чаті про «configuration» →