В этой статье мы подробно разберем 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) и выберите подходящий матчтер, который отражает ваше ожидание. Существуют общие матчтеры, такие как toEqual, toContain, toBeTruthy, которые можно использовать для утверждения различных условий:
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».
