WHO guidelines on mental health at work
Відділяє evidence-based organizational, manager, worker та return-to-work interventions від загальної career advice.
Перехід із менеджменту в технічну роль і sabbatical → Першоджерело ↗Відеобібліотека
Пошук у нотатках курсу Python мануфактура та спільних матеріалах з переходом на потрібну секунду.
Відділяє evidence-based organizational, manager, worker та return-to-work interventions від загальної career advice.
Перехід із менеджменту в технічну роль і sabbatical → Першоджерело ↗Створіть custom file template з імпортом Page, класом, __init__, self.page і return self.
Використайте ${NAME} для назви створюваного класу або файла.
Створіть пробний Page Object і виправте всі syntax та inspection errors у самому шаблоні.
Новий Page Object створюється одним пунктом меню та не містить syntax або unresolved reference errors.
page є instance attribute: кожен PageObject отримує власний стан через __init__, а method читає його через self.
Команда друкує Page: checkout і assertion проходить.
__init__, self, page та принципи ООП →Stdlib-приклад показує typed object, valid range і fixed seed без додаткової dependency.
Друкується відтворюваний UserData, а assertion підтверджує базові constraints.
Тестові дані для автотестів →Проєктує лише потрібне поле id замість поширення raw dictionary у UI-тест.
Assertion завершується без помилки й повертає Project(id='p-1').
Для прикладу з відео один запуск економить 94 хвилини; 150 запусків дають 14 100 хвилин локальної економії.
Assertion проходить; результат дорівнює 14100 хвилин.
Як упровадити автоматизацію мануальному QA та довести її ефективність →Функція оголошується через `def`, приймає named parameters і може повертати значення. Type hints на кшталт `email: str` та `-> dict[str, str]` покращують navigation і IDE checks, але самі по собі не валідовують input at runtime.
Саме оголошення `def print_hello():` нічого не виконує. Функцію треба окремо викликати. Це розділяє опис поведінки та момент її запуску. Далі функція параметризується ім’ям. Замість фіксованого `Hello World` вона приймає `name` і формує `f"Hello {name}"`, тому один алгоритм працює з різними вхідними даними.
`tuple` підходить для фіксованої групи пов’язаних значень, наприклад `(201, "Created")`. Значення можна розпакувати за позицією у дві змінні. Кількість змінних має відповідати кількості елементів, інакше Python повідомить про помилку розпакування.
Сигнатура на кшталт `def hello_to(name: str) -> str` описує вхід і результат. IDE після крапки може підказати методи `str`, а reviewer одразу бачить контракт функції. Важливе уточнення: type hints за замовчуванням не перевіряються інтерпретатором як жорстке обмеження й не є оптимізацією швидкодії. Їхню коректність перевіряють IDE, type checker і тести.
Page Object і Page Component мають повторювану основу: імпорти Playwright, клас, `__init__`, збереження `page`, базову перевірку завантаження та часто `return self`. Замість копіювання цієї «шапки» створено власний шаблон у `Settings → Editor → File and Code Templates`. У file template змінна `${NAME}` підставляє назву, яку вводять під час створення файлу. Після збереження в меню `New` з’являється окремий тип `Page Object`; вибір цього пункту створює клас з підготовленими імпортами й методами. Під час live coding шаблон кілька разів виправляється: додаються пропущені `self`, закривається дужка, коригуються відступи. Це нормальний цикл налаштування: створити пробний файл, дочекатися синтаксичних та інспекційних підказок IDE, виправити шаблон і повторити генерацію. Перевіряти потрібно саме згенерований файл, а не лише текст у вікні налаштувань. Оскільки поточні Page Object і Page Component мають однакову основу, одного file template достатньо. Окремі шаблони варто додавати лише тоді, коли їхня структура реально розійдеться.
Один метод класу може викликати інший через `self.get_name()` і використати повернене значення. Після створення екземпляра з обов’язковим аргументом викликається публічний метод, а внутрішні деталі залишаються в класі. Підсумкова модель: локальні змінні живуть у функції; атрибути екземпляра доступні методам через `self`; модульні значення доступні коду після їх оголошення. Подальша практика — брати конкретну задачу автоматизації, експериментувати з одним типом у короткому файлі, а потім переносити перевірений вираз у тест.
Після успішного запуску тест перейменовується відповідно до перевірюваної поведінки. Для ще одного повторюваного фрагмента створюється простий live template, який розгортається в `return self`. Це підтримує ланцюжкові виклики Page Object без повторного ручного набору. Плагіни не є основою цього процесу. У викладача встановлений Junie, але частіше для окремих задач використовується Claude Code. Головний приріст швидкості в уроці дають штатні засоби PyCharm: пошук у Settings, keymap, рефакторинги та шаблони. Параметри сторонніх плагінів варто змінювати лише під реальну потребу. Підсумкова модель трьох механізмів: - **postfix template** застосовується після виразу через крапку та обгортає або перетворює цей вираз; - **live template** розгортає за абревіатурою блок коду в позиції курсора; - **file template** створює новий файл із готовою структурою. На практиці postfix зручний для `locator` або `expect`, live template — для `page.pause()`, `get_by_role()` і повторюваних методів, а file template — для Page Object. Ці механізми доповнюють один одного й не потребують зовнішнього генератора.