ci: npm cache and cypress action #1486
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: End to End | |
on: | |
pull_request: | |
types: | |
- opened | |
- reopened | |
- edited | |
- synchronize | |
jobs: | |
test: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-20.04] | |
ghc: ['8.8.4'] | |
spec: | |
- '0.16.1' | |
node: | |
- 18 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js ${{ matrix.node }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
- name: Cache node modules | |
id: cache-npm | |
uses: actions/cache@v4 | |
env: | |
cache-name: cache-node-modules | |
with: | |
# npm cache files are stored in `~/.npm` on Linux/macOS | |
path: ~/.npm | |
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-build-${{ env.cache-name }}- | |
${{ runner.os }}-build- | |
${{ runner.os }}- | |
- if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }} | |
name: List the state of node modules | |
continue-on-error: true | |
run: npm list | |
- run: npm ci | |
- run: npm run build -ws | |
# build monorepo incl. each subpackage | |
- run: npm run build --workspaces --if-present | |
- uses: dfinity/setup-dfx@main | |
- name: running dfx | |
id: dfx | |
run: | | |
dfx start --background | |
- name: setup | |
id: setup | |
run: npm run setup --workspaces --if-present | |
- name: Node.js e2e tests | |
run: npm run e2e --workspace e2e/node | |
env: | |
CI: true | |
REPLICA_PORT: 4943 | |
- name: Cypress e2e tests | |
uses: cypress-io/github-action@v6 | |
with: | |
install: false | |
project: ./e2e/browser | |
start: | | |
npm run e2e --workspace e2e/node | |
wait-on: 'http://localhost:1234' | |
wait-on-timeout: 120 | |
aggregate: | |
name: e2e:required | |
if: ${{ always() }} | |
needs: [test] | |
runs-on: ubuntu-latest | |
steps: | |
- name: check e2e test result | |
if: ${{ needs.test.result != 'success' }} | |
run: exit 1 |