Артефакты в контексте автоматизированного тестирования — это любые данные, сохраняемые во время выполнения тестов, которые помогают анализировать поведение приложения и выявлять ошибки. Puppeteer предоставляет гибкие возможности для создания таких артефактов: скриншоты, видео, логи сети, дампы DOM и многое другое. Эти данные позволяют не только отследить причину сбоя, но и документировать процесс тестирования.
Скриншоты — один из самых распространенных артефактов. Puppeteer позволяет делать как полноэкранные снимки страницы, так и отдельного элемента.
const puppeteer = require(&
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
// Полноэкранный скриншот
await page.screenshot({ path: 'screenshot-full.png', fullPage: true });
// Скриншот отдельного элемента
const element = await page.$('h1');
await element.screenshot({ path: 'screenshot-element.png' });
await browser.close();
})();
Ключевые моменты при работе со скриншотами:
Puppeteer позволяет перехватывать запросы и ответы сети, что дает возможность анализировать ошибки на уровне API или загрузки ресурсов.
await page.setRequestInterception(true);
page.on('request', request => {
console.log('Запрос:', request.url());
request.continue();
});
page.on('response', response => {
console.log('Ответ:', response.url(), response.status());
});
Практические советы:
Для сложных тестов полезно сохранять видео выполнения сценариев.
Puppeteer сам по себе не умеет напрямую записывать видео, но можно
использовать библиотеки вроде puppeteer-video-recorder или
интеграцию с ffmpeg.
const { PuppeteerScreenRecorder } = require('puppeteer-screen-recorder');
const browser = await puppeteer.launch();
const page = await browser.newPage();
const recorder = new PuppeteerScreenRecorder(page);
await recorder.start('test-video.mp4');
await page.goto('https://example.com');
await page.click('button#start');
await recorder.stop();
await browser.close();
Советы по видео-записям:
Иногда для диагностики ошибки важнее не внешний вид, а структура страницы и текущее состояние элементов. Puppeteer позволяет сохранять HTML или содержимое отдельных элементов:
const content = await page.content();
const fs = require('fs');
fs.writeFileSync('page-dump.html', content);
Рекомендации:
page.$eval.
Отчеты агрегируют артефакты и дают наглядное представление о результате тестирования. Puppeteer часто используют вместе с тестовыми фреймворками, например, Jest или Mocha, которые поддерживают генерацию HTML-отчетов. В отчет включаются:
Пример генерации отчета с Mocha и Mochawesome:
// npm install mocha mochawesome puppeteer
// package.json: "test": "mocha --reporter mochawesome"
describe('Пример теста', function () {
it('Проверка заголовка', async function () {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
const title = await page.title();
console.log('Заголовок страницы:', title);
await page.screenshot({ path: 'report-screenshot.png' });
await browser.close();
});
});
Особенности эффективного формирования отчетов:
Для крупных проектов важно автоматизировать процесс:
Автоматизация помогает не терять данные, упрощает отладку и обеспечивает повторяемость результатов.
Артефакты и отчеты — фундаментальные инструменты для качественного тестирования в Puppeteer, обеспечивающие прозрачность, детальность и воспроизводимость тестов. Их правильная организация позволяет быстро выявлять ошибки и документировать процессы без потери ключевой информации.