What would you like
When the cypress-io/github-action processes a project with a pnpm-lock.yaml lockfile from the pnmp package manager it should be able to interpret pnpm workspaces correctly and run Cypress from a pnpm workspace, including dependency installation and caching.
For example, the following should work:
- name: Cypress test
uses: cypress-io/github-action@v6
with:
working-directory: examples/start-and-pnpm-workspaces/packages/workspace-1
This fails because Cypress can't find pnpm-lock.yaml to install dependencies.
Why is this needed?
The workspace of a pnpm project does not contain any pnpm-lock.yaml file and cypress-io/github-action does not read and interpret any pnpm-workspace.yaml file in the root of a pnpm project using workspaces. This means that the action needs to be applied twice, once in the root and then again in the workspace in order to run Cypress in a pnpm workspace. (See pnpm workspaces.) This is error prone.
The cypress-io/github-action already provides support for Yarn workspaces. Not providing this functionality for pnpm projects with workspaces is inconsistent.
The benefit for users of pnpm projects with workspaces is that the workflows using GitHub Actions can be written in a more simpler way. This reduces the risk of introducing errors especially with caching the Cypress binary.
Background
pnpm has built-in support for monorepositories (AKA multi-package repositories, multi-project repositories, or monolithic repositories).
pnpm repos using workspaces and Cypress are typically structured similar to the following E2E example:
# repo root
/node_modules
/packages
/package.json
/pnpm-lock.yaml
/pnpm-workspace.yaml
# workspace 1
/packages/ws1
/packages/ws1/cypress/e2e/spec.cy.js
/packages/ws1/node_modules
/packages/ws1/cypress.config.js
/packages/ws1/package.json
# workspace 2
etc.
Other
pnpm workspaces
If you are using pnpm workspaces you need to install dependencies and run Cypress tests in a workspace in separate steps. The snippet below shows this principle.
...
- name: Install dependencies
uses: cypress-io/github-action@v6
with:
working-directory: examples/start-and-pnpm-workspaces
runTests: false
- name: Cypress test
uses: cypress-io/github-action@v6
with:
install: false
working-directory: examples/start-and-pnpm-workspaces/packages/workspace-1
...

See the example project start-and-pnpm-workspaces and the example-start-and-pnpm-workspaces.yml workflow for a full working example including pnpm caching.
What would you like
When the
cypress-io/github-actionprocesses a project with apnpm-lock.yamllockfile from the pnmp package manager it should be able to interpret pnpm workspaces correctly and run Cypress from a pnpm workspace, including dependency installation and caching.For example, the following should work:
This fails because Cypress can't find
pnpm-lock.yamlto install dependencies.Why is this needed?
The workspace of a pnpm project does not contain any
pnpm-lock.yamlfile andcypress-io/github-actiondoes not read and interpret anypnpm-workspace.yamlfile in the root of a pnpm project using workspaces. This means that the action needs to be applied twice, once in the root and then again in the workspace in order to run Cypress in a pnpm workspace. (See pnpm workspaces.) This is error prone.The
cypress-io/github-actionalready provides support for Yarn workspaces. Not providing this functionality for pnpm projects with workspaces is inconsistent.The benefit for users of pnpm projects with workspaces is that the workflows using GitHub Actions can be written in a more simpler way. This reduces the risk of introducing errors especially with caching the Cypress binary.
Background
pnpm has built-in support for monorepositories (AKA multi-package repositories, multi-project repositories, or monolithic repositories).
pnpm repos using workspaces and Cypress are typically structured similar to the following E2E example:
Other
pnpm workspaces
If you are using pnpm workspaces you need to install dependencies and run Cypress tests in a workspace in separate steps. The snippet below shows this principle.
See the example project start-and-pnpm-workspaces and the example-start-and-pnpm-workspaces.yml workflow for a full working example including pnpm caching.