Merge pull request #5690 from mermaid-js/renovate/major-eslint #11794
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: E2E | |
on: | |
push: | |
branches-ignore: | |
- 'gh-readonly-queue/**' | |
pull_request: | |
merge_group: | |
permissions: | |
contents: read | |
env: | |
# For PRs and MergeQueues, the target commit is used, and for push events to non-develop branches, github.event.previous is used if available. Otherwise, 'develop' is used. | |
targetHash: >- | |
${{ | |
github.event.pull_request.base.sha || | |
github.event.merge_group.base_sha || | |
( | |
( | |
(github.event_name == 'push' && github.ref == 'refs/heads/develop') || | |
github.event.before == '0000000000000000000000000000000000000000' | |
) && 'develop' | |
) || | |
github.event.before | |
}} | |
shouldRunParallel: ${{ secrets.CYPRESS_RECORD_KEY != '' && !(github.event_name == 'push' && github.ref == 'refs/heads/develop') }} | |
jobs: | |
cache: | |
runs-on: ubuntu-latest | |
container: | |
image: cypress/browsers:node-20.11.0-chrome-121.0.6167.85-1-ff-120.0-edge-121.0.2277.83-1 | |
options: --user 1001 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/action-setup@v4 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version-file: '.node-version' | |
- name: Cache snapshots | |
id: cache-snapshot | |
uses: actions/cache@v4 | |
with: | |
save-always: true | |
path: ./cypress/snapshots | |
key: ${{ runner.os }}-snapshots-${{ env.targetHash }} | |
# If a snapshot for a given Hash is not found, we checkout that commit, run the tests and cache the snapshots. | |
- name: Switch to base branch | |
if: ${{ steps.cache-snapshot.outputs.cache-hit != 'true' }} | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ env.targetHash }} | |
- name: Install dependencies | |
if: ${{ steps.cache-snapshot.outputs.cache-hit != 'true' }} | |
uses: cypress-io/github-action@v6 | |
with: | |
# just perform install | |
runTests: false | |
- name: Calculate bundle size | |
if: ${{ steps.cache-snapshot.outputs.cache-hit != 'true'}} | |
run: | | |
pnpm run build:viz | |
mkdir -p cypress/snapshots/stats/base | |
mv stats cypress/snapshots/stats/base | |
e2e: | |
runs-on: ubuntu-latest | |
container: | |
image: cypress/browsers:node-20.11.0-chrome-121.0.6167.85-1-ff-120.0-edge-121.0.2277.83-1 | |
options: --user 1001 | |
needs: cache | |
strategy: | |
fail-fast: false | |
matrix: | |
containers: [1, 2, 3, 4] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/action-setup@v4 | |
# uses version from "packageManager" field in package.json | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version-file: '.node-version' | |
# These cached snapshots are downloaded, providing the reference snapshots. | |
- name: Cache snapshots | |
id: cache-snapshot | |
uses: actions/cache/restore@v4 | |
with: | |
path: ./cypress/snapshots | |
key: ${{ runner.os }}-snapshots-${{ env.targetHash }} | |
- name: Install dependencies | |
uses: cypress-io/github-action@v6 | |
with: | |
runTests: false | |
- name: Output size diff | |
if: ${{ matrix.containers == 1 }} | |
run: | | |
pnpm run build:viz | |
mv stats cypress/snapshots/stats/head | |
echo '## Bundle size difference' >> "$GITHUB_STEP_SUMMARY" | |
echo '' >> "$GITHUB_STEP_SUMMARY" | |
npx tsx scripts/size.ts >> "$GITHUB_STEP_SUMMARY" | |
# Install NPM dependencies, cache them correctly | |
# and run all Cypress tests | |
- name: Cypress run | |
uses: cypress-io/github-action@v6 | |
id: cypress | |
# If CYPRESS_RECORD_KEY is set, run in parallel on all containers | |
# Otherwise (e.g. if running from fork), we run on a single container only | |
if: ${{ env.shouldRunParallel == 'true' || ( matrix.containers == 1 ) }} | |
with: | |
install: false | |
start: pnpm run dev:coverage | |
wait-on: 'http://localhost:9000' | |
browser: chrome | |
# Disable recording if we don't have an API key | |
# e.g. if this action was run from a fork | |
record: ${{ env.shouldRunParallel == 'true' }} | |
parallel: ${{ env.shouldRunParallel == 'true' }} | |
env: | |
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} | |
VITEST_COVERAGE: true | |
CYPRESS_COMMIT: ${{ github.sha }} | |
ARGOS_TOKEN: ${{ secrets.ARGOS_TOKEN }} | |
ARGOS_PARALLEL: ${{ env.shouldRunParallel == 'true' }} | |
ARGOS_PARALLEL_TOTAL: 4 | |
ARGOS_PARALLEL_INDEX: ${{ matrix.containers }} | |
- name: Upload Coverage to Codecov | |
uses: codecov/codecov-action@v4 | |
# Run step only pushes to develop and pull_requests | |
if: ${{ steps.cypress.conclusion == 'success' && (github.event_name == 'pull_request' || github.ref == 'refs/heads/develop')}} | |
with: | |
files: coverage/cypress/lcov.info | |
flags: e2e | |
name: mermaid-codecov | |
fail_ci_if_error: false | |
verbose: true | |
token: 6845cc80-77ee-4e17-85a1-026cd95e0766 |