cypress-io / github-action

GitHub Action for running Cypress end-to-end & component tests
https://on.cypress.io/guides/continuous-integration/github-actions
MIT License
1.37k stars 345 forks source link

cypress cache list and verify using wrong Cypress version for Yarn Modern pnp #971

Open MikeMcC399 opened 1 year ago

MikeMcC399 commented 1 year ago

This issue refers to github-action usage with Yarn Modern Plug'n'Play (pnp).

Current behavior

When .github/workflows/example-yarn-modern-pnp.yml is run, it shows npx being called and not finding the installed version of cypress.

For example job 4959218510 shows:

/usr/local/bin/npx cypress cache list
npm WARN exec The following package was not found and will be installed: cypress@12.12.0
┌─────────┬───────────────────┐
│ version │ last used         │
├─────────┼───────────────────┤
│ 12.11.0 │ a few seconds ago │
├─────────┼───────────────────┤
│ 12.12.0 │ 3 days ago        │
└─────────┴───────────────────┘
/usr/local/bin/npx cypress verify

(Also reproducible with later versions.)

With Yarn Plug'n'Play there is no directory node_modules set up and therefore npx cannot find cypress and it installs instead the latest version, which may or may not correspond to the version specified in yarn.lock.

On a local machine, or a CI workflow which preserves the npm-cache/_npx cache, a previously installed version of Cypress may also be used.

Desired behavior

When Yarn Plug'n'Play is in use, then cache list and verify should use the installed version of Cypress (from yarn.lock) and not install a different version.

Suggestion

MikeMcC399 commented 7 months ago