Skip to content

chore(deps)(deps): bump the production-dependencies group across 1 directory with 4 updates #686

chore(deps)(deps): bump the production-dependencies group across 1 directory with 4 updates

chore(deps)(deps): bump the production-dependencies group across 1 directory with 4 updates #686

name: validate
on:
pull_request:
branches: [main]
push:
branches: [main]
paths:
- "apps/ui/**"
- ".github/workflows/apps-ui-validate.yml"
concurrency:
group: apps-ui-validate-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
validate:
defaults:
run:
working-directory: apps/ui
runs-on: ubuntu-24.04
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Detect relevant changes
uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4.0.3
id: filter
with:
filters: |
code:
- 'apps/ui/**'
- '.github/workflows/apps-ui-validate.yml'
- name: Set up Bun
if: steps.filter.outputs.code == 'true'
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: 1.3.14
- name: Cache bun install
if: steps.filter.outputs.code == 'true'
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ~/.bun/install/cache
key: bun-${{ runner.os }}-${{ hashFiles('apps/ui/bun.lock') }}
restore-keys: |
bun-${{ runner.os }}-
- name: Install
if: steps.filter.outputs.code == 'true'
run: bun install --frozen-lockfile
- name: Dependency audit
if: steps.filter.outputs.code == 'true'
run: bash scripts/ci/bun-audit.sh
- name: Lint + format + typecheck
if: steps.filter.outputs.code == 'true'
run: bun run check
- name: Unit + integration tests
if: steps.filter.outputs.code == 'true'
run: bun run test:ci
- name: Upload coverage to Codecov
if: steps.filter.outputs.code == 'true'
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
with:
files: apps/ui/coverage/lcov.info
flags: ui
name: ui-coverage
fail_ci_if_error: false
# CODECOV_TOKEN is required for private repos; for public repos
# uploads work tokenless.
token: ${{ secrets.CODECOV_TOKEN }}
- name: Build
if: steps.filter.outputs.code == 'true'
run: bun run build
- name: Bundle size budget
if: steps.filter.outputs.code == 'true'
run: bun run size:check
- name: Modulepreload size coverage
if: steps.filter.outputs.code == 'true'
run: bun run size:check:modulepreload
- name: Lighthouse CI (a11y + best-practices + SEO + perf budgets)
if: steps.filter.outputs.code == 'true'
run: bunx lhci autorun
- name: Build Storybook
if: steps.filter.outputs.code == 'true'
run: bun run build-storybook
- name: Upload dist
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: dist
path: dist
retention-days: 1
# NOTE: Playwright report upload lives in full-stack-smoke.yml in the
# infra/compose repo, where E2E actually runs.
- name: Upload Storybook
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: storybook-static
path: storybook-static
retention-days: 1
- name: Upload Lighthouse reports
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: lighthouse-reports
path: .lighthouseci
retention-days: 7