Playwright — это инструмент для автоматизации браузерных тестов, разработанный компанией Microsoft. В отличие от других популярных фреймворков, таких как Selenium, Playwright поддерживает тестирование в нескольких браузерах, включая Chrome, Firefox и WebKit, что позволяет писать универсальные тесты, которые могут быть использованы для всех популярных браузеров.
Для начала работы с Playwright необходимо установить пакет
@playwright/test. Этот пакет включает в себя фреймворк для
тестирования, а также все необходимые инструменты для взаимодействия с
браузером. Установка осуществляется через npm:
npm install -D @playwright/test
После установки важно инициализировать проект, чтобы создать необходимые конфигурационные файлы:
npx playwright install
Этот процесс скачает браузеры для тестирования. Playwright поддерживает тестирование в Chromium, Firefox и WebKit, и вам нужно будет указать, какие именно браузеры вы хотите использовать в процессе тестирования.
С Playwright можно писать тесты, используя обычные функции
JavaScript. Все тесты пишутся в отдельные файлы, которые обычно
помещаются в каталог tests.
Пример простого теста:
import { test, expect } from '@playwright/test';
test('Тест на главную страницу', async ({ page }) => {
await page.goto('https://example.com');
const title = await page.title();
expect(title).toBe('Example Domain');
});
В этом примере создается тест, который выполняет следующие шаги:
https://example.com.Playwright взаимодействует с браузером через страницы (pages). Каждая страница — это окно браузера, и с ней можно работать с помощью различных методов API. Страница позволяет взаимодействовать с DOM, заполнять формы, делать клики и так далее.
const page = await browser.newPage();
await page.goto('https://example.com');
Для взаимодействия с элементами страницы Playwright предоставляет методы для поиска элементов с помощью различных селекторов (CSS, XPath и другие). Это позволяет точно указать, с каким элементом на странице будет производиться взаимодействие.
const button = await page.$('button#submit');
await button.click();
Playwright поддерживает асинхронную работу, что позволяет эффективно работать с динамическими элементами, загружающимися с задержкой, без необходимости использовать задержки вручную.
Ожидания играют важную роль в тестировании, особенно при работе с динамическими веб-страницами. Playwright позволяет ожидать появления элементов, их состояния или других изменений, что упрощает написание стабильных тестов.
Пример:
await page.waitForSelector('button#submit');
Здесь код ждет, пока элемент с селектором button#submit
не станет доступен на странице.
Контексты представляют собой изолированные экземпляры браузера. Каждый контекст может содержать несколько страниц, которые будут разделять состояние, куки и локальное хранилище. Контексты полезны при тестировании с несколькими пользователями или при необходимости изолировать тестовые данные.
const context = await browser.newContext();
const page = await context.newPage();
Playwright использует асинхронную модель работы, что позволяет эффективно выполнять множество действий в браузере параллельно. Все операции с браузером, такими как навигация, поиск элементов, клики и т. д., являются асинхронными.
const page = await browser.newPage();
await page.goto('https://example.com');
await page.click('button#submit');
Чтобы улучшить стабильность тестов, Playwright также позволяет управлять временем, например, можно изменять таймауты ожидания или имитировать замедление сети.
await page.waitForTimeout(1000); // Задержка на 1 секунду
Playwright тесно интегрирован с фреймворком для тестирования, что
позволяет создавать тестовые сценарии, которые могут быть выполнены
через командную строку или CI/CD pipeline. Основные функции фреймворка
включают поддержку различных ассертов, таких как expect, а
также работу с хуками, например beforeAll и
afterAll, для подготовки тестов.
Пример с хуками:
import { test, expect, beforeAll, afterAll } from '@playwright/test';
let browser;
beforeAll(async () => {
browser = await playwright.chromium.launch();
});
afterAll(async () => {
await browser.close();
});
test('Проверка главной страницы', async () => {
const page = await browser.newPage();
await page.goto('https://example.com');
const title = await page.title();
expect(title).toBe('Example Domain');
});
Playwright можно интегрировать в любой CI/CD процесс, поддерживая работу с такими системами, как Jenkins, GitHub Actions, GitLab CI и другие. Этот процесс включает в себя настройку окружения для запуска тестов в браузере, установку зависимостей и конфигурацию тестовых сценариев.
Для этого можно использовать команду
npx playwright test, чтобы запускать все тесты в рамках
определенной среды.
Playwright предоставляет несколько вариантов вывода результатов тестов. По умолчанию результаты тестов выводятся в консоль, но можно настроить различные форматы отчетности, такие как HTML, JSON или JUnit.
npx playwright test --reporter=html
Этот подход позволяет интегрировать результаты в сторонние системы мониторинга и отчетности.
Playwright представляет собой мощный и гибкий инструмент для автоматизации тестирования веб-приложений. С его помощью можно писать стабильные, быстрые и универсальные тесты, поддерживающие несколько браузеров. Возможности асинхронности, управления контекстами и поддержка CI/CD делают его отличным выбором для современного веб-тестирования.