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

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

Приклад коду · 44:40

User-facing locator зі scope

Демонструє narrowing до desktop container, user-facing locators і explicit assertion; URL та labels є навчальними placeholders.

Test знаходить лише desktop form і перевіряє повідомлення про невалідний login.

3. Селектори та пошук елементів →

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

Дубльований `id` — невалідний HTML, а scope лише workaround

HTML Standard вимагає, щоб id був унікальним у межах element tree. Scope до desktop container може стабілізувати test, але root fix належить frontend markup.

3. Селектори та пошук елементів →

Нюанс · 26:30

Дубльований responsive DOM — окрема причина неоднозначності

Прихований mobile block може залишатися в DOM разом із desktop block. Visibility не робить global locator унікальним; scope до правильного container має бути явним.

3. Селектори та пошук елементів →

Python мануфактура · Програма курсу · 32:20–36:10

Дублікати mobile/desktop і область пошуку

На сторінці одночасно присутні mobile- і desktop-версії форми. Тому навіть нібито унікальний `id` може знайти два вузли, один з яких прихований. Щоб не покладатися на порядок, пошук звужується до видимого контейнера: ```css #content-desktop #user_email ``` Пробіл означає нащадка на будь-якому рівні вкладеності, а `>` — лише безпосередню дочірню ланку. Перед автоматизацією сценарій потрібно повністю пройти вручну й у DevTools перевірити кожен локатор, кількість збігів, видимість елемента та мережеві запити, які запускає введення даних.

3. Селектори та пошук елементів →

Python мануфактура · Програма курсу · 7:10–9:00

Сторонній Recorder і неповний код

Інший recorder записує кроки login-сценарію та дозволяє обрати мову експорту. Згенерований приклад містить `goto`, `fill` і `click`, але не враховує дубльовані `#content-mobile` та `#content-desktop` блоки на сторінці Testomat.io. Через це локатор поля може знайти кілька вузлів і впасти у strict mode. Генератор бачить окрему дію, але не обов’язково розуміє контекст DOM або усталену архітектуру тестів. Код є чернеткою, а не готовим тестом.

4. Playwright плагіни та codegen →

Python мануфактура · Програма курсу · 36:10–40:30

Сценарій login і навігація в PyCharm

Поля заповнюються через `locator(...).fill(...)`, а кнопка може шукатися за роллю та доступним ім’ям. Приклад структури сценарію: ```python page.locator("#content-desktop #user_email").fill("user@example.com") page.locator("#content-desktop #user_password").fill("invalid-password") page.get_by_role("button", name="Sign in").click() ``` Для швидкої роботи з кодом автор налаштовує розширення й звуження виділення (`Extend Selection`, `Shrink Selection`) та перехід між словами через `Option+Left/Right`. Гарячі клавіші мають прискорювати точні дії, а не приховувати нерозуміння поточного контексту.

3. Селектори та пошук елементів →

Python мануфактура · Сесії: 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, домашні завдання та формат ПМП →

Python мануфактура · Сесії: AMA та PMP · 2:15–6:55

AI як інструмент оптимізації та межі дозволеного

[Дивитися з 02:15](https://www.youtube.com/watch?v=reaHS8_pZbU&t=135s). AI може прискорити механічний refactoring, роботу з CI pipelines, Docker images, reporting, logs і повторюваними змінами. Цінність виникає не від підписки як такої, а від знайденого repeatable workflow: зібрати потрібний context, виконати вузьку задачу, перевірити diff і зберегти лише підтверджений результат. У відео звучить порада приховувати AI use через CLI та локальні ignore rules, якщо client його забороняє. Це ризикована практика: відсутність desktop app не робить передачу даних невидимою для network/security controls і не скасовує contractual restrictions. Без explicit approval не можна передавати proprietary code, secrets, logs або customer data зовнішньому provider. Безпечний шлях — узгоджений tool, дозволений data scope, redaction і локальний/offline workflow там, де це справді відповідає policy.

Як працювати на спокійному проєкті та з нав’язаними оцінками →

Java: архівні доповнення · 4:15–6:10

Клонування існуючого repository

Якщо repository вже існує на GitHub, GitLab чи Bitbucket, правильний початок — `Git Clone`, а не повторна публікація. З Git hosting копіюється HTTPS або SSH URL, в IDE обирається локальна папка, після чого проєкт клонується. GitHub Desktop може виконати ту саму операцію, але відео демонструє вбудовані IDE-інструменти.

Публікація Java-проєкту на GitHub →

Python мануфактура · Сесії: AMA та PMP · 8:35–11:15

Browser Kitty: правильний link у правильному профілі

Коли одночасно використовуються персональні, робочі й client accounts, відкриття link у default browser може змішати sessions або показати не той account під час screen sharing. Автор розділяє контексти через різні browser profiles і навіть різні browsers. Browser Kitty перехоплює відкриття URL та дозволяє keyboard shortcut-ом вибрати потрібний browser, profile, desktop app або incognito mode. Практичний результат — менше ручних переходів і нижчий ризик випадково відкрити приватний або робочий ресурс у неправильному контексті.

Корисні застосунки та їхнє призначення →

Python мануфактура · Програма курсу · 44:40–48:35

Перевірка повідомлення про помилку

Для невалідних облікових даних тест очікує повідомлення `Invalid email or password`. Є два близькі підходи: ```python expect(page.get_by_text("Invalid email or password")).to_be_visible() expect(page.locator("#content-desktop .common-flash-info")).to_have_text( "Invalid email or password" ) ``` У першому випадку елемент знаходиться за текстом і перевіряється його видимість. У другому — спочатку знаходиться стабільний контейнер, а потім перевіряється його текст. Обидва варіанти потребують правильної області пошуку через дубльовану розмітку.

3. Селектори та пошук елементів →
Запитати в чаті про «desktop» →