Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to generate Code Coverage report - 'Cannot find coverage file' #756

Open
nathan5x opened this issue Dec 20, 2023 · 3 comments
Open

Comments

@nathan5x
Copy link

nathan5x commented Dec 20, 2023

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

@tamitai-sovrn
Copy link

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

@gigaSproule
Copy link

gigaSproule commented Jan 15, 2024

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?

@MBernardAdobe
Copy link

For me the answer was this, #361 (comment)

Might not be the answer for everyone, but if coverage is being skipped only in one place but works fine in others, possibly the one place is not on a path that gets Istanbul instrumentation in your app?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants