Skip to content

feat(dropdown): add animated single and multi select with search, select all, chips and grouping #53

feat(dropdown): add animated single and multi select with search, select all, chips and grouping

feat(dropdown): add animated single and multi select with search, select all, chips and grouping #53

name: Visual regression (opt-in)
# Opt-in suite. Triggered manually (`gh workflow run visual-regression.yml`) or
# by adding the `visual-regression` label to a PR. Kept out of the default CI
# matrix until baselines are reviewed and stable — visual diffs need a human in
# the loop more than smoke tests do.
on:
workflow_dispatch:
pull_request:
types: [opened, reopened, labeled, synchronize]
jobs:
visual:
if: github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'visual-regression')
name: Visual regression (Playwright)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.3.0
- uses: pnpm/action-setup@v5.0.0
with:
version: 10.33.0
- uses: actions/setup-node@v4.0.4
with:
node-version: "24"
cache: "pnpm"
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Cache Playwright browsers
uses: actions/cache@v4
id: playwright-cache
with:
path: ~/.cache/ms-playwright
key: playwright-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml', 'apps/www/package.json') }}
- name: Install Playwright browsers
if: steps.playwright-cache.outputs.cache-hit != 'true'
run: pnpm --dir apps/www test:e2e:install
- name: Install Playwright OS deps
if: steps.playwright-cache.outputs.cache-hit == 'true'
run: pnpm --dir apps/www exec playwright install-deps chromium
- name: Build docs site
run: pnpm --dir apps/www build
- name: Run Playwright visual suite
run: pnpm --dir apps/www test:visual
- name: Upload Playwright report on failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: playwright-visual-report
path: apps/www/playwright-report
retention-days: 7