Repositories: testgator_client ( frontend) · testgator_server (backend)
TestGator helps teams organize software testing to fight back against bugs.
Built for non-technical testers — no setup, no jargon. Just clear testing plans, simple feedback, and results everyone can understand. Instead of asking testers to file bug reports through a dev tool, TestGator lets them sign in with nothing but their email: they enter it, get a one-time code, and land straight in their assigned testing plan. They work through it step by step, calling each one PASS / PASS (with bug) / FAILED with comments, screenshots, and files where it helps — while TestGator quietly captures browser, OS, screen resolution, and geolocation in the background, so devs get context instead of "it's broken, trust me."
Testing plans · Releases · Feedback · Open source
- Reduce testing chaos — bring structure to testing so teams can focus on building great software instead of chasing testers for status updates.
- Make feedback simple — testers share clear, structured feedback with files and context, without learning a dev tool.
- Keep quality visible — progress stays transparent and collaboration effortless, for testers and developers alike.
- Interactive testing plans — dev teams build structured, step-by-step test plans.
- Email OTP login for testers — testers sign in with their email and a one-time code, no password or account setup.
- Simple feedback — PASS / PASS (with bug) / FAILED, plus comments and file/screenshot uploads.
- Automatic environment capture — browser, OS, screen resolution, geolocation, no manual reporting.
- Projects & releases — plans are organized under releases, releases under projects.
- Role-based tester assignment — reuse testers across plans or assign fresh ones.
- Two auth modes for the product/dev team — local database accounts or LDAP, selectable per deployment (testers always use email OTP, separate from this).
TestGator ships as two independently deployed applications:
| Component | Path | Stack |
|---|---|---|
| Client | testgator_client |
React 19 + Vite, served as a static build via Nginx |
| Server | testgator_server |
Symfony 7.2 + API Platform 4 (PHP ≥8.4), running on FrankenPHP/Caddy |
The server also expects a PostgreSQL database and, for file uploads, an S3-compatible bucket. Team/dev logins can run
against the server's own internal user database (default) or against an LDAP server — LDAP is optional, not required. A
Mercure hub is bundled into the FrankenPHP image for future realtime updates, but it's currently disabled (commented
out in docker/frankenphp/Caddyfile) — nothing publishes or subscribes to it yet.
testgator_client— the tester/dev-facing web GUI.testgator_server— the REST API: projects, releases, plans, feedback, auth, file uploads.
Prerequisites: Docker, PostgreSQL (or use the bundled dev DB in the server's compose.yml).
# server
cd testgator_server
cp .env .env.local # then edit secrets
make up # docker compose up, dev image with hot reload
# client
cd testgator_client
npm install
npm run devSee each package's own docs for details — this file focuses on shipping the published Docker images.
TestGator is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0-only) — see
testgator_server/LICENSE / testgator_client/LICENSE.
In short: you're free to use, modify, and redistribute the code, including running it as a hosted service — but the AGPL's network clause applies. If you run a modified version and make it available to users over a network, you must offer those users the corresponding modified source code.
A couple of things the AGPL does not grant, per the project's NOTICE file:
- The TestGator name, logo, and branding aren't covered by the license — you can't present a fork or self-hosted instance as the official project without arkdevuk's permission.
- "Official" TestGator releases, hosted services, support, and docs come only from arkdevuk or parties they explicitly authorize.
If you fork or self-host, keep the LICENSE/NOTICE files intact and identify your instance as independent/unofficial.
Pick a guide based on how you want to run it:
docker-swarm/— Docker Swarm clusterk8s/— Kubernetes clusterdocker-single-node/— a single server with plain Docker
Each folder has its own step-by-step readme and a ready-to-edit example manifest.