cypress-io / code-coverage

Saves the code coverage collected during Cypress tests

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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?