Skip to content

example-start-and-pnpm-workspaces #19

example-start-and-pnpm-workspaces

example-start-and-pnpm-workspaces #19

name: example-start-and-pnpm-workspaces
on:
push:
branches:
- 'master'
pull_request:
workflow_dispatch:
jobs:
# The example has pnpm workspaces in its "root" folder
# examples/start-and-pnpm-workspaces
single-ws:
# This job installs pnpm into the runner
# Installs all dependencies
# Caches the pnpm store
# Caches the Cypress binary cache
# then runs Cypress tests in
# the single workspace of
# the subfolder "packages/workspace-1"
runs-on: ubuntu-22.04
name: Install dependencies
steps:
- name: Checkout repository
uses: actions/checkout@v4
# pnpm is not installed by default on GitHub runners
- name: Install pnpm
run: npm install -g pnpm@8
# locate the pnpm store directory where pnpm dependencies are installed
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
# cypress github-action does not cache pnpm dependencies by default
# cache the dependencies for following jobs in this workflow
# and for future runs of the workflow
- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('examples/basic-pnpm/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies with Cypress GitHub Action
# calling the Cypress GitHub Action causes all dependencies from
# the root of the pnpm workspace examples/start-and-pnpm-workspaces
# to be installed
# AND it automatically caches the Cypress binary.
#
# If you copy this workflow to another repository replace the following with
# uses: cypress-io/github-action@v6
# The notation ./ is a special usage only used here.
# It causes the version of the action in whatever branch it is launched in to be used.
# Do not try to use this outside of this repository!
uses: ./ # equivalent to using cypress-io/github-action@v6
with:
working-directory: examples/start-and-pnpm-workspaces
runTests: false
- name: Single workspace
uses: ./ # equivalent to using cypress-io/github-action@v6
with:
# Do not attempt to install dependencies in the workspace using the action.
# There is no pnpm-lock.yaml file in a workspace for
# Cypress GitHub Action to use.
# We already installed dependencies when we called the action previously.
install: false
working-directory: examples/start-and-pnpm-workspaces/packages/workspace-1
build: pnpm run build
start: pnpm start
wait-on: 'http://localhost:5000'
# multiple:
# # example with web application build,
# # server start and waiting for the server
# # to respond before running tests
# # in each Yarn workspaces subfolder
# runs-on: ubuntu-22.04
# strategy:
# # when one test fails, DO NOT cancel the other
# # containers, because this will kill Cypress processes
# # leaving the Cypress Cloud hanging ...
# # https://github.com/cypress-io/github-action/issues/48
# fail-fast: false
# matrix:
# cypress:
# - working_directory: examples/start-and-pnpm-workspaces/workspace-1
# - working_directory: examples/start-and-pnpm-workspaces/workspace-2
# steps:
# - name: Checkout
# uses: actions/checkout@v4
# - name: Cypress tests
# uses: ./
# with:
# working-directory: ${{ matrix.cypress.working_directory }}
# build: pnpm run build
# start: pnpm start
# wait-on: 'http://localhost:5000'