Запуск тестов и отчёты
Запуск тестов — вызов test runner (Jest, Vitest, Playwright) из CLI или CI, с возможностью фильтрации, параллелизации и генерации отчётов в различных форматах.
Зачем нужно
Знание флагов и режимов запуска экономит время: watch-режим ускоряет разработку, фильтрация по имени позволяет запустить один тест, coverage-флаг показывает непокрытые участки. Правильная настройка отчётов необходима для интеграции с CI и сбора метрик качества.
Где используется
- Локальная разработка: watch-режим и фильтрация
- CI/CD: запуск всех тестов, генерация JUnit XML, badges
- Code review: coverage-отчёты как артефакты PR
Основной контент
Jest — основные команды
# Запустить все тесты
npx jest
# Watch-режим (перезапуск при изменении файлов)
npx jest --watch
npx jest --watchAll
# Фильтрация по имени теста
npx jest --testNamePattern="корзина"
npx jest -t "корзина"
# Фильтрация по файлу
npx jest cart.test.js
npx jest src/cart # по паттерну пути
# Coverage
npx jest --coverage
# Параллельность
npx jest --maxWorkers=4
npx jest --runInBand # последовательный запуск (для отладки)
# Verbose вывод
npx jest --verbose
# Обновить snapshots
npx jest --updateSnapshot
Vitest — основные команды
npx vitest # watch-режим по умолчанию
npx vitest run # разовый запуск
npx vitest --reporter=verbose
npx vitest --coverage
npx vitest run src/cart.test.ts
Playwright — запуск и отчёты
# Запуск всех тестов
npx playwright test
# С UI-интерфейсом
npx playwright test --ui
# Конкретный файл
npx playwright test tests/login.spec.ts
# Конкретный браузер
npx playwright test --project=chromium
# Retry для CI
npx playwright test --retries=2
# HTML-отчёт
npx playwright test --reporter=html
npx playwright show-report
Reporters в Jest
// jest.config.js
module.exports = {
reporters: [
'default', // стандартный вывод
['jest-junit', { // для CI (JUnit XML)
outputDirectory: 'reports',
outputName: 'jest-junit.xml',
}],
['jest-html-reporters', { // HTML-отчёт
publicPath: './html-report',
filename: 'report.html',
}],
],
};
package.json скрипты
{
"scripts": {
"test": "jest",
"test:watch": "jest --watch",
"test:coverage": "jest --coverage",
"test:ci": "jest --ci --coverage --reporters=default --reporters=jest-junit",
"test:e2e": "playwright test",
"test:e2e:ui": "playwright test --ui"
}
}
GitHub Actions — запуск с отчётом
- name: Run tests
run: npm run test:ci
- name: Upload coverage
uses: codecov/codecov-action@v4
with:
file: ./coverage/lcov.info
- name: Upload test results
uses: actions/upload-artifact@v4
if: always
with:
name: test-results
path: reports/jest-junit.xml
Частые ошибки
--watchAllв CI — watch-режим не завершается; в CI используйjest --ciилиjest --runInBand- Нет
--ciфлага в CI — без него Jest разрешает обновление snapshots;--ciблокирует это и завершается с ошибкой при устаревших снимках - Параллельный запуск с общей БД — тесты конкурируют за ресурс; используй
--runInBandили изолируй БД на worker