Тестирование веб-приложений с Playwright

Тестирование веб-приложений с Playwright

В этой статье мы подробно разберем Playwright, изучим его функции, преимущества, установку и пошаговое руководство по началу работы с первым тестом.

1. Что такое Playwright?

Playwright — это библиотека с открытым исходным кодом, разработанная Microsoft с использованием TypeScript. Это универсальный инструмент, который позволяет автоматизировать тестирование веб-приложений в браузерах Chromium, Firefox и WebKit, используя единый API. Это значит, что вы можете обеспечить работоспособность своего приложения на разных браузерах и не писать отдельные тесты для каждого из них. Одной из ключевых особенностей Playwright является его способность оставаться современным, мощным, надежным и быстрым инструментом.

Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ

2. Зачем использовать Playwright?

Сквозное тестирование и кроссбраузерная совместимость

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

Богатый набор функций

Playwright оснащен множеством функций, которые облегчают тестирование. Некоторые из них:

  • Headless-режим: выполнение тестов в headless-режиме для более быстрой и эффективной работы. Headless (“безголовый”) это режим работы браузера без графического интерфейса.
  • Скриншоты: захват скриншотов во время тестов для визуального анализа состояния приложения.
  • Запись видео: запись тестовых сессий для их последующего анализа.
  • Мокирование сети: имитация сетевых условий и ответов для тщательного тестирования.

Поддержка нескольких языков программирования

Playwright предлагает удобный и интуитивно понятный API с поддержкой разных языков программирования, таких как JavaScript, Python, Java и C#. Это позволяет вашей команде использовать тот язык, который им удобен, оставаясь при этом в рамках возможностей Playwright.

Примечание редакции: вас также может заинтересовать статья “Быстрое и практическое введение в Playwright”

3. Как установить и использовать Playwright

Прежде чем приступить к первому тесту, необходимо установить Playwright. Вот как это сделать:

Требования

Playwright требует Node.js версии 10.15 или выше. Если у вас нет установленного Node.js, загрузите и установите его с официального сайта Node.js.

Установка

Вы можете установить Playwright с помощью npm или yarn, в зависимости от ваших предпочтений.
Вот команда для установки через npm:

npm init playwright@latest

После установки вы готовы начать писать и запускать тесты.

Создание тестового сценария

Чтобы создать тестовый сценарий, нужно импортировать модуль Playwright в ваш JavaScript файл:

const { chromium } = require('playwright');

(async () => {
  // ваш тест
})();

Теперь можно начинать писать первый тест.

4. Первый тест с Playwright

Создание браузера

Первый шаг — создание объекта Browser. Вы можете выбрать браузер Chromium, Firefox или WebKit. Также можно настроить такие параметры, как headless-режим, чтобы контролировать видимость браузера во время тестирования:

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

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

  // Ожидаем, что заголовок содержит подстроку.
  await expect(page).toHaveTitle(/Playwright/);
});

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

  // Клик по ссылке "Get started".
  await page.getByRole('link', { name: 'Get started' }).click();

  // Ожидаем, что на странице появится заголовок с текстом "Installation".
  await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible();
});

Навигация

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

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

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

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

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

// Создание локатора
const getStarted = page.getByRole('link', { name: 'Get started' });
// Клик по элементу
await getStarted.click();

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

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

6. Утверждения (assertions)

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

expect(success).toBeTruthy();

Также Playwright поддерживает асинхронные матчтеры, которые будут ожидать выполнения ожидаемого условия. Это делает тесты более надежными и устойчивыми.
Пример: этот код будет ждать, пока заголовок страницы не будет содержать строку “Playwright”:

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

7. Изоляция тестов

В Playwright Test используется концепция тестовых фикстур (fixtures). Одна из них — это встроенная фикстура страницы page, которая передаётся в тесты.

Каждый тест изолирован за счёт использования контекста браузера (Browser Context). Это как работа с новым, чистым профилем браузера для каждого теста. Даже если тесты выполняются в одном браузере, они всегда запускаются в свежей среде, чтобы избежать влияния друг на друга.

Пример теста tests/example.spec.ts:

test('basic test', async ({ page }) => {
  // ...
});

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

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

Пример:

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

test.describe('navigation', () => {
  test.beforeEach(async ({ page }) => {
    // Переход на начальный URL перед каждым тестом.
    await page.goto('https://playwright.dev/');
  });

  test('main navigation', async ({ page }) => {
    // Утверждения с использованием API expect.
    await expect(page).toHaveURL('https://playwright.dev/');
  });
});

9. Запуск тестов

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

Запуск в режиме UI

Запустите тесты в UI-режиме для улучшенного опыта с возможностью отладки во времени, режимом наблюдения и другими функциями:

npx playwright test --ui

Запуск через командную строку

  • Запуск всех тестов:
npx playwright test
  • Запуск одного тестового файла:
npx playwright test landing-page.spec.ts
  • Запуск тестового набора файлов:
npx playwright test tests/todo-page/ tests/landing-page/
  • Запуск файлов с определенными именами:
npx playwright test landing login
  • Запуск теста с определенным названием:
npx playwright test -g "add a todo item"
  • Запуск тестов в режиме с открытым окном браузера (headed mode):
npx playwright test landing-page.spec.ts --headed
  • Запуск тестов в определенном проекте:
npx playwright test landing-page.ts --project=chromium

Заключение

В этом подробном руководстве мы изучили Playwright — мощный инструмент для тестирования веб-приложений. Мы рассмотрели его возможности, преимущества, установку и создание первого теста.

Playwright упрощает кроссбраузерное тестирование и предоставляет множество полезных функций, что делает его ценным инструментом для разработчиков и тестировщиков.

Перевод статьи «Mastering Web Application Testing with Playwright: A Comprehensive Guide».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *