Unable to generate Code Coverage report - 'Cannot find coverage file'
nathan5x opened this issue · comments
I recently upgraded the Cypress version to 13.6.1
from 9.6.x
and the coverage reports stopped working. Followed all the steps mentioned in this guide https://docs.cypress.io/guides/tooling/code-coverage#E2E-code-coverage
Debug Log
code-coverage combined NYC options { 'report-dir': './cypress/coverage/ui', reporter: [ 'lcov', 'clover', 'json', 'json-summary' ], extension: [ '.js', '.cjs', '.mjs', '.ts', '.tsx', '.jsx' ], excludeAfterRemap: false, 'temp-dir': './cypress/coverage/temp' } +0ms
Coverage failure message
Cannot find coverage file /ui-workspace/cypress/coverage/temp/out.json
Skipping coverage report
Versions
- What is this plugin's version? If this is NOT the latest released version, can you try the latest version, please?
"@cypress/code-coverage": "3.12.15",
"cypress": "13.6.1"
- If the plugin worked before in version X but stopped after upgrading to version Y, please try the released versions between X and Y to see where the breaking change was.
- What is the Cypress version? -
13.6.1
- What is your operating system? -
Mac OS Ventura
- What is the shell? -
OMZ
- What is the Node version? -
v16.18.1
- What is the NPM version? -
8.19.2
- How do you instrument your application? Cypress does not instrument web application code, so you must do it yourself. -
Via babel using webpack
- When running tests, if you open the web application in a regular browser and open DevTools, do you see
window.__coverage__
object? Can you paste a screenshot? - Is there a
.nyc_output
folder? Is there a.nyc_output/out.json
file? Is it empty? Can you paste at least part of it so we can see the keys and file paths? -it is empty
- Do you have any custom NYC settings in
package.json
(nyc
object) or in other NYC config files? -No
- Do you run Cypress tests in a Docker container? -
The issue is happening in both Mac OS and Linux based Docker Containers.
Here is some additional information
cypress.config.ts
file
....
e2e: {
setupNodeEvents(on, config) {
require('./cypress/plugins/index.js')(on, config);
return config;
},
}]
...
cypress/plugins/index.js
file
const cypressTypeScriptPreprocessor = require('./cy-ts-preprocessor');
module.exports = (on, config) => {
if (config && config.env && config.env.recordCodeCoverage) {
on('file:preprocessor', cypressTypeScriptPreprocessor);
// enable code coverage collection
require('@cypress/code-coverage/task')(on, config);
}
// IMPORTANT to return the config object
// with the any changed environment variables
return config;
};
cypress/support/e2e.ts
file
import '@cypress/code-coverage/support';
Any help is appreciated.
Thanks,
Nathan
I am also having this issue when using the github action v6
with chrome in CI and when using cypress run
with chrome locally. cypress open
does generate .nyc_output as well as electron in an environment.
chrome 120
cypress 13.6.2
cypress/code-coverage 3.12.15
I got the same issue when I migrated from @cypress/code-coverage
3.12.11
to 3.12.15
via renovate bot. I tried 3.12.12
and it also had the same issue, so the last ok version seems to be 3.12.11
. Interestingly, it is only in docker for me that is an issue. If I run it outside of docker on Mac OS, it works perfectly fine.
I don't currently have a non-Mac setup to try this on anything else, so I have no idea if this is a Mac specific issue or something wider. It is worth noting that the same issue appears on both an M1 Mac and an Intel Mac. It does pass on our GitLab CI/CD, which is running docker images on a kubernetes cluster, so it does seem to suggest it is more Mac specific that is an issue, or at least something to do with Docker Desktop.
Edit: Noticed there is 3.12.18
which seems to work fine for me, so maybe worth upgrading?