Continuous Integration | Playwright Python
Дає актуальний contract CI: package, browser/system dependencies, запуск tests.
Навіщо встановлювати Playwright-браузери, як часто та чому треба оновлювати бібліотеки → Першоджерело ↗Відеобібліотека
Пошук у нотатках курсу Java з переходом на потрібну секунду.
Дає актуальний contract CI: package, browser/system dependencies, запуск tests.
Навіщо встановлювати Playwright-браузери, як часто та чому треба оновлювати бібліотеки → Першоджерело ↗Використовує in-memory database, connection context manager і placeholders без зовнішніх dependencies.
Assertion проходить; query повертає row (1,).
Команди відокремлюють Python dependencies, сумісний Chromium із системними бібліотеками та сам test run.
CI runner має потрібний Chromium і запускає pytest suite.
Навіщо встановлювати Playwright-браузери, як часто та чому треба оновлювати бібліотеки →Складіть однаковий список config keys для local, dev і CI без environment prefixes у коді.
Опишіть, хто створює test user, як він резервується для parallel worker і як відновлюється після failure.
Позначте зовнішні auth dependencies та окремо визначте production acceptance check і test-only seam.
Config matrix і state diagram без shared mutable user між parallel workers.
ОС-бібліотеки, потрібні браузеру в CI. Playwright CLI може встановити їх разом із browser binary через --with-deps.
Навіщо встановлювати Playwright-браузери, як часто та чому треба оновлювати бібліотеки →Відомі вразливості реєструються в загальнодоступних базах та ідентифікуються, зокрема, через CVE. Scanners зіставляють dependency versions із такими записами й повідомляють, що конкретна library або її transitive dependency потребує оновлення. Patching не завжди дорівнює зміні номера version. Якщо vulnerable API змінено або видалено, команді доводиться оновити dependency і переписати код, який спирався на небезпечну behavior. Security engineer має пояснити не лише «scanner червоний», а шлях експлуатації, реальний impact і безпечний upgrade path.
Створюється Java/Gradle project з group/package naming, JUnit Platform і dependencies. Відео використовує Java 11/17 і пояснює різницю Maven та Gradle як build tools. Repositories та artifact storage потрібні не лише для third-party libraries: компанія може публікувати власні clients і test artifacts. Точні dependency versions мають бути pinned і відтворювані на CI.
Мови й екосистеми мають власні package managers або build tools: pip, npm, Maven, Gradle та інші. Вони завантажують бібліотеки з центральних репозиторіїв і можуть кешувати їх локально, але залежності конкретного проєкту визначаються окремо. Python virtual environment ізолює бібліотеки одного проєкту від іншого. На одному комп’ютері можуть співіснувати робочі й особисті репозиторії з різними версіями Playwright, pytest та інших пакетів. Конфлікт можливий, якщо запустити код не тим глобальним Python або неправильно вибрати interpreter. Самі залежності коректно створених `venv` не повинні впливати на сусідні проєкти.
JetBrains IDE індексує Git, Java, Gradle, Maven, Node.js та інші встановлені tools. Після зміни версій без restart IDE може продовжити використовувати старі indexes і показувати хибні errors або не бачити dependencies. У такому випадку можна використати `Invalidate Caches`, очистити filesystem/VCS indexes і перезапустити IDE.
Один і той самий service може бути producer для одного виклику і consumer для іншого. Тому response, яку отримує frontend, може залежати від кількох внутрішніх викликів. Чиста теоретична модель не завжди збігається з production: дедлайни змушують команду накопичувати technical debt і порушувати ідеальні межі. Тестувальник має досліджувати фактичні зв’язки, а не покладатися лише на назви сервісів.
Щоб проєкт можна було клонувати й запустити на іншій машині, його прямі залежності фіксують у конфігурації на кшталт `requirements.txt`. Бібліотеки самі залежать від інших пакетів — це транзитивні залежності. Повний freeze може додати до файлу весь граф пакетів. Автор радить не зберігати зайвий шум без потреби: достатньо явно вказати основні залежності, наприклад Playwright і pytest, а їхні сумісні внутрішні пакети підтягнуться автоматично. Жорстко фіксувати весь граф варто тоді, коли відтворюваність або конфлікти версій справді стали проблемою. Інакше довгий список складніше підтримувати й аналізувати.
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.
Якщо проблема лишилася, можна послідовно спробувати `Repair IDE`, `Invalidate Caches` і `Reopen Project`, після чого знову запустити test. Додаткова ознака проблеми з Gradle indexing — відсутні `Tasks` і `Dependencies` у Gradle tool window. У справно проіндексованому project там видно task groups, зокрема `verification`, і test task, який IDE запускає під капотом.
Навіть детальний курс не може показати всі ситуації. На іншому проєкті або в іншій частині тієї самої системи повторена дія може дати інший результат через архітектуру, версію бібліотеки чи інтеграційні умови. Типовий приклад — код, переписаний з презентації або офіційної документації, не запускається через застарілий приклад, іншу версію dependency або одну помилку в назві функції. Такі збої неминучі, тому вміння самостійно діагностувати їх є частиною навчання.
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.