mirror of
https://github.com/tiennm99/DocsGPT.git
synced 2026-10-09 16:15:13 +00:00
Aborts /api/store_attachment, attaches a file, waits for the failed chip's reason, then sends. Checks that one /stream request goes out with no attachment ids, that the question is in the thread and the chip is gone, and that the stored message has no attachments.
DocsGPT E2E Tests
End-to-end tests for DocsGPT, driven by Playwright against the full native
dev stack (Flask + Celery + Vite + a mock LLM stub), backed by a disposable
docsgpt_e2e Postgres database.
This is an isolated Node workspace. It has its own package.json so
Playwright never ends up in the frontend app bundle.
Quick start
# 1. Install JS deps (first time only).
npm install
# 2. Install the Chromium browser Playwright will drive (first time only).
npm run e2e:install
# 3. Bake the Postgres template DB (one-time, idempotent).
../../scripts/e2e/bake_template.sh
# 4. Run the whole suite: boots services, runs tests, tears down.
npm run e2e
Interactive development
When iterating on a spec you want the services up across many runs:
npm run e2e:up # boot Flask + Celery + Vite + mock LLM, leave them running
npm run e2e:ui # open Playwright UI against the running stack
npm run e2e:down # tear down when done
Reports
After a run, view the HTML report:
npm run e2e:report
Traces, screenshots, and videos for failed tests land under test-results/.
Trace is captured on-first-retry (the first attempt runs clean; the retry
records for debugging).
Structure
specs/— test files, grouped by tier (auth/,tier-a/,tier-b/,tier-c/).helpers/— shared TypeScript helpers:auth.ts,db.ts,reset.ts,api.ts. Imported via the@helpers/*path alias.fixtures/— static fixture documents (PDFs, markdown, text) used by upload specs. Body content must be deterministic — no dates, UUIDs, or random tokens.