Playwright для QA-инженеров
Полный курс по Playwright и TypeScript для QA-инженеров: локаторы, ассерты, автоожидания и таймауты, все типовые элементы интерфейса, Page Object Model, фикстуры, конфигурация и проекты, переиспользование авторизации, артефакты и отчёты, визуальное тестирование, API-запросы и моки, параллельность и нестабильные тесты, Docker и CI. Каждая тема даётся как боль, механизм и цена. Материал курса — на английском.
Занятие — на вашем языке: его ведёт ассистент.
- Материал: английский
- Экзамен: английский — сдаётся на сайте, без перевода
Как это устроено
Ассистент берёт материал курса с нашего сервера и ведёт занятие на вашем языке.
Экзамен сдаётся на сайте, без ассистента. Вопросы экзамена не переводятся: так решено для всех курсов.
Путь по курсу
· юнитов: 27порядок свободный · ступени ниже — тот порядок, который предлагает автор, а не условиеВид: карта · ступени
Ступень 1
~1,2 ч
1 · Core
Почему Playwright и что он на самом деле делает
~1,2 ч
Ступень 2
~2,9 ч
Core · по замыслу автора — после «Почему Playwright и что он на самом деле делает»
Ступень 3
~1,8 ч
4 · Core · по замыслу автора — после «Установка Playwright и структура проекта»
Запуск и отладка: CLI, UI mode, Inspector, codegen, Trace Viewer
~1,8 ч
Ступень 4
~1,2 ч
5 · Core · по замыслу автора — после «Запуск и отладка: CLI, UI mode, Inspector, codegen, Trace Viewer»
Анатомия теста: describe, хуки, шаги, аннотации
~1,2 ч
Ступень 5
~1,2 ч
6 · Core · по замыслу автора — после «Анатомия теста: describe, хуки, шаги, аннотации»
Синтаксис локаторов: CSS, текст, XPath и цепочки
~1,2 ч
Ступень 6
~1,7 ч
7 · Core · по замыслу автора — после «Синтаксис локаторов: CSS, текст, XPath и цепочки»
Локаторы, ориентированные на пользователя, и правило строгости
~1,7 ч
Ступень 7
~2,9 ч
Core · по замыслу автора — после «Локаторы, ориентированные на пользователя, и правило строгости»
Ступень 8
~3 ч
10 · Core · по замыслу автора — после «Ассерты и извлечение значений»
Автоожидание и иерархия таймаутов
~1,8 ч
11 · UI components · по замыслу автора — после любого из: «Фильтрация, связи и списки элементов», «Ассерты и извлечение значений»
Текстовые поля, клавиатура и мышь
~1,2 ч
Ступень 9
~9,8 ч
12 · UI components · по замыслу автора — после «Текстовые поля, клавиатура и мышь»
Чекбоксы, радиокнопки, выпадающие списки и подсказки
~1,7 ч
13 · UI components · по замыслу автора — после «Текстовые поля, клавиатура и мышь»
~1,7 ч
14 · UI components · по замыслу автора — после «Текстовые поля, клавиатура и мышь»
Поля выбора даты, слайдеры и iframe
~1,8 ч
15 · Architecture · по замыслу автора — после «Автоожидание и иерархия таймаутов»
Page Object Model: первые объекты
~1,7 ч
20 · Evidence · по замыслу автора — после «Автоожидание и иерархия таймаутов»
Доказательства: скриншоты, видео, трейсы и репортеры
~1,3 ч
22 · API · по замыслу автора — после «Автоожидание и иерархия таймаутов»
~1,7 ч
Ступень 10
~4,7 ч
16 · Architecture · по замыслу автора — после «Page Object Model: первые объекты»
Архитектура страниц: базовые хелперы и менеджер страниц
~1,7 ч
21 · Evidence · по замыслу автора — после «Доказательства: скриншоты, видео, трейсы и репортеры»
Визуальное регрессионное тестирование
~1,3 ч
23 · API · по замыслу автора — после «API-запросы в Playwright»
~1,8 ч
Ступень 11
~1,8 ч
17 · Architecture · по замыслу автора — после «Архитектура страниц: базовые хелперы и менеджер страниц»
Фикстуры: встроенные, пользовательские и уровня воркера
~1,8 ч
Ступень 12
~1,7 ч
18 · Architecture · по замыслу автора — после «Фикстуры: встроенные, пользовательские и уровня воркера»
Конфигурация, проекты, окружения и мобильная эмуляция
~1,7 ч
Ступень 13
~3,5 ч
по замыслу автора — после «Конфигурация, проекты, окружения и мобильная эмуляция»
19 · Architecture
Аутентификация один раз: setup-проекты, storageState и вход через API
~1,7 ч
24 · Scale
Параллельность, повторы, теги и нестабильность
~1,8 ч
Ступень 14
~1,7 ч
25 · Scale · по замыслу автора — после 2 из: «Аутентификация один раз: setup-проекты, storageState и вход через API», «Доказательства: скриншоты, видео, трейсы и репортеры», «Параллельность, повторы, теги и нестабильность»
Docker и непрерывная интеграция
~1,7 ч
Ступень 15
~3,4 ч
Review
26 · по замыслу автора — после 3 из: «Поля выбора даты, слайдеры и iframe», «Аутентификация один раз: setup-проекты, storageState и вход через API», «Визуальное регрессионное тестирование», «Перехват и мокирование сети», «Docker и непрерывная интеграция»
Пары, которые путают, и готовность к экзамену
~1,7 ч
27 · по замыслу автора — после «Docker и непрерывная интеграция»
Практика поставки: стратегия, ревью и доказательства на проекте
~1,7 ч
Экзамен
закрыт · записаться на курс
финал · в браузере, без ассистента
Экзамен
Путь по курсу словами
- Ступень 1 · Почему Playwright и что он на самом деле делает — ~1,2 ч
- Ступень 2 · TypeScript, который действительно нужен для кода тестов — по замыслу автора — после «Почему Playwright и что он на самом деле делает»; ~1,7 ч
- Ступень 2 · Установка Playwright и структура проекта — по замыслу автора — после «Почему Playwright и что он на самом деле делает»; ~1,2 ч
- Ступень 3 · Запуск и отладка: CLI, UI mode, Inspector, codegen, Trace Viewer — по замыслу автора — после «Установка Playwright и структура проекта»; ~1,8 ч
- Ступень 4 · Анатомия теста: describe, хуки, шаги, аннотации — по замыслу автора — после «Запуск и отладка: CLI, UI mode, Inspector, codegen, Trace Viewer»; ~1,2 ч
- Ступень 5 · Синтаксис локаторов: CSS, текст, XPath и цепочки — по замыслу автора — после «Анатомия теста: describe, хуки, шаги, аннотации»; ~1,2 ч
- Ступень 6 · Локаторы, ориентированные на пользователя, и правило строгости — по замыслу автора — после «Синтаксис локаторов: CSS, текст, XPath и цепочки»; ~1,7 ч
- Ступень 7 · Фильтрация, связи и списки элементов — по замыслу автора — после «Локаторы, ориентированные на пользователя, и правило строгости»; ~1,2 ч
- Ступень 7 · Ассерты и извлечение значений — по замыслу автора — после «Локаторы, ориентированные на пользователя, и правило строгости»; ~1,7 ч
- Ступень 8 · Автоожидание и иерархия таймаутов — по замыслу автора — после «Ассерты и извлечение значений»; ~1,8 ч
- Ступень 8 · Текстовые поля, клавиатура и мышь — по замыслу автора — после любого из: «Фильтрация, связи и списки элементов», «Ассерты и извлечение значений»; ~1,2 ч
- Ступень 9 · Чекбоксы, радиокнопки, выпадающие списки и подсказки — по замыслу автора — после «Текстовые поля, клавиатура и мышь»; ~1,7 ч
- Ступень 9 · Диалоги, алерты и веб-таблицы — по замыслу автора — после «Текстовые поля, клавиатура и мышь»; ~1,7 ч
- Ступень 9 · Поля выбора даты, слайдеры и iframe — по замыслу автора — после «Текстовые поля, клавиатура и мышь»; ~1,8 ч
- Ступень 9 · Page Object Model: первые объекты — по замыслу автора — после «Автоожидание и иерархия таймаутов»; ~1,7 ч
- Ступень 9 · Доказательства: скриншоты, видео, трейсы и репортеры — по замыслу автора — после «Автоожидание и иерархия таймаутов»; ~1,3 ч
- Ступень 9 · API-запросы в Playwright — по замыслу автора — после «Автоожидание и иерархия таймаутов»; ~1,7 ч
- Ступень 10 · Архитектура страниц: базовые хелперы и менеджер страниц — по замыслу автора — после «Page Object Model: первые объекты»; ~1,7 ч
- Ступень 10 · Визуальное регрессионное тестирование — по замыслу автора — после «Доказательства: скриншоты, видео, трейсы и репортеры»; ~1,3 ч
- Ступень 10 · Перехват и мокирование сети — по замыслу автора — после «API-запросы в Playwright»; ~1,8 ч
- Ступень 11 · Фикстуры: встроенные, пользовательские и уровня воркера — по замыслу автора — после «Архитектура страниц: базовые хелперы и менеджер страниц»; ~1,8 ч
- Ступень 12 · Конфигурация, проекты, окружения и мобильная эмуляция — по замыслу автора — после «Фикстуры: встроенные, пользовательские и уровня воркера»; ~1,7 ч
- Ступень 13 · Аутентификация один раз: setup-проекты, storageState и вход через API — по замыслу автора — после «Конфигурация, проекты, окружения и мобильная эмуляция»; ~1,7 ч
- Ступень 13 · Параллельность, повторы, теги и нестабильность — по замыслу автора — после «Конфигурация, проекты, окружения и мобильная эмуляция»; ~1,8 ч
- Ступень 14 · Docker и непрерывная интеграция — по замыслу автора — после 2 из: «Аутентификация один раз: setup-проекты, storageState и вход через API», «Доказательства: скриншоты, видео, трейсы и репортеры», «Параллельность, повторы, теги и нестабильность»; ~1,7 ч
- Ступень 15 · Пары, которые путают, и готовность к экзамену — по замыслу автора — после 3 из: «Поля выбора даты, слайдеры и iframe», «Аутентификация один раз: setup-проекты, storageState и вход через API», «Визуальное регрессионное тестирование», «Перехват и мокирование сети», «Docker и непрерывная интеграция»; ~1,7 ч
- Ступень 15 · Практика поставки: стратегия, ревью и доказательства на проекте — по замыслу автора — после «Docker и непрерывная интеграция»; необязательный; ~1,7 ч
Программа · 27 юнитов
| 1 | Почему Playwright и что он на самом деле делает Объяснить две причины сбоев прежней UI-автоматизации — нестабильность из-за тайминга и накладные расходы на драйверы — и как архитектура Playwright устраняет каждую | ~1,2 ч |
| 2 | TypeScript, который действительно нужен для кода тестов Читать и писать конструкции JavaScript, которые встречаются в каждом тесте Playwright: const/let, стрелочные функции, шаблонные строки, деструктуризацию, объекты и массивы | ~1,7 ч |
| 3 | Установка Playwright и структура проекта Установить Playwright в новый репозиторий и в существующий фронтенд-репозиторий, не сломав ни тот, ни другой | ~1,2 ч |
| 4 | Запуск и отладка: CLI, UI mode, Inspector, codegen, Trace Viewer Запускать из командной строки весь набор, папку, файл, отдельный тест, проект, последние упавшие тесты и только тесты, затронутые изменением | ~1,8 ч |
| 5 | Анатомия теста: describe, хуки, шаги, аннотации Структурировать spec-файл блоками describe и четырьмя хуками и сказать, когда каждый хук выполняется относительно воркеров | ~1,2 ч |
| 6 | Синтаксис локаторов: CSS, текст, XPath и цепочки Читать словарь DOM, от которого зависит локатор: тег, атрибут, класс, id, текстовый узел, родительский и дочерний элемент | ~1,2 ч |
| 7 | Локаторы, ориентированные на пользователя, и правило строгости Применять порядок приоритета локаторов: роль, метка, плейсхолдер, текст, alt, title, test id, CSS или XPath — в последнюю очередь | ~1,7 ч |
| 8 | Фильтрация, связи и списки элементов Использовать filter() с hasText, hasNotText, has, hasNot и visible, чтобы сузить набор по содержимому, по потомку или по видимости | ~1,2 ч |
| 9 | Ассерты и извлечение значений Отличать web-first ассерты от обычных и по умолчанию выбирать первые | ~1,7 ч |
| 10 | Автоожидание и иерархия таймаутов Перечислить проверки готовности к действию и объяснить, какое действие требует каких из них | ~1,8 ч |
| 11 | Текстовые поля, клавиатура и мышь Выбирать между fill, clear и pressSequentially по событиям, которые отправляет каждый из них, и говорить, когда нужен посимвольный ввод | ~1,2 ч |
| 12 | Чекбоксы, радиокнопки, выпадающие списки и подсказки Правильно использовать check, uncheck и setChecked и обосновывать force: true для визуально скрытого нативного input | ~1,7 ч |
| 13 | Диалоги, алерты и веб-таблицы Объяснить, что Playwright делает с нативным диалогом, когда слушатель не зарегистрирован, и что обязан сделать зарегистрированный слушатель | ~1,7 ч |
| 14 | Поля выбора даты, слайдеры и iframe Автоматизировать поле выбора даты вводом с клавиатуры, где это возможно, и навигацией по календарю, где нет | ~1,8 ч |
| 15 | Page Object Model: первые объекты Назвать конкретное дублирование, которое устраняет page object, и конкретное изменение, которое он делает дешёвым | ~1,7 ч |
| 16 | Архитектура страниц: базовые хелперы и менеджер страниц Выносить общее поведение в неглубокий базовый класс — один уровень наследования — и дальше использовать композицию | ~1,7 ч |
| 17 | Фикстуры: встроенные, пользовательские и уровня воркера Назвать встроенные фикстуры и сказать, что даёт каждая, и объяснить, откуда берётся testInfo (это не фикстура) | ~1,8 ч |
| 18 | Конфигурация, проекты, окружения и мобильная эмуляция Использовать проекты, чтобы запускать одни и те же тесты в разных браузерах, на устройствах, под ролями и в окружениях ENGAGE, и ограничивать параллельность проекта его собственной настройкой workers | ~1,7 ч |
| 19 | Аутентификация один раз: setup-проекты, storageState и вход через API Построить setup-проект, который один раз проходит аутентификацию и сохраняет сессию в storageState, включая IndexedDB, когда библиотека идентификации хранит токены там | ~1,7 ч |
| 20 | Доказательства: скриншоты, видео, трейсы и репортеры Делать скриншоты страницы, элемента и в буфер и прикладывать их к отчёту | ~1,3 ч |
| 21 | Визуальное регрессионное тестирование Писать сравнение скриншотов с помощью toHaveScreenshot и управлять эталонами через режимы updateSnapshots и шаблоны путей | ~1,3 ч |
| 22 | API-запросы в Playwright Использовать фикстуру request для написания API-тестов, проверяя через await expect(response).toBeOK(), а также заголовки и тело | ~1,7 ч |
| 23 | Перехват и мокирование сети Выбирать между fulfill, continue, abort и fallback для перехваченного запроса и объяснять порядок обработчиков | ~1,8 ч |
| 24 | Параллельность, повторы, теги и нестабильность Объяснить, что такое воркер, как работа распределяется с fullyParallel и без него и каково количество воркеров по умолчанию | ~1,8 ч |
| 25 | Docker и непрерывная интеграция Запускать набор в официальном образе Playwright с рекомендуемыми флагами Docker и держать тег образа равным установленной версии Playwright | ~1,7 ч |
| 26 | Пары, которые путают, и готовность к экзамену Разводить пары понятий Playwright, которые чаще всего путают, называя одно правило, разделяющее каждую пару | ~1,7 ч |
| 27 | Практика поставки: стратегия, ревью и доказательства на проекте Решать, что автоматизировать и на каком уровне — модульные тесты, API, UI, визуальные проверки, доступность, пользовательские сценарии — и отстаивать это решение перед клиентом | ~1,7 ч |
