Я начал рассматривать тестирование с помощью Jest и Puppeteer после того, как использовал Puppeteer для новой функции в Talaia.io, поэтому я создал репозиторий github, содержащий простой каркас для веб-тестирования.

Jest: платформа тестирования от Facebook. Jest предоставляет платформу для автоматизированного тестирования вместе с базовой библиотекой утверждений (Expect).

Puppeteer: библиотека Node.js для управления безголовым Chrome. Он довольно новый, но сейчас самое время проверить его и посмотреть, как он может вписаться в ваш рабочий процесс.

Альтернативы

У ребят из SmoothCode есть проект, который действует как обертка для использования шуток и кукловодов, но, поскольку это будет среднесрочный проект в моей компании, я предпочел взять все под свой контроль, поэтому я решил не использовать. Также у этого проекта есть кривая обучения, но у нас нет времени на преодоление.

Проект

Структура проекта достаточно проста:

Я решил отделить тесты конечных точек API от тестирования пользовательского интерфейса, чтобы мы могли просто запускать одну из частей, используя параметр конфигурации jest moduleFileExtensions.

Этот проект имеет менее минимальный код и библиотеки для работы с простыми тестами. Если вы хотите добавить больше модулей, вам нужно всего лишь добавить строку в jest.config.js и

module.exports = 
{
name: 'jest-puppeteer-tests',
rootDir: './',
projects: [
          '<rootDir>/config/jest/web.js',
          '<rootDir>/config/jest/api.js'
          ]
};
module.exports = {
displayName: 'api',
moduleFileExtensions: ['js', 'json'], 
rootDir: '../../',
testEnvironment: 'jsdom',
testMatch: ['**/*.api.js']
};

Исполнение

Чтобы выполнить все тесты, просто введите:

npm test

Чтобы выполнить только тесты API:

npm test -- api

Чтобы выполнить только веб-тесты:

npm test -- web

После запуска всех тестов вы увидите: