💻 Примеры: первые тесты

← К оглавлению урока

⚡ Первый тест за 4 строки

from playwright.sync_api import Page, expect

def test_open(page: Page):
    page.goto("https://playwright.dev/")
    expect(page).to_have_title(__import__("re").compile("Playwright"))

Пример 1. Первый тест: открыть страницу и проверить заголовок

Тест — обычная pytest-функция, принимающая фикстуру page (её даёт плагин pytest-playwright).

# test_first.py
import re
from playwright.sync_api import Page, expect

def test_title(page: Page):
    page.goto("https://playwright.dev/")
    # to_have_title принимает строку или регулярное выражение
    expect(page).to_have_title(re.compile("Playwright"))

Запуск: pytest test_first.py (headless) или pytest test_first.py --headed (видимый браузер).

Пример 2. Клик и проверка результата

Открываем сайт-песочницу и кликаем по ссылке. Авто-ожидания делают WebDriverWait ненужным.

# test_navigation.py
from playwright.sync_api import Page, expect

def test_get_started_link(page: Page):
    page.goto("https://playwright.dev/")

    # Playwright сам дождётся кликабельности ссылки
    page.get_by_role("link", name="Get started").click()

    # web-first проверка: ждёт появления заголовка
    expect(page.get_by_role("heading", name="Installation")).to_be_visible()

Пример 3. Скриншот

# test_screenshot.py
from playwright.sync_api import Page

def test_make_screenshot(page: Page):
    page.goto("https://example.com")
    page.screenshot(path="example.png", full_page=True)

Пример 4. Запись теста через codegen

Откройте инспектор записи — кликайте по сайту, Playwright сгенерирует код теста:

# Терминал
playwright codegen https://playwright.dev/

В открывшемся окне выполняйте действия — в панели появится готовый Python-код, который можно скопировать в тест и причесать.

Совет: codegen — лучший способ узнать «правильный» локатор. Он предпочитает get_by_role / get_by_text — устойчивые, user-facing локаторы (подробно в уроке 18).

Пример 5. Выбор браузера

# Терминал
pytest                      # Chromium (по умолчанию)
pytest --browser firefox    # Firefox
pytest --browser webkit     # WebKit (движок Safari)
pytest --headed --slowmo 500  # видимый браузер, замедление 0.5с
⚠️ Вывод и поведение зависят от версии Playwright. Проверяйте на странице запуска тестов.