95 lines
2.5 KiB
Markdown
95 lines
2.5 KiB
Markdown
# Project Outline: Playwright Dashboard v1
|
|
|
|
## Core Features (v1)
|
|
|
|
### Dashboard UI
|
|
|
|
- Submit a new scan job (manual URL entry, or import from sitemap)
|
|
- Choose from predefined scan profiles (fixtures)
|
|
- Show queued/running/completed jobs
|
|
- View summary results per scan (pass/fail counts, screenshot diffs, timestamp)
|
|
- Download or inspect full logs, JSON reports, etc.
|
|
|
|
### Scan Runner (Worker)
|
|
|
|
- Headless Playwright runner service
|
|
- Consumes scan jobs from a queue or task table
|
|
- Runs tests per scan profile
|
|
- Saves structured results and artifacts to DB/storage
|
|
|
|
### Database
|
|
|
|
- Users (optional for v1; could just be open if internal)
|
|
- ScanJobs: id, status, URLs, scanProfile, createdAt, startedAt, finishedAt, etc.
|
|
- ScanResults: per URL, with status, screenshot, log, metadata
|
|
- Fixtures: reusable definitions that map to Playwright test setups
|
|
|
|
### Storage
|
|
|
|
Store screenshots, JSON logs, reports (could use DO Spaces or local disk initially)
|
|
|
|
### Authentication (Optional)
|
|
|
|
Basic auth or DigitalOcean OAuth proxy if needed (internal access)
|
|
|
|
## Suggested Tech Stack
|
|
|
|
### Frontend
|
|
|
|
- Framework: TBD
|
|
- Styling: Tailwind CSS
|
|
- Charts/Graphs: Chart.js or Recharts (for pass/fail summaries)
|
|
|
|
### Backend / API
|
|
|
|
- Language: Node.js (needed for Playwright)
|
|
- Playwright Integration: Separate worker or job processor using the Playwright API
|
|
- Job Queue: PostgreSQL-backed status tracking
|
|
|
|
### Playwright Worker
|
|
|
|
Node service that:
|
|
|
|
- Polls DB for new jobs
|
|
- Runs Playwright with specified profile
|
|
- Uploads artifacts and writes results to DB
|
|
|
|
### Database
|
|
|
|
Postgres
|
|
Tables: users (optional), scan_jobs, scan_results, fixtures
|
|
|
|
### File Storage
|
|
|
|
DO Spaces or local volume
|
|
|
|
Store screenshots, accessibility reports, raw output JSON
|
|
|
|
## Deployment (DigitalOcean App Platform)
|
|
|
|
- One service: Dashboard App
|
|
- One background service: Worker (Playwright runner)
|
|
- Shared Postgres DB and Spaces bucket
|
|
|
|
## Flow Overview
|
|
|
|
```plaintext
|
|
User → Web UI → Submit scan job
|
|
↓
|
|
Writes to DB
|
|
↓
|
|
Worker polls → finds new job
|
|
↓
|
|
Runs Playwright tests → stores results/screenshots
|
|
↓
|
|
UI polls for job status or gets WS update
|
|
↓
|
|
Displays results + logs
|
|
```
|
|
|
|
## Dev Considerations
|
|
|
|
- Full local dev via docker-compose (Web UI + DB + Worker)
|
|
- Test fixtures in a tests/ folder, easy to map/override
|
|
- Webhook or CLI trigger support (so we could scan on deploy or PR merge)
|