Spec-Zone.ru › Playwright

Написание тестов

Введение​

Тесты Playwright просты: они выполняют действия и проверяют состояние на соответствие ожиданиям.

Playwright автоматически ожидает успешного прохождения проверок возможности взаимодействия, прежде чем выполнить каждое действие. Вам не нужно добавлять ручные ожидания или разбираться с состояниями гонки. Проверки Playwright предназначены для описания ожиданий, которые со временем будут выполнены, что позволяет избежать нестабильных тайм-аутов и гонок при проверках.

Вы узнаете

  • Как написать первый тест
  • Как выполнять действия
  • Как использовать проверки
  • Как тесты выполняются изолированно
  • Как использовать хуки тестов

Первый тест​

Посмотрите следующий пример, чтобы узнать, как написать тест.

import { test, expect } from '@playwright/test';

test('has title', async ({ page }) => {
  await page.goto('https://playwright.dev/');

  // Expect a title "to contain" a substring.
  await expect(page).toHaveTitle(/Playwright/);
});

test('get started link', async ({ page }) => {
  await page.goto('https://playwright.dev/');

  // Click the get started link.
  await page.getByRole('link', { name: 'Get started' }).click();

  // Expects page to have a heading with the name of Installation.
  await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible();
});
примечание

Добавьте // @ts-check в начало каждого файла тестов при использовании JavaScript в VS Code, чтобы включить автоматическую проверку типов.

Действия​

Навигация​

Большинство тестов начинается с перехода по URL. Затем тест взаимодействует с элементами страницы.

await page.goto('https://playwright.dev/');

Прежде чем продолжить, Playwright ожидает, пока страница достигнет состояния загрузки. Подробнее о параметрах page.goto().

Взаимодействия​

Чтобы выполнять действия, сначала нужно найти элементы. Для этого Playwright использует API локаторов. Локаторы позволяют находить элементы на странице в любой момент. Подробнее о различных типах доступных локаторов.

Перед выполнением действия Playwright ожидает, пока элемент станет доступным для взаимодействия, поэтому вам не нужно ждать его доступности.

// Create a locator.
const getStarted = page.getByRole('link', { name: 'Get started' });

// Click it.
await getStarted.click();

В большинстве случаев это записывается в одну строку:

await page.getByRole('link', { name: 'Get started' }).click();

Основные действия​

Вот самые популярные действия Playwright. Полный список см. в разделе API Locator.

Действие Описание
locator.check() Установить флажок
locator.click() Щёлкнуть по элементу
locator.uncheck() Снять флажок
locator.hover() Навести указатель мыши на элемент
locator.fill() Заполнить поле формы, ввести текст
locator.focus() Установить фокус на элемент
locator.press() Нажать одну клавишу
locator.setInputFiles() Выбрать файлы для загрузки
locator.selectOption() Выбрать вариант из раскрывающегося списка

Проверки​

Playwright включает проверки тестов в виде функции expect. Чтобы выполнить проверку, вызовите expect(value) и выберите сопоставитель, соответствующий ожиданию.

В Playwright есть асинхронные сопоставители, которые ожидают выполнения нужного условия. Благодаря им тесты становятся стабильными и надёжными. Например, этот код ожидает, пока заголовок страницы не будет содержать "Playwright":

await expect(page).toHaveTitle(/Playwright/);

Вот самые популярные асинхронные проверки. Полный список см. в руководстве по проверкам:

Проверка Описание
expect(locator).toBeChecked() Флажок установлен
expect(locator).toBeEnabled() Элемент управления активен
expect(locator).toBeVisible() Элемент виден
expect(locator).toContainText() Элемент содержит текст
expect(locator).toHaveAttribute() У элемента есть атрибут
expect(locator).toHaveCount() Список элементов содержит указанное количество элементов
expect(locator).toHaveText() Текст элемента соответствует ожидаемому
expect(locator).toHaveValue() У элемента ввода есть значение
expect(page).toHaveTitle() У страницы есть заголовок
expect(page).toHaveURL() У страницы есть URL

В Playwright также есть универсальные сопоставители, например toEqual, toContain, toBeTruthy, с помощью которых можно проверять любые условия. Эти проверки не используют ключевое слово await, поскольку выполняют немедленную синхронную проверку уже доступных значений.

expect(success).toBeTruthy();

Изоляция тестов​

Playwright Test основан на концепции фикстур тестов, например встроенной фикстуры page, которая передаётся тесту. Страницы изолированы друг от друга благодаря контексту браузера, эквивалентному новому профилю браузера. Каждый тест запускается в чистой среде, даже если несколько тестов выполняются в одном браузере.

import { test } from '@playwright/test';

test('example test', async ({ page }) => {
  // "page" belongs to an isolated BrowserContext, created for this specific test.
});

test('another test', async ({ page }) => {
  // "page" in this second test is completely isolated from the first test.
});

Использование хуков тестов​

Можно использовать различные хуки тестов, например test.describe для объявления группы тестов, а также test.beforeEach и test.afterEach, которые выполняются до/после каждого теста. К другим хукам относятся test.beforeAll и test.afterAll, которые выполняются один раз для каждого рабочего процесса до/после всех тестов.

import { test, expect } from '@playwright/test';

test.describe('navigation', () => {
  test.beforeEach(async ({ page }) => {
    // Go to the starting url before each test.
    await page.goto('https://playwright.dev/');
  });

  test('main navigation', async ({ page }) => {
    // Assertions use the expect API.
    await expect(page).toHaveURL('https://playwright.dev/');
  });
});

Что дальше​

  • Запуск одного или нескольких тестов, запуск в видимом режиме
  • Создание тестов с помощью Codegen
  • Просмотр трассировки тестов
  • Знакомство с режимом UI
  • Запуск тестов в CI с помощью GitHub Actions

© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/writing-tests

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API