Add browser-level end-to-end test coverage
- Dominant language
- TypeScript
- Stars
- 481
- Forks
- 108
- Avg merge
- 8d 9h
- Merged PRs (30d)
- 7
Description
## Problem
The repo has strong unit and component coverage (170+ unit and 25 component test files) but no browser-level end-to-end tests. Nothing exercises the real stack: the UI driving real queries through the proxy server against a real graph database.
Two recent bugs illustrate the gap:
- #2068: unit tests passed while the rendered UI sent an unlimited expansion request. Only a browser-level test observing the outgoing query catches this class of bug.
- #1977: error display behavior depended on how a real server response flows through fetch, parsing, and the error boundary. Reproducing it required a live browser against a live endpoint.
## Proposal
A small Playwright suite that runs the full stack locally and in CI:
1. `tinkerpop/gremlin-server` in Docker using the bundled `conf/gremlin-server-rest-modern.yaml` (HTTP endpoint, modern sample graph preloaded, no auth). Starts in seconds and needs no AWS resources.
2. The existing proxy server and dev server, exactly as `pnpm dev` runs them.
3. Playwright driving Chrome: create a connection, sync schema, search, add nodes, expand neighbors, and assert on both the rendered UI and the captured Gremlin requests.
I have a working prototype of this exact stack. It produced the before/after evidence on #2069 (screenshots plus captured request bodies proving the missing `.range()` clause) and an earlier variant produced the evidence on #1979 with a stub server. The pieces that exist today: launch orchestration, connection setup flow, schema sync wait, node-to-canvas flow, expand panel interaction, and network capture.
## Suggested starting scope
- One smoke test per query language reachable with local engines (Gremlin now via TinkerPop; openCypher and SPARQL as follow-ups if suitable local engines are agreed on)
- The critical analyst path: connect, sync, search, add to canvas, expand with limit
- CI job with the Docker service, gated to run on PRs
## Out of scope for a first pass
- Visual regression testing
- Neptune-specific behavior (engine differences like #1798 still need a real cluster)
- Full cross-browser matrix
Happy to contribute this incrementally, starting with the harness plus two or three smoke tests, if the approach sounds right to the team.
Contributor guide
Research direction
Start with the existing `pnpm dev` entry point and the bundled `conf/gremlin-server-rest-modern.yaml` used by TinkerPop. Review the existing launch orchestration, connection setup, schema sync, canvas flow, expand interaction, and network capture from the working prototype. Done means a Playwright smoke path runs against the local Docker-backed stack, checks the UI and captured Gremlin requests, and is gated in CI.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, playwright, react, typescript
- Domain
- ci-cd, devops, testing
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100