JUnit XML — это стандартный формат для представления результатов тестирования, широко используемый в CI/CD системах и различных инструментах анализа тестов. Cypress поддерживает генерацию отчетов в формате JUnit через плагины, что позволяет интегрировать тестирование JavaScript-приложений с инструментами вроде Jenkins, GitLab CI, CircleCI и другими.
Для создания JUnit отчетов необходимо использовать плагин
mochawesome или официальную поддержку через
cypress-mochawesome-reporter или
mocha-junit-reporter. Наиболее распространённый способ —
подключение mocha-junit-reporter.
Установка:
npm install --save-dev mocha-junit-reporter
Конфигурация Cypress:
cypress.config.js или cypress.json
необходимо добавить настройку reporter и
reporterOptions:const { defineConfig } = require('cypress');
module.exports = defineConfig({
reporter: 'mocha-junit-reporter',
reporterOptions: {
mochaFile: 'reports/junit/results-[hash].xml',
toConsole: true,
},
e2e: {
setupNodeEvents(on, config) {
return config;
},
},
});
[hash] для уникальности каждого
запуска.Файл JUnit XML имеет стандартную структуру:
<testsuites>
<testsuite name="SuiteName" tests="3" failures="1" skipped="0">
<testcase classname="TestClassName" name="should do something" time="0.123"/>
<testcase classname="TestClassName" name="should fail" time="0.456">
<failure message="expected true to be false"/>
</testcase>
</testsuite>
</testsuites>
Ключевые элементы:
<testsuites> — контейнер для всех наборов
тестов.<testsuite> — отдельный набор тестов, содержит
атрибуты name, tests, failures,
skipped.<testcase> — отдельный тест с атрибутами
classname, name, time.<failure> — описание ошибки для упавшего
теста.<skipped> — отмечает пропущенные тесты.JUnit XML позволяет CI/CD системам легко интерпретировать результаты и отображать статистику о тестировании.
Для Jenkins, GitLab или других систем необходимо убедиться, что путь к JUnit файлу совпадает с конфигурацией pipeline.
Пример для Jenkinsfile:
pipeline {
agent any
stages {
stage('Install dependencies') {
steps {
sh 'npm install'
}
}
stage('Run Cypress tests') {
steps {
sh 'npx cypress run'
}
}
stage('Publish JUnit report') {
steps {
junit 'reports/junit/*.xml'
}
}
}
}
После этого Jenkins автоматически отобразит количество успешных и упавших тестов, а также их детали.
[hash] или
[datetime] в имени файла предотвращает перезапись
предыдущих отчетов.mochawesome) позволяет одновременно получить подробные
визуальные отчеты и совместимые с CI/CD XML.reporter и reporterOptions прописаны корректно
в конфигурации Cypress.JUnit XML отчёты в Cypress предоставляют удобный механизм для автоматизированной интеграции с CI/CD, позволяя легко отслеживать качество тестирования и упрощать диагностику ошибок. Их корректная настройка и использование являются важным элементом эффективного процесса тестирования в крупных проектах.