Refactor e2e tests setup #2994
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: CI | |
on: | |
pull_request: | |
push: | |
branches: | |
- main | |
# when new commit is pushed to a branch, cancel previous runs | |
# https://stackoverflow.com/a/67939898/580181 | |
concurrency: | |
group: ci-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
strategy: | |
matrix: | |
node: [ "20" ] | |
os: [ ubuntu-latest ] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/action-setup@v4 | |
with: | |
version: 9.14.2 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
cache: "pnpm" | |
- run: pnpm install | |
- run: pnpm build | |
env: | |
# at the end of the build, upload sourcemaps to sentry but only on main branch | |
SENTRY_AUTH_TOKEN: ${{ github.ref == 'refs/heads/main' && secrets.SENTRY_AUTH_TOKEN || '' }} | |
SENTRY_ORG: ${{ github.ref == 'refs/heads/main' && secrets.SENTRY_ORG || '' }} | |
SENTRY_PROJECT: ${{ github.ref == 'refs/heads/main' && secrets.SENTRY_PROJECT || '' }} | |
- uses: krzkaczor/size-limit-action@master | |
if: github.ref != 'refs/heads/main' | |
with: | |
skip_step: build # already built | |
directory: packages/app | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
package_manager: pnpm | |
test: | |
strategy: | |
matrix: | |
node: [ "20" ] | |
os: [ ubuntu-latest ] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/action-setup@v4 | |
with: | |
version: 9.14.2 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
cache: "pnpm" | |
- run: pnpm install | |
- run: pnpm check | |
- run: pnpm verify # runs linting, type checking, and unit tests in parallel | |
storybook-visual-regression: | |
strategy: | |
matrix: | |
node: [ "20" ] | |
os: [ ubicloud-standard-4 ] | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: pnpm/action-setup@v4 | |
with: | |
version: 9.14.2 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
cache: "pnpm" | |
- run: pnpm install | |
- name: Publish to Chromatic | |
uses: chromaui/action@latest | |
with: | |
workingDir: packages/app | |
buildScriptName: storybook:build | |
projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} | |
autoAcceptChanges: main | |
onlyChanged: true | |
externals: | | |
public/** | |
src/fonts/** | |
src/ui/assets/** | |
test-e2e: | |
strategy: | |
fail-fast: false | |
matrix: | |
node: [ "20" ] | |
os: [ ubicloud-standard-16 ] | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 20 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/action-setup@v4 | |
with: | |
version: 9.14.2 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
cache: "pnpm" | |
- run: pnpm install | |
- run: pnpm run build | |
- name: TMP fix MS repos | |
run: | | |
sudo rm /etc/apt/sources.list.d/microsoft-prod.list | |
sudo apt-get update | |
- run: pnpm exec playwright install --with-deps chromium | |
working-directory: ./packages/app | |
- run: pnpm run test-e2e | |
working-directory: ./packages/app | |
env: | |
TENDERLY_API_KEY: "${{ secrets.TENDERLY_API_KEY }}" | |
TENDERLY_ACCOUNT: phoenixlabs | |
TENDERLY_PROJECT: spark-app-e2e-tests | |
PLAYWRIGHT_TRACE: 1 | |
- name: Upload report to GitHub Actions Artifacts | |
if: failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-e2e-report | |
path: packages/app/playwright-report | |
retention-days: 3 |