Playwright предоставляет множество инструментов для создания и выполнения тестов для веб-приложений. Одной из ключевых особенностей является возможность пошагового выполнения тестов, что позволяет разработчикам и тестировщикам тщательно отслеживать выполнение теста, анализировать ошибки и вносить коррективы в тестовую стратегию. Этот процесс важен как для отладки, так и для достижения более высоких стандартов качества.
Перед тем как приступить к пошаговому выполнению тестов, необходимо правильно настроить среду. Для этого необходимо установить Playwright и нужные зависимости.
Установить Playwright:
npm install playwrightДля выполнения тестов потребуется Node.js. После установки Playwright необходимо инициализировать проект с помощью команды:
npm init -yСледующий шаг — установка дополнительных инструментов для тестирования, таких как Jest, Mocha или встроенные средства Playwright. Например, для Mocha потребуется установить:
npm install mocha
Для Jest:
npm install jestДля начала рассмотрим базовый пример теста с Playwright. В простом тесте, выполненном на базе JavaScript, будет открыта веб-страница, выполнено взаимодействие с элементом и проверка его состояния.
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
const title = await page.title();
console.log('Page Title:', title);
await browser.close();
})();
Этот тест открывает страницу, проверяет заголовок и выводит его в консоль. Однако, если необходимо отследить шаги выполнения, можно использовать пошаговую отладку.
Playwright предоставляет несколько методов для пошагового выполнения
тестов. Один из них — использование функции pause(),
которая останавливает выполнение теста в любой точке.
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.click('text="More information"');
// Вставляем паузу перед следующими действиями
await page.pause();
const title = await page.title();
console.log('Page Title after click:', title);
await browser.close();
})();
После вызова page.pause() выполнение теста
приостановится, и появится интерфейс для пошагового анализа работы
теста. В этом режиме можно:
Пауза полезна для диагностики ошибок или анализа того, что происходит на каждой стадии выполнения теста.
Инспектор Playwright — это специальный инструмент, который позволяет просматривать взаимодействие с веб-страницей в реальном времени. Он позволяет отслеживать действия и манипуляции с элементами, а также анализировать, как и в какой последовательности выполняются команды.
Чтобы запустить инспектор, нужно использовать команду:
npx playwright codegen https://example.com
Эта команда открывает браузер и позволяет автоматически генерировать код для всех действий, которые вы будете выполнять на странице. Инспектор показывает, какой код будет сгенерирован для каждого клика, ввода текста или других взаимодействий. Это очень полезно при написании и отладке тестов, так как позволяет быстро увидеть результаты действий в коде.
expect и
assertОдной из полезных практик является использование ассертов для
проверки состояния элементов на странице после выполнения действий.
Playwright предоставляет встроенную поддержку ассертов через метод
expect, который позволяет проверять наличие элементов, их
текст, атрибуты и другие состояния.
Пример:
const { chromium, expect } = require('playwright');
(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.click('text="More information"');
// Проверка того, что ссылка открывает новую страницу
const newTitle = await page.title();
expect(newTitle).toBe('Example Domain');
await browser.close();
})();
В данном примере мы проверяем, что после клика на ссылку заголовок страницы изменился, что подтверждает успешное выполнение действия. Это очень полезно для пошагового выполнения, поскольку позволяет выявить возможные несоответствия на каждом этапе тестирования.
Для подробного анализа каждого шага теста, Playwright предоставляет
возможность логировать информацию о взаимодействиях с элементами
страницы. Для этого можно использовать console.log() или
встроенные методы Playwright, такие как
page.on('console', callback) для отслеживания вывода в
консоль.
Пример логирования действий:
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
page.on('console', msg => {
console.log('Console Message:', msg.text());
});
await page.goto('https://example.com');
await page.click('text="More information"');
await browser.close();
})();
Этот код будет выводить все сообщения консоли, которые генерируются в процессе выполнения теста, позволяя точно отслеживать, что происходит на каждом шаге.
Playwright поддерживает создание скриншотов и запись видео во время выполнения теста, что также может быть полезным для пошагового анализа. Для записи видео необходимо указать опцию в конфигурации:
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
await page.startVideoRecording({
path: 'test-video.mp4',
});
await page.goto('https://example.com');
await page.click('text="More information"');
await page.stopVideoRecording();
await browser.close();
})();
Такой подход позволяет зафиксировать весь процесс выполнения теста, включая все переходы и действия на странице. Это важно, когда нужно вернуться к конкретному моменту и понять, что именно пошло не так.
Пошаговое выполнение тестов с использованием Playwright является мощным инструментом для разработки и отладки автоматических тестов. Включение пауз, использование инспектора, логирование и создание скриншотов/видеозаписей позволяют глубже понять, как именно работают тесты и где могут возникать проблемы. Это критически важные практики, которые помогают обеспечивать высокое качество и надежность веб-приложений, избавляя тестировщиков от необходимости вручную проверять каждое действие и его результат.