Status History
May 29, 04:00 PM Pending
May 29, 04:05 PM In Progress
May 29, 07:24 PM In Progress
May 29, 07:25 PM In Progress
Technical Specification
Frontend
React SPA (Vite + TypeScript)
Backend
Express.js REST API
Database
PostgreSQL via Neon
Hosting
Render (Node.js + Static Site)
Summary

E2E Test Project is a full-stack end-to-end test management platform that allows engineering teams to define test suites, trigger and monitor test runs asynchronously, and analyze historical pass/fail trends through a rich dashboard. The platform supports CI/CD integration via webhooks and scheduled runs, stores failure artifacts like screenshots and videos in Cloudflare R2, and delivers email alerts through SendGrid. What makes it interesting is the combination of real-time run monitoring, deep per-test reporting, and a developer-friendly API key system that fits naturally into modern deployment pipelines.

File Structure
server.js Entry point for the Express.js backend server, sets up middleware and mounts routes
routes/api.js Main API router that aggregates all sub-routes for test suites, runs, and results
routes/testSuites.js CRUD endpoints for managing E2E test suites and their configurations
routes/testRuns.js Endpoints for triggering, monitoring, and retrieving test run executions
routes/results.js Endpoints for fetching detailed test results, logs, and screenshots
routes/auth.js Authentication endpoints for user registration, login, and token refresh
middleware/auth.js JWT verification middleware to protect authenticated routes
middleware/errorHandler.js Global error handling middleware for consistent API error responses
db/index.js PostgreSQL connection pool setup using the Neon serverless driver
db/schema.sql SQL schema definitions for users, test suites, test runs, and results tables
db/migrations/001_initial.sql Initial database migration creating all core tables and indexes
services/testRunner.js Core service that orchestrates test execution, manages queues, and reports results
services/notifier.js Service for sending email notifications on test completion or failure
services/storage.js Service for uploading and retrieving test artifacts such as screenshots and videos to R2
workers/runWorker.js Background worker process that picks up queued test runs and executes them asynchronously
client/src/main.tsx React application entry point, sets up router and global providers
client/src/App.tsx Root application component defining top-level routes and layout
client/src/pages/Dashboard.tsx Main dashboard showing summary stats, recent runs, and pass/fail trends
client/src/pages/TestSuites.tsx Page for listing, creating, editing, and deleting test suites
client/src/pages/TestRunDetail.tsx Detailed view of a single test run showing per-test results, logs, and screenshots
client/src/pages/History.tsx Paginated history of all past test runs with filtering and search
client/src/pages/Settings.tsx User and project settings including notification preferences and API key management
client/src/pages/Login.tsx Authentication page for user login and registration
client/src/components/RunStatusBadge.tsx Reusable badge component displaying pass, fail, running, or queued status
client/src/components/TestResultsTable.tsx Sortable and filterable table component for displaying individual test case results
client/src/components/TrendChart.tsx Line chart component visualizing pass/fail rates over time using Recharts
client/src/components/ScreenshotViewer.tsx Modal component for viewing test failure screenshots and video replays
client/src/components/Navbar.tsx Top navigation bar with project switcher, user menu, and notifications
client/src/hooks/useTestRuns.ts Custom React hook for fetching and polling live test run status
client/src/hooks/useAuth.ts Custom hook managing authentication state, login, logout, and token storage
client/src/api/client.ts Axios instance configured with base URL, auth headers, and response interceptors
client/src/store/index.ts Zustand global state store for auth, active project, and notification state
client/vite.config.ts Vite build configuration with proxy settings for local API development
.env.example Example environment variable file documenting all required configuration keys
package.json Root package manifest with scripts for running server, client, and workers concurrently
Features (9)
User Authentication & Authorization P1
Secure user registration, login, and JWT-based session management with role support.
  • Users can register with email and password; passwords are hashed with bcrypt
  • Users can log in and receive a signed JWT access token and a refresh token
  • Protected API routes return 401 if no valid token is provided
  • Tokens expire and can be refreshed without requiring re-login
  • Users can log out, invalidating their refresh token
Test Suite Management P2
Full CRUD interface for defining and organizing E2E test suites with configuration options.
  • Users can create a test suite with a name, description, target URL, and browser configuration
  • Users can edit and delete existing test suites
  • Test suites are listed in a searchable, sortable table
  • Each suite can have tags applied for filtering and grouping
  • Suite configuration supports environment variable injection for test scripts
Test Run Execution P3
Trigger and manage asynchronous E2E test runs with real-time status updates.
  • Users can manually trigger a test run for any suite from the UI
  • Runs are queued and processed asynchronously by the background worker
  • Run status updates (queued, running, passed, failed) are reflected in the UI within 5 seconds via polling
  • Users can cancel a queued or running test run
  • Each run records start time, end time, duration, and total test count
Detailed Test Results & Reporting P4
Per-test-case result reporting with logs, error messages, and failure screenshots.
  • Each test run displays a breakdown of individual test case pass/fail status
  • Failed tests show the error message and stack trace
  • Screenshots captured on failure are displayed in a modal viewer
  • Full console and network logs are accessible per test case
  • Results can be exported as a JSON or CSV report
Dashboard & Trend Analytics P5
Visual dashboard summarizing test health, recent activity, and historical pass/fail trends.
  • Dashboard displays total suites, total runs, overall pass rate, and last run time
  • A line chart shows pass/fail trends over the last 30 days
  • Recent runs are listed with status, suite name, and duration
  • Users can filter trend data by suite or date range
  • Dashboard data refreshes automatically every 60 seconds
Artifact Storage (Screenshots & Videos) P6
Upload and serve test failure screenshots and video recordings via Cloudflare R2.
  • Screenshots taken during failed tests are automatically uploaded to R2 after a run completes
  • Signed URLs are generated for secure, time-limited access to artifacts
  • Artifacts are associated with their specific test case result in the database
  • Artifacts older than 90 days are automatically purged via a scheduled cleanup job
  • Video recordings of test runs can be viewed inline in the TestRunDetail page
Scheduled Test Runs (CI/CD Triggers) P7
Allow test suites to be triggered on a schedule or via webhook for CI/CD pipeline integration.
  • Users can configure a cron schedule per test suite for automatic execution
  • Each suite has a unique webhook URL that triggers a run when called with a POST request
  • Webhook calls support an optional API key for authentication
  • Scheduled runs appear in the run history identically to manual runs
  • Users can enable or disable schedules without deleting the configuration
Notifications & Alerting P8
Send email notifications to users when test runs complete or fail.
  • Users can configure email notifications per suite for on-failure or always
  • Notification emails include suite name, run status, pass rate, and a link to the results
  • Emails are sent via SendGrid within 2 minutes of run completion
  • Users can unsubscribe from notifications via a link in the email
  • Notification preferences are manageable from the Settings page
API Key Management P9
Allow users to generate and revoke API keys for programmatic access to the platform.
  • Users can generate named API keys from the Settings page
  • API keys are displayed only once at creation and stored as hashed values
  • API keys can be used as Bearer tokens to authenticate all REST API endpoints
  • Users can revoke any API key, immediately invalidating it
  • Each API key shows its creation date and last-used timestamp
Build Log
scoping Starting AI-powered tech spec generation
scoping Starting AI-powered tech spec generation
scoping Tech spec generated successfully
start Build orchestration started for project 1
attempt Build attempt 1/3
scoping Tech spec generated successfully
start Build orchestration started for project 1
attempt Build attempt 1/3
generate Attempt 1 failed: AI generation failed: Unterminated string in JSON at position 23031 failed
retry Retrying (2/3)...
attempt Build attempt 2/3
generate Attempt 1 failed: AI generation failed: Unterminated string in JSON at position 21765 failed
retry Retrying (2/3)...
attempt Build attempt 2/3
generate Attempt 2 failed: AI generation failed: Unterminated string in JSON at position 22884 failed
retry Retrying (3/3)...
attempt Build attempt 3/3
generate Attempt 2 failed: AI generation failed: Unterminated string in JSON at position 21981 failed
retry Retrying (3/3)...
attempt Build attempt 3/3
generate Attempt 3 failed: AI generation failed: Unterminated string in JSON at position 22668 failed
complete Build failed after 3 attempts failed
status Project status updated to Build Failed
generate Attempt 3 failed: AI generation failed: Unterminated string in JSON at position 21837 failed
complete Build failed after 3 attempts failed
status Project status updated to Build Failed
Deliverables
📦

Deliverables become available once project reaches Review status.