Для проекта React / Redux я использую Cypress для тестирования пользовательского интерфейса. Мне нужно получить покрытие кода из этих тестов, чтобы детали были в Sonar (но это уже другая история).
Итак, я начал читать документы Cypress: https://docs.cypress.io/guides/tooling/code-coverage.html
Я выполнил инструкции и нашел разные плагины, но ничего не работает. После запуска тестов Cypress у меня нет результатов покрытия, и когда я пытаюсь запустить сервер с инструментальным кодом при транспиляции и пытаюсь получить window.__coverage__
это undefined
.
Итак, вот моя конфигурация.
Мои devDep и NYC conf в package.json:
"devDependencies": {
"@cypress/code-coverage": "^1.8.0",
"babel-cli": "^6.26.0",
"babel-plugin-istanbul": "^5.2.0",
"babel-plugin-react-intl": "^2.4.0",
"babel-plugin-transform-class-properties": "^6.24.1",
"babel-preset-react-app": "^3.1.2",
"cross-env": "^5.2.0",
"cypress": "3.1.0",
"istanbul-lib-coverage": "^2.0.5",
"jest-junit-reporter": "^1.1.0",
"junit": "^1.4.9",
"nyc": "^14.1.1",
"react-test-renderer": "^16.3.0"
[...]
},
"scripts": {
"start": "react-scripts start",
[...]
"test:unit:local": "react-scripts test --env=jsdom .*_test.js",
"test:unit": "npm run test:unit:local -- --ci --coverage --testResultsProcessor ./node_modules/jest-junit-reporter",
"test:integ:local": "cypress run --reporter junit",
"test:integ": "start-server-and-test start http://localhost:3000 test:integ:local",
"test": "cross-env NODE_ENV=test && npm run test:unit && npm run test:integ"
},
"nyc": {
"sourceMap": false,
"instrument": false
}
Мой .babelrc
файл:
{
"presets": ["@babel/preset-react"],
"plugins": [
[ "react-intl", {
"messagesDir": "./src/messages",
"extractSourceLocation": true
}],
"transform-class-properties",
"istanbul"
],
"env": {
"test": {
"plugins": [ "transform-class-properties", "istanbul" ]
}
}
}
Мой \cypress\support\index.js
содержит эту строку:
import '@cypress/code-coverage/support'
А вот и мой \cypress\plugins\index.js
:
module.exports = (on, config) => {
on('task', require('@cypress/code-coverage/task'))
on('file:preprocessor', require('@cypress/code-coverage/use-babelrc'))
return config
}
Поэтому я ожидаю получить результат, который вы можете увидеть в документации Cypress. Веб-сайт создан, но файлы, содержащие отчеты о покрытии, пусты.
И я не понимаю, что не так в моей конфигурации.
react-scripts start
случая - person gleb bahmutov   schedule 08.08.2019window.__coverage__
ничего не обнаружено. - person Corentin Daillie   schedule 29.11.2019