THREADQA
    THREADQA
    Главная
    Курсы
    Java QA AutomationNEW
    Новый курс · уже можно купить
    Python QA Automation
    Pytest, Playwright, Docker
    iOS QA Automation
    XCTest, XCUITest, Fastlane
    Все курсы
    Сравнить Java / Python / iOS
    Практика
    Мок собеседование
    Тренировка перед реальным интервью
    XPath Practice Hub
    Тренажёр XPath-запросов
    Roadmap
    Путь QA-инженера
    Тренажёры
    SQL, Git, Docker, Linux, тест-дизайн
    QA игры
    8 мини-игр для тестировщика
    XPath Dinner
    Практика XPath в игровом формате
    Каталог инструментов
    Инструменты тестирования и сравнения
    Глоссарий ИИ-тестирования
    LLM, RAG, метрики, evals
    С чего начать
    Блог
    FAQ
    Для компаний
    1. Домой
    2. Инструменты тестирования
    3. Playwright
    Автоматизация UIСредний

    Playwright
    что это и как начать

    Playwright — open-source фреймворк от Microsoft для автоматизации браузеров и e2e-тестирования. Управляет Chromium, Firefox и WebKit через единый API, сам ждёт готовности элементов и умеет записывать трассировку упавших тестов. Работает на TypeScript/JavaScript, Python, Java и .NET.

    Автор: Олег Пендрак · Обновлено 19 сентября 2026 г.

    Когда выбирать Playwright

    Подходит

    • Новый проект по автоматизации UI — не нужно тащить наследие Selenium.
    • Нужны параллельный запуск и изоляция тестов из коробки (каждый тест получает свой browser context).
    • Важна отладка: trace viewer показывает шаги, DOM, сеть и скриншоты упавшего теста.
    • Нужно тестировать в Chromium, Firefox и WebKit одним кодом.

    Не подходит

    • Нужна поддержка очень старых браузеров (IE, старые версии Safari) — здесь остаётся Selenium.
    • Вся команда уже глубоко в Selenium Grid и не готова переписывать инфраструктуру.
    • Нужно автоматизировать нативные мобильные приложения — для этого Appium, Playwright тестирует только веб.

    Установка

    TypeScript
    npm init playwright@latest
    Python
    pip install pytest-playwright && playwright install

    Примеры тестов

    Первый тест: поиск на сайте

    tests/search.spec.ts
    1import { test, expect } from '@playwright/test'
    2
    3test('поиск находит документацию', async ({ page }) => {
    4  await page.goto('https://playwright.dev')
    5
    6  await page.getByRole('link', { name: 'Get started' }).click()
    7
    8  await expect(page).toHaveURL(/intro/)
    9  await expect(
    10    page.getByRole('heading', { name: 'Installation' }),
    11  ).toBeVisible()
    12})

    Локаторы по роли (getByRole) устойчивее CSS-селекторов, а expect сам ждёт условия — явные sleep не нужны.

    Тот же тест на Python

    tests/test_search.py
    1import re
    2from playwright.sync_api import Page, expect
    3
    4
    5def test_docs_opens(page: Page):
    6    page.goto("https://playwright.dev")
    7
    8    page.get_by_role("link", name="Get started").click()
    9
    10    expect(page).to_have_url(re.compile(r"intro"))
    11    expect(page.get_by_role("heading", name="Installation")).to_be_visible()

    Фикстура page приходит из pytest-playwright, браузер запускается и закрывается автоматически.

    Мок сетевого запроса

    tests/mock-api.spec.ts
    1import { test, expect } from '@playwright/test'
    2
    3test('список пуст, если API вернул []', async ({ page }) => {
    4  await page.route('**/api/items', (route) =>
    5    route.fulfill({ json: [] }),
    6  )
    7
    8  await page.goto('/items')
    9
    10  await expect(page.getByText('Ничего не найдено')).toBeVisible()
    11})

    page.route подменяет ответ бэкенда — так проверяют пустые состояния и ошибки без обращения к реальному API.

    Типичные ошибки

    Селекторы по CSS-классам
    Классы меняются при каждой вёрстке. Используйте getByRole, getByLabel, getByTestId — тест переживёт редизайн.
    waitForTimeout вместо ожиданий
    Фиксированные паузы делают тесты медленными и всё равно флакают. Ждите условие: expect(...).toBeVisible(), waitForResponse.
    Общее состояние между тестами
    Логин в каждом тесте через UI тормозит прогон. Сохраняйте storageState один раз и переиспользуйте.
    Retries как способ скрыть нестабильность
    retries в CI полезны, но если тест проходит только со второй попытки — разберитесь в причине по trace, а не увеличивайте счётчик.

    Вопросы на собеседовании по Playwright

    • Чем Playwright отличается от Selenium и почему у него нет явных ожиданий?
    • Что такое browser context и зачем он нужен для изоляции тестов?
    • Как отладить упавший в CI тест? (trace viewer, скриншоты, видео)
    • Как замокать сетевой запрос и проверить обработку ошибки 500?

    Отработать ответы можно на мок-собеседовании.

    Частые вопросы

    Playwright лучше Selenium?

    Для новых проектов чаще да: встроенные автоожидания, трассировка и параллелизм уменьшают нестабильность и объём вспомогательного кода. Selenium остаётся уместным для legacy-проектов, старых браузеров и команд с готовым Selenium Grid.

    На каком языке писать тесты на Playwright?

    TypeScript — основной и самый полный вариант: там первыми появляются новые возможности и лучший тест-раннер. Python удобен, если команда уже использует pytest. Java подходит для проектов на JUnit, но экосистема вокруг неё меньше.

    Нужно ли знать программирование, чтобы начать?

    Базовый уровень нужен: переменные, функции, async/await для TypeScript. Codegen (npx playwright codegen) помогает записать первый тест, но для поддерживаемых тестов придётся писать код руками.

    Можно ли тестировать API через Playwright?

    Да, есть встроенный клиент request (APIRequestContext). Он удобен для подготовки данных и проверок рядом с UI-тестами, но для отдельного API-набора обычно берут REST Assured, requests или Supertest.

    🎭

    Playwright

    playwright.dev

    Современный стандарт e2e-тестирования от Microsoft. TypeScript, Python, Java. Автоожидание, трассировка, параллелизм.

    TypeScriptPythonJava
    Официальный сайт

    На странице

    • Когда выбирать
    • Установка
    • Примеры тестов
    • Типичные ошибки
    • Собеседование
    • Частые вопросы

    Смотрите также

    • 🌐Selenium WebDriver
    • 🌲Cypress
    • 🎭Playwright Test (VS Code)
    • 📈Allure Report
    Начни бесплатно

    Изучай инструменты на практике

    Курсы ThreadQA по Selenium, REST Assured, Appium и другим инструментам — с реальными проектами и поддержкой ментора.

    Практика на реальных проектахПоддержка ментораСертификат по окончании
    Начать обучение бесплатно
    Смотреть курсы·Мок-собеседование
    ✓ Доступ навсегда✓ Оплата через СБП✓ Олег отвечает лично✓ Оплата частями от партнёров СБП
    Возврат — по условиям оферты
    THREADQAПлатформа QA Automation

    О платформе

    Обучаем автоматизации тестирования на Java, Python и iOS. Практические курсы, roadmap, тренажёры и персональные мок-интервью.

    Онлайн 24/7

    Курсы

    • Java QA AutomationNEW
    • Python QA Automation
    • iOS QA Automation
    • Про ThreadQA

    Услуги

    • Мок-собеседования

    Инструменты

    • Roadmap QA
    • Тренажёры
    • QA игры
    • Тренажёр XPath
    • XPath Diner
    • Каталог инструментов
    • Глоссарий ИИ-тестирования

    Контакты

    • Email
      info@threadqa.ru
    • Telegram
      @penolegrus
    Публичная офертаПолитика конфиденциальностиУсловия использования
    © 2026·ThreadQA LMS·Все права защищены