Создание скриншотов является важной частью автоматизированного тестирования, позволяя фиксировать состояние приложения в момент выполнения теста. WebdriverIO предоставляет гибкие методы для захвата скриншотов как всего экрана, так и отдельных элементов страницы.
1. browser.saveScreenshot(filePath)
Метод сохраняет изображение текущего состояния окна браузера в
указанный путь. Формат файла определяется расширением, чаще всего
.png. Пример использования:
it('Сохраняет скриншот страницы', async () => {
await browser.url('https://example.com');
await browser.saveScreenshot('./screenshots/fullPage.png');
});
Ключевые моменты:
await.2. element.saveScreenshot(filePath)
Позволяет сохранить скриншот только конкретного элемента. Это особенно полезно для проверки визуального состояния виджетов, кнопок или других компонентов интерфейса.
const button = await $('#submitButton');
await button.saveScreenshot('./screenshots/button.png');
Особенности:
Для удобства хранения скриншотов рекомендуется создавать структурированные папки по тестам или страницам, например:
/screenshots
/loginPage
loginButton.png
loginForm.png
/dashboard
dashboardHeader.png
Можно автоматизировать создание папок через Node.js перед запуском теста:
import fs from 'fs';
import path from 'path';
const dir = './screenshots/loginPage';
if (!fs.existsSync(dir)){
fs.mkdirSync(dir, { recursive: true });
}
WebdriverIO позволяет автоматически сохранять скриншоты при падении
тестов через afterTest хук в конфигурации:
afterTest: async function(test, context, { error, result, duration, passed, retries }) {
if (!passed) {
await browser.saveScreenshot(`./screenshots/errors/${test.title.replace(/\s+/g, '_')}.png`);
}
}
Особенности:
Для длинных страниц можно использовать стратегию “full page
screenshot”, однако browser.saveScreenshot
захватывает только видимую область по умолчанию. Для полного скриншота
часто применяются сторонние решения:
webdriver-image-comparison плагина:import { compareScreen } from 'webdriver-image-comparison';
await browser.url('https://example.com');
await compareScreen('fullPage');
sharp..png
— лучший выбор для тестов, т.к. сохраняет качество без сжатия.await browser.setWindowSize(1280, 720);
webdriver-image-comparison, что позволяет автоматически
выявлять изменения интерфейса.it('Проверяет отображение кнопки и сохраняет скриншоты', async () => {
await browser.url('https://example.com/login');
await browser.setWindowSize(1280, 720);
const loginForm = await $('#loginForm');
await loginForm.saveScreenshot('./screenshots/loginForm.png');
const submitButton = await $('#submitButton');
await submitButton.saveScreenshot('./screenshots/submitButton.png');
await browser.saveScreenshot('./screenshots/fullPage.png');
});
В этом примере фиксируются как отдельные элементы, так и весь экран, что позволяет создавать детальные отчёты и отчёты о визуальных изменениях.
Создание скриншотов в WebdriverIO — инструментальная база для визуального контроля, документации и диагностики тестов. Использование правильных методов и структурированной организации файлов обеспечивает прозрачность и удобство анализа результатов автоматизированного тестирования.