NextJS настроен с Jest, Testing Library и Cypress

NextJS v13

Автоматизированное тестирование является обязательным условием для любого готового, надежного приложения. В этой статье мы собираемся настроить Jest, среду тестирования вместе с библиотекой тестирования реакции для модульного тестирования и Cypress для сквозного тестирования. тестирование приложения NextJS.

Шутка

Нам нужно установить следующий пакет для Jest

npm i jest jest-environment-jsdom --save-dev

Пакет jest-environment-jsdom имитирует среду DOM, чтобы можно было протестировать работу с DOM или функции, связанные с DOM API, с помощью Jest.

Нам также нужно создать файл jest.config.js.

// jest.config.js
const nextJest = require('next/jest')
 
// Providing the path to your Next.js app which will enable loading next.config.js and .env files
const createJestConfig = nextJest({ dir: './' })
 
// Any custom config you want to pass to Jest
const customJestConfig = {
  setupFilesAfterEnv: ['<rootDir>/jest.setup.js'],
  testEnvironment: 'jest-environment-jsdom'
}
 
// createJestConfig is exported in this way to ensure that next/jest can load the Next.js configuration, which is async
module.exports = createJestConfig(customJestConfig)

NextJS предоставляет пакет (next/jest) для автоматической настройки Jest в проекте. Он автоматически имитирует css и игнорирует node_modules, .next folderи т. д. Мы также можем предоставить файл в setupFilesAfterEnv, который содержит код, который запускается после каждого теста. исполнение.

Библиотека тестирования React

Установите следующие пакеты

npm i @testing-library/react @testing-library/jest-dom --save-dev

Пакет @testing-library/jest-dom предоставляет настраиваемый сопоставитель jest для проверки состояния DOM.

Добавьте следующий код в jest.setup.js

// jest.setup.js
import '@testing-library/jest-dom/extend-expect'

Скрипты NPM

// package.json
"test": "jest --watch --coverage",
"test:ci": "jest --ci"

— флаг покрытия показывает общее покрытие кода на консоли.

— флаг ci используется, когда тестовые случаи выполняются в конвейере. Он не пройдет тест, если совпадение моментального снимка не удастся.

Кипарис

Cypress — популярный инструмент для реализации сквозного тестирования во внешнем приложении. Нам нужно выполнить следующие шаги, чтобы добавить кипарис

  • Установите cypress как зависимость от разработчиков
npm i cypress --save-dev
  • Добавьте следующий скрипт NPM
// package.json
"e2e": "cypress open"
  • Выполнить npm-скрипт
npm run e2e

Cypress обнаружит, что cypress находится в стадии установки, поэтому автоматически создаст cypress.config.js и добавит папку с именем cypress. Папка Cypress содержит несколько файлов.

Примечание. На данный момент NextJS v13 + Typescript не работает с Cypress из коробки. В репозитории Cypress есть открытая проблема. В качестве обходного пути необходимо добавить следующий код в файл tsconfig.json.

// tsconfig.json
{
  "compilerOptions": {
    ....
  },
  "ts-node": {
    "compilerOptions": {
      "module": "ESNext",
      "moduleResolution": "Node"
    }
  },
}

Мы можем настроить Jest, React Testing Library (RTL) и Cypress в проекте NextJS, выполнив описанные выше шаги. .

Удачного кодирования!!!