Integration & Wiring: - useStore/useAppState wired into App.tsx (replaces 8 useState calls) - React Router wired at app root (URL-based navigation) - SparklineChart/MetricCard/BarChart integrated into Admin + Ethics pages - useNotifications.handleWSEvent wired into WebSocket handler - Notification center dropdown in header with unread badge - Locale selector added to Settings page (6 languages) - Dashboard data fetching with 10s polling into MetricCards - File drag-and-drop support on chat area Production Hardening: - PostgresStateBackend with connection pooling (psycopg2) - App lifespan wires backend from FUSIONAGI_DB_BACKEND env (memory|sqlite|postgres) - Redis cache wired from FUSIONAGI_REDIS_URL env at startup - Multi-process uvicorn config for horizontal scaling Testing: - Playwright visual regression tests (12 stories x 2 viewports) - k6 load test script with ramp/spike/ramp-down stages - 7 new Python tests (postgres fallback, app wiring) 575 Python tests + 45 frontend tests = 620 total, 0 ruff errors. Co-Authored-By: Nakamoto, S <defi@defi-oracle.io>
34 lines
752 B
TypeScript
34 lines
752 B
TypeScript
/**
|
|
* Visual regression testing with Playwright screenshots.
|
|
*
|
|
* Run: npx playwright test --config=e2e/visual.config.ts
|
|
*/
|
|
|
|
import { defineConfig, devices } from '@playwright/test'
|
|
|
|
export default defineConfig({
|
|
testDir: '.',
|
|
testMatch: 'visual.spec.ts',
|
|
timeout: 30000,
|
|
expect: {
|
|
toHaveScreenshot: {
|
|
maxDiffPixelRatio: 0.05,
|
|
threshold: 0.2,
|
|
},
|
|
},
|
|
use: {
|
|
baseURL: 'http://localhost:6006', // Storybook
|
|
screenshot: 'on',
|
|
},
|
|
projects: [
|
|
{ name: 'desktop', use: { ...devices['Desktop Chrome'] } },
|
|
{ name: 'mobile', use: { ...devices['iPhone 13'] } },
|
|
],
|
|
webServer: {
|
|
command: 'npx storybook dev -p 6006 --no-open',
|
|
port: 6006,
|
|
reuseExistingServer: true,
|
|
timeout: 60000,
|
|
},
|
|
})
|