Как реализовать скриншотные тесты в Vite проекте?

Для реализации скриншотных тестов в Vite проекте вам потребуется использовать некоторые вспомогательные библиотеки и инструменты. Ниже я приведу подробную инструкцию по настройке скриншотных тестов в Vite проекте.

Шаг 1: Установка зависимостей
Первым шагом вам потребуется установить следующие зависимости:

- jest: это фреймворк для тестирования JavaScript-кода.
- puppeteer: это библиотека для управления браузером (Chrome) и создания скриншотов в тестах.
- jest-puppeteer: это дополнительное расширение для jest, которое позволяет интегрировать puppeteer в существующие тесты.

Вы можете установить эти зависимости, выполнив следующую команду:

npm install jest puppeteer jest-puppeteer --save-dev

Шаг 2: Настройка jest и puppeteer
Затем вам потребуется настроить jest и puppeteer в вашем проекте. Создайте файл jest.config.js в корне вашего проекта и добавьте следующий код:

module.exports = {
  preset: 'jest-puppeteer',
  testMatch: ['**/tests/**/*.js']
};

Здесь мы используем jest-puppeteer пресет и указываем, что наши тесты будут находиться в папке tests.

Шаг 3: Создание скриншотных тестов
Теперь вы можете создать скриншотные тесты в вашем проекте. Создайте папку tests в корне вашего проекта (если ее еще нет) и создайте файл screenshot.test.js внутри нее. В этом файле вы можете определить ваши тесты. Например:

describe('Example screenshot test', () => {
  beforeAll(async () => {
    await page.goto('http://localhost:3000'); // Здесь указывается URL вашего приложения
  });

  it('should match the expected screenshot', async () => {
    const screenshot = await page.screenshot();
    expect(screenshot).toMatchImageSnapshot();
  });
});

В этом примере мы используем функцию page.goto для перехода на URL вашего приложения, а затем создаем скриншот с помощью функции page.screenshot. Затем мы сравниваем скриншот с ожидаемым результатом с помощью функции expect(...).toMatchImageSnapshot().

Шаг 4: Запуск тестов
Теперь вы можете запустить свои тесты с помощью команды jest в консоли:

npx jest

Jest автоматически найдет и запустит все тесты, которые соответствуют шаблону, указанному в testMatch в jest.config.js.

После запуска тестов jest вы увидите результаты в консоли и, если тест не прошел, jest автоматически создаст папку __image_snapshots__, в которой будет храниться ожидаемый скриншот.

Обратите внимание, что для работы puppeteer и jest вам может потребоваться настроить jest-puppeteer для сопряжения с вашими версиями браузера и Node.js.

Вот и все! Теперь вы знаете, как реализовать скриншотные тесты в вашем проекте, используя Vite, jest и puppeteer. Это очень полезный инструмент для проверки визуальных изменений в вашем приложении и обеспечения стабильности пользовательского интерфейса.