From bd3c390b5fd240ea0975e063e07855747ba51f0b Mon Sep 17 00:00:00 2001 From: Lukas Oppermann Date: Thu, 18 Apr 2024 10:19:18 +0200 Subject: [PATCH] update actions --- .github/workflows/ci.yml | 81 +-------------- .github/workflows/release.yml | 3 +- .github/workflows/release_canary.yml | 2 +- .github/workflows/visual_regression_test.yml | 102 +++++++++++++++++++ 4 files changed, 107 insertions(+), 81 deletions(-) create mode 100644 .github/workflows/visual_regression_test.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9c1c58e3d..4cb514a11 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,4 @@ -name: CI +name: Test & Lint on: push: @@ -9,7 +9,7 @@ on: jobs: build: if: ${{ github.repository == 'primer/primitives' }} - name: Build verification + name: Test & Lint runs-on: ubuntu-latest steps: - name: Checkout repository @@ -38,80 +38,3 @@ jobs: - name: Run unit tests run: npm test - - vrt-runner: - runs-on: ubuntu-latest-8-cores - strategy: - fail-fast: false - matrix: - shard: [1, 2, 3, 4, 5] - steps: - - uses: actions/checkout@v4 - - name: Use Node.js 20.x - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: 'npm' - - name: Install dependencies - run: npm ci - - name: Build v8 tokens - run: npm run build:next - - name: Build storybook - working-directory: docs/storybook - run: | - npm ci - npm run build-storybook - - name: Run storybook - id: storybook - run: | - npx serve -l 6006 storybook-static & - pid=$! - echo "pid=$pid" >> $GITHUB_OUTPUT - sleep 5 - working-directory: docs/storybook - - name: Run Visual Regression Tests - uses: docker://mcr.microsoft.com/playwright:v1.43.0-jammy - env: - STORYBOOK_URL: 'http://172.17.0.1:6006' - with: - args: npx playwright test --shard="${{ matrix.shard }}/${{ strategy.job-total }}" - - name: Stop storybook - run: kill ${{ steps.storybook.outputs.pid }} - - name: Upload report - if: ${{ always() }} - uses: actions/upload-artifact@v4 - with: - name: vrt-${{ matrix.shard }} - path: blob-report - retention-days: 1 - - vrt: - name: 'Visual Regression Testing' - if: ${{ always() }} - runs-on: ubuntu-latest - needs: vrt-runner - steps: - - uses: actions/checkout@v4 - - name: Set up Node - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: 'npm' - - name: install dependencies - run: npm ci - - name: download all reports - uses: actions/download-artifact@v4 - with: - path: all-blob-reports - pattern: vrt-* - merge-multiple: true - - name: merge all reports - run: npx playwright merge-reports --reporter html ./all-blob-reports - - name: Upload report - uses: actions/upload-artifact@v4 - with: - name: vrt - path: playwright-report - - name: Check vrt-runner job status - if: ${{ needs.vrt-runner.result == 'failure' }} - run: exit 1 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6a4f0deea..fafbf91b3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -25,7 +25,7 @@ jobs: cache: 'npm' - name: Install dependencies - run: npm ci --legacy-peer-deps --no-audit --no-fund && pushd docs; npm ci --legacy-peer-deps --no-audit --no-fund; popd + run: npm ci --no-audit --no-fund && pushd docs; npm ci --no-audit --no-fund; popd - name: Build tokens run: npm run build @@ -55,6 +55,7 @@ jobs: NPM_TOKEN: ${{ secrets.NPM_AUTH_TOKEN_SHARED }} - name: Output release version to summary + if: ${{ steps.changesets.outputs.published}} = 'true' env: VERSION: ${{ steps.changesets.outputs.publishedPackages[0].version }} PACKAGE_NAME: ${{ steps.changesets.outputs.publishedPackages[0].name }} diff --git a/.github/workflows/release_canary.yml b/.github/workflows/release_canary.yml index da6359076..a13626c25 100644 --- a/.github/workflows/release_canary.yml +++ b/.github/workflows/release_canary.yml @@ -25,7 +25,7 @@ jobs: node-version: 20 - name: Install dependencies - run: npm ci --legacy-peer-deps --no-audit --no-fund --include=dev + run: npm ci --no-audit --no-fund --include=dev - name: Build tokens run: npm run build diff --git a/.github/workflows/visual_regression_test.yml b/.github/workflows/visual_regression_test.yml new file mode 100644 index 000000000..73e6997f7 --- /dev/null +++ b/.github/workflows/visual_regression_test.yml @@ -0,0 +1,102 @@ +name: Visual Regression Testing + +on: + push: + branches: + - main + pull_request: + +jobs: + vrt-runner: + runs-on: ubuntu-latest-8-cores + + strategy: + fail-fast: false + matrix: + shard: [1, 2, 3, 4, 5] + + steps: + - uses: actions/checkout@v4 + + - name: Setup node + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: 'npm' + + - name: Install dependencies + run: npm ci + + - name: Build v8 tokens + run: npm run build:next + + - name: Build storybook + working-directory: docs/storybook + run: | + npm ci + npm run build-storybook + + - name: Run storybook + id: storybook + working-directory: docs/storybook + run: | + npx serve -l 6006 storybook-static & + pid=$! + echo "pid=$pid" >> $GITHUB_OUTPUT + sleep 5 + + - name: Run Visual Regression Tests + uses: docker://mcr.microsoft.com/playwright:v1.43.0-jammy + env: + STORYBOOK_URL: 'http://172.17.0.1:6006' + with: + args: npx playwright test --shard="${{ matrix.shard }}/${{ strategy.job-total }}" + + - name: Stop storybook + run: kill ${{ steps.storybook.outputs.pid }} + + - name: Upload report + if: ${{ always() }} + uses: actions/upload-artifact@v4 + with: + name: vrt-${{ matrix.shard }} + path: blob-report + retention-days: 1 + + vrt: + name: 'Visual Regression Testing' + if: ${{ always() }} + runs-on: ubuntu-latest + needs: vrt-runner + + steps: + - uses: actions/checkout@v4 + + - name: Set up Node + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: 'npm' + + - name: install dependencies + run: npm ci + + - name: download all reports + uses: actions/download-artifact@v4 + with: + path: all-blob-reports + pattern: vrt-* + merge-multiple: true + + - name: merge all reports + run: npx playwright merge-reports --reporter html ./all-blob-reports + + - name: Upload report + uses: actions/upload-artifact@v4 + with: + name: vrt + path: playwright-report + + - name: Check vrt-runner job status + if: ${{ needs.vrt-runner.result == 'failure' }} + run: exit 1 \ No newline at end of file