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

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

Java · Додаткові матеріали · 4:45–7:55

Classes і комбінування ознак

Елемент за class шукається через `.class-name` або attribute selector на кшталт `[class*='class-name']`. Два classes одного елемента записуються без пробілу: `.first.second`. Tag та `id` або attribute також можна комбінувати, наприклад `turbo-frame#global_search_results`. Якщо attribute value містить пробіл або спеціальні символи, його треба брати в лапки. У Java-рядку single quotes всередині CSS зменшують кількість escaping.

CSS і XPath: пошук елементів →

Java · Сесії: AMA та PMP · 4:00–9:50

Accessibility tree, локалізація і стабільність атрибутів

Chrome DevTools дозволяє подивитися accessibility tree й accessible name, навіть якщо значення неочевидне з HTML. Текстові locators зручні, доки labels, placeholders і переклади стабільні. Для багатомовного продукту або content, який окремо змінює контент-команда, стабільний `data-testid` часто кращий. Атрибути можуть рендеритися по-різному залежно від frontend framework, а generated classes та IDs змінюватися між builds, тому вибір залежить від реального контракту команди.

Пріоритети селекторів та їхня надійність →

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 · Advanced: API-автоматизація · 10:00–30:00

Generated assertions і їх межі

Assertion generator може створити fluent `hasName`, `hasCode` та інші methods з model classes. Розглядаються hard і soft assertions, package include/exclude та custom templates. Live demo виявляє plugin/version/import failures. Урок: generated assertion code потрібно компілювати у clean build і review, а не вважати generator output правильним за замовчуванням.

AssertJ: виразні асерти та їх генерація →

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

Генерація Java classes з JSON

Для створення DTO з JSON показано кілька варіантів: IntelliJ plugin RoboPOJOGenerator, online generator jsonschema2pojo і ChatGPT. У IntelliJ IDEA Aqua потрібний plugin недоступний, а online generator під час демонстрації не працює, тому невеликий request DTO генерується через ChatGPT. Автор попереджає: LLM може надійно допомогти з малою JSON-структурою, але для великого response може пропусти fields, помилитися з types або вкладеністю. Таку модель потрібно перевіряти проти реального JSON.

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

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

Структура Gradle-проєкту та Java-класу

`build.gradle` описує збірку та залежності, Gradle Wrapper дає відтворюваний запуск, а в `src` створюються source sets `main` і `test`. Службова логіка зберігатиметься в `src/main/java`, а тести — в `src/test/java`. Базова ієрархія Java-коду: package містить class, class містить fields і methods, а локальні variables можуть жити всередині methods. Назва `public` class має збігатися з іменем файлу; безпечне перейменування робиться через IDE refactoring.

Створення першого Java-проєкту та тесту →

Java · Сесії: AMA та PMP · 42:15–45:38

План перед змінами та практичний старт

[Дивитися з 42:15](https://www.youtube.com/watch?v=crzGm6nzfbU&t=2535s). Без чіткого плану той самий prompt може щоразу змінювати різні files, selectors, components або classes, особливо у великій codebase. Тому спочатку фіксують місце й межі зміни, а реалізацію запускають у новому контексті вже за погодженим планом. Для професійного розвитку корисні не декларації про AI, а власні case studies: як було поставлено задачу, які gates захистили якість, що перевірено й які обмеження лишилися. Найпростіший спосіб отримати такий досвід — зробити невеликий власний інструмент, який розв'язує реальну особисту проблему.

Як налаштувати мультиагентне середовище →

Java · Основний курс · 42:59–46:00

Примітивні та wrapper types

Серед часто вживаних примітивів названо `int`, `boolean`, `double`, `float`, `byte` і `long`. `byte` стане потрібним під час роботи з файлами; для чисел із дробовою частиною або складніших числових операцій автор радить звернути увагу на `BigDecimal`, а не покладатися лише на примітиви. Wrapper classes на кшталт `Integer` надають методи, яких немає у примітивного `int`. Урок не забороняє примітиви: з ними варто поекспериментувати, але коли логіка навколо значення зростає, посилальний тип може бути зручнішим. `while` і `do-while` відкладаються до теми роботи з файлами.

Selenide: колекції елементів і стан браузера →

Java · Основний курс · 1:09:00–1:16:00

RoboPOJOGenerator і межі AI-generated DTO

У повній IntelliJ IDEA демонструється RoboPOJOGenerator: у нього вставляється реальний JSON, обираються Jackson і Lombok settings, після чого plugin створює повнішу object structure. Цей результат містить поля, які пропустила LLM-generated версія. Для маленьких JSON ChatGPT може бути зручним стартом, але для великих response автор його не радить. На кожному проєкті Jackson потребує одноразового узгодження з реальними JSON conventions. Після цього typed responses дають контрактну перевірку fields і types, а над ними можна будувати reusable assertion classes.

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

Java · Основний курс · 1:16:00–1:20:17

Сирий JSON для requests і typed objects для responses

Якщо request DTO поки занадто складний, request JSON можна тимчасово зберігати у resources і відправляти як file/string. Для response автор наполягає на typed object: так deserialization одразу виявляє зміну structure або field types, яка могла б поламати frontend. Помилки Jackson потрібно читати і звіряти з документацією або пошуком, а не механічно копіювати AI-відповідь. Configuration, helpers і DTO варто рознести за окремими classes, щоб не змішувати mapping, transport і assertions.

API-автоматизація: MVC і Jackson →
Запитати в чаті про «classes» →