name: UI Visual on: push: branches: [master] pull_request: branches: [master] defaults: run: working-directory: packages/ui jobs: files-changed: name: Detect File Changes runs-on: ubuntu-latest outputs: ui: ${{ steps.changes.outputs.ui }} steps: - name: Checkout uses: actions/checkout@v6 - name: Check for file changes uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 id: changes with: token: ${{ github.token }} filters: .github/file-filters.yml visual: name: Visual Regression if: needs.files-changed.outputs.ui == 'true' needs: files-changed runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v6 - name: Setup Node.js uses: actions/setup-node@v6 with: node-version-file: 'packages/ui/.tool-versions' cache: 'npm' cache-dependency-path: packages/ui/package-lock.json - name: Install dependencies run: npm ci - name: Install Playwright browsers run: npx playwright install chromium --with-deps - name: Run visual tests run: npm run test:visual - name: Upload test results uses: actions/upload-artifact@v6 if: failure() with: name: visual-test-results path: | packages/ui/test-results/ packages/ui/playwright-report/ retention-days: 7