an atproto based link aggregator

Use nixpkgs chromium for browser tests in CI

Configure vitest to use system chromium via PLAYWRIGHT_CHROMIUM_PATH
environment variable. This allows browser tests to run in CI using
nixpkgs chromium instead of Playwright's bundled browsers.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

+12 -6
+6 -5
.tangled/workflows/ci.yaml
··· 10 10 nixpkgs: 11 11 - nodejs_22 12 12 - pnpm 13 + - gnused 13 14 - chromium 14 - - gnused 15 + 16 + environment: 17 + PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS: 'true' 18 + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: '1' 15 19 16 20 steps: 17 21 - name: Install dependencies 18 22 command: pnpm install --frozen-lockfile 19 - 20 - - name: Install Playwright browsers 21 - command: pnpm exec playwright install chromium 22 23 23 24 - name: Build lexicons 24 25 command: pnpm lex:build ··· 36 37 command: pnpm check 37 38 38 39 - name: Run tests 39 - command: pnpm test 40 + command: PLAYWRIGHT_CHROMIUM_PATH=$(which chromium) pnpm test
+6 -1
vite.config.ts
··· 3 3 import { sveltekit } from '@sveltejs/kit/vite'; 4 4 import tailwindcss from '@tailwindcss/vite'; 5 5 6 + // Use system chromium if PLAYWRIGHT_CHROMIUM_PATH is set (for CI with nixpkgs) 7 + const chromiumPath = process.env.PLAYWRIGHT_CHROMIUM_PATH; 8 + 6 9 export default defineConfig({ 7 10 plugins: [tailwindcss(), sveltekit()], 8 11 test: { ··· 14 17 name: 'client', 15 18 browser: { 16 19 enabled: true, 17 - provider: playwright(), 20 + provider: playwright({ 21 + launch: chromiumPath ? { executablePath: chromiumPath } : {} 22 + }), 18 23 instances: [{ browser: 'chromium', headless: true }] 19 24 }, 20 25 include: ['src/**/*.svelte.{test,spec}.{js,ts}'],