Збереження reports на pytest node
Зберігає reports фаз у typed pytest stash, щоб teardown fixture могла перевірити failure потрібної фази.
Після фази call item.stash[phase_reports_key]["call"] містить відповідний TestReport.
Відеобібліотека
Пошук у нотатках курсу Python мануфактура та спільних матеріалах з переходом на потрібну секунду.
Зберігає reports фаз у typed pytest stash, щоб teardown fixture могла перевірити failure потрібної фази.
Після фази call item.stash[phase_reports_key]["call"] містить відповідний TestReport.
Приклад завантажує сусідній .env, перевіряє всі обов’язкові keys і завершується з явною помилкою, якщо конфігурація неповна.
Для підготовленого .env друкується https://example.test; при відсутньому key виникає RuntimeError.
Fixture створює isolated BrowserContext із наперед підготовленим Free-state; Enterprise-state має бути окремою fixture або parameterized input із чіткою очікуваною роллю.
Тест стартує у визначеному Free-контексті без умовного розгалуження за випадковим UI-станом.
На сторінці може бути різний контент — що робити? →Locator передається всередину expected condition, тому кожна спроба polling може повторно знайти актуальний DOM-вузол.
Повертається видимий WebElement або після 10 секунд виникає TimeoutException.
1. Selenium початок, основи, фікстури →Вбудована Chrome DevTools panel для запису, replay, редагування, import і export user flows у поточній browser session.
4. Playwright плагіни та codegen →Pytest знаходить test modules і functions за naming conventions навіть без Python package. __init__.py впливає на import semantics і module names, але не є обов’язковим для базового discovery.
Згенерована `models.py` містить багато загальних класів на кшталт `Attributes1`, `Attributes2`, тому його краще використовувати як reference і поступово називати моделі за їхньою предметною роллю. Під час демо тест падає через неправильні imports і видалену fixture. Для circular import корисно читати останній змістовний фрейм traceback: там зазвичай вказано реальний модуль і напрям залежності. Якщо `pytest` не знаходить fixture, він друкує перелік усіх доступних fixtures, що допомагає помітити назву або проблему з discovery.
У курсі використовується синхронний API Playwright, щоб кроки тесту виконувалися послідовно без додаткової складності `async`/`await`. Фікстуру можна типізувати класом `Page`, а PyCharm імпортує потрібне ім’я через quick fix: ```python from playwright.sync_api import Page, expect def test_open_home_page(page: Page): ... ``` Важливо імпортувати `Page` і `expect` саме з `playwright.sync_api`, а не з асинхронного API.
Наявність `__init__.py` робить директорію звичайним Python package і може визначати його зручний публічний API через imports або `__all__`. Це допомагає IDE, імпортам і читачеві зрозуміти межу модуля. Сучасний Python також підтримує namespace packages без `__init__.py`, тому файл не є абсолютною вимогою для кожної імпортованої директорії. У навчальному проєкті явний package зазвичай простіший і передбачуваніший.