Two engines, one QA workspace.
Playwright handles UI and browser journeys through Private Runners. Pytest focuses on API, backend, data and AI testing through a separately deployable Python service. TestPilotWorks unifies run submission, state and aggregate reporting without combining execution queues.
The Pytest engine is a separately deployable, proprietary component. Approved customers can use it in enterprise projects, Docker and CI under an appropriate agreement. Request a demo or evaluation access →
Run locally with Docker after approved access.
For an authorized deployment, obtain the engine package or repository access from TestPilotWorks, then configure the environment and start the container.
Check http://localhost:8080/health. Interactive OpenAPI docs are available at http://localhost:8080/docs. Set TPW_ENGINE_API_KEY for authenticated engine use.
Stable execution contract.
| METHOD | ENDPOINT |
|---|---|
| GET | /health |
| GET | /v1/engine |
| POST | /v1/runs |
| GET | /v1/runs/{run_id} |
| POST | /v1/runs/{run_id}/cancel |
| GET | /v1/runs/{run_id}/artifacts/junit |
Suite names refer to YAML suites available on the Pytest service. Results include execution status and supported test summary fields.
Connect an independent Pytest service.
Set these values on the TestPilotWorks server-side control plane:
Set the matching value on the Pytest service:
Configure the project target URL, select Pytest in Run test, and choose a suite such as api-demo.yaml. The control plane calls the Engine API and synchronizes status into Execution History. This does not use Playwright's job lease queue.
Separate credentials and data boundaries.
- Keep bearer tokens server-side, never in browser JavaScript.
- Use HTTPS and restrict inbound access to the engine service.
- Use isolated execution and least-privilege credentials for customer systems.
- Use read-only SQL accounts by default and redact sensitive outputs.
- Restrict target hosts and limit execution time in production deployments.
Verify the full execution path.
- Connection failed: check deployed engine URL, TLS and service health.
- 401 Unauthorized: verify both API key values match.
- Suite not found: check YAML suite filenames in the engine's suites directory.
- Wrong target: check project targetBaseUrl and runtime variables.
See the main documentation or request evaluation access for a managed or standalone deployment.