name: ci on: pull_request: branches: - main push: branches: - main merge_group: branches: - main # cancel in-progress runs on new commits to same PR (gitub.event.number) concurrency: group: ${{ github.workflow }}-${{ github.event.number || github.sha }} cancel-in-progress: true permissions: contents: read jobs: lint: name: ๐Ÿ”  Lint project runs-on: ubuntu-24.04-arm steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version: lts/* - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c name: ๐ŸŸง Install pnpm with: cache: true - name: ๐Ÿ“ฆ Install dependencies (root only, no scripts) run: pnpm install --filter . --ignore-scripts - name: ๐Ÿ”  Lint project run: pnpm lint types: name: ๐Ÿ’ช Type check runs-on: ubuntu-24.04-arm steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version: lts/* - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c name: ๐ŸŸง Install pnpm with: cache: true - name: ๐Ÿ“ฆ Install dependencies run: pnpm install - name: ๐Ÿ’ช Type check run: pnpm test:types unit: name: ๐Ÿงช Unit tests runs-on: ubuntu-24.04-arm steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version: lts/* - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c name: ๐ŸŸง Install pnpm with: cache: true - name: ๐Ÿ“ฆ Install dependencies run: pnpm install - name: ๐Ÿงช Unit tests run: pnpm test:unit run --coverage --reporter=default --reporter=junit --outputFile=test-report.junit.xml - name: โฌ†๏ธŽ Upload test results to Codecov if: ${{ !cancelled() }} uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1 with: token: ${{ secrets.CODECOV_TOKEN }} test: name: ๐Ÿงช Component tests runs-on: ubuntu-24.04-arm steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version: lts/* - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c name: ๐ŸŸง Install pnpm with: cache: true - name: ๐Ÿ“ฆ Install dependencies run: pnpm install - name: ๐ŸŒ Install browser run: pnpm playwright install chromium-headless-shell - name: ๐Ÿงช Component tests run: pnpm test:nuxt run --coverage --reporter=default --reporter=junit --outputFile=test-report.junit.xml - name: โฌ†๏ธŽ Upload coverage reports to Codecov uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5 with: report_type: test_results env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - name: โฌ†๏ธŽ Upload coverage reports to Codecov uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5 env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} browser: name: ๐Ÿ–ฅ๏ธ Browser tests runs-on: ubuntu-24.04-arm container: image: mcr.microsoft.com/playwright:v1.58.0-noble steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version: lts/* - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c name: ๐ŸŸง Install pnpm with: cache: true - name: ๐Ÿ“ฆ Install dependencies run: pnpm install - name: ๐Ÿ—๏ธ Build project run: pnpm build:test env: VALIDATE_HTML: true - name: ๐Ÿ–ฅ๏ธ Test project (browser) run: pnpm test:browser:prebuilt a11y: name: โ™ฟ Accessibility audit runs-on: ubuntu-latest # See https://github.com/GoogleChrome/lighthouse/discussions/16834 strategy: matrix: mode: [dark, light] steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version: lts/* - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c name: ๐ŸŸง Install pnpm with: cache: true - name: ๐Ÿ“ฆ Install dependencies run: pnpm install - name: ๐Ÿ—๏ธ Build project run: pnpm build:test - name: โ™ฟ Accessibility audit (Lighthouse - ${{ matrix.mode }} mode) run: pnpm test:a11y:prebuilt env: LHCI_GITHUB_APP_TOKEN: ${{ secrets.LHCI_GITHUB_APP_TOKEN }} LIGHTHOUSE_COLOR_MODE: ${{ matrix.mode }} knip: name: ๐Ÿงน Unused code check runs-on: ubuntu-24.04-arm steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version: lts/* - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c name: ๐ŸŸง Install pnpm with: cache: true - name: ๐Ÿ“ฆ Install dependencies run: pnpm install - name: ๐Ÿงน Check for unused code run: pnpm knip - name: ๐Ÿงน Check for unused production code run: pnpm knip --production i18n: name: ๐ŸŒ i18n validation runs-on: ubuntu-24.04-arm steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version: lts/* - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c name: ๐ŸŸง Install pnpm with: cache: true - name: ๐Ÿ“ฆ Install dependencies (root only, no scripts) run: pnpm install --filter . --ignore-scripts - name: ๐ŸŒ Check for missing or dynamic i18n keys run: pnpm i18n:report - name: ๐ŸŒ Check i18n schema is up to date run: | pnpm i18n:schema git diff --exit-code i18n/schema.json