GOTRS 0.4.0 shipped with a Playwright acceptance harness that runs entirely inside the toolbox container. No local browser installation needed.
The Problem
Local Playwright setups are notoriously flaky. Different Chrome versions across machines. Missing dependencies on Linux. Path issues on macOS. One developer’s tests pass, another’s fail, and nobody knows why.
We needed browser tests we could trust. Tests that pass locally should pass in CI. Tests that fail should fail for real reasons, not environmental quirks.
Our Solution
make test-acceptance-playwright spins up everything in containers:
- The toolbox container with Playwright and Chromium
- The application under test
- Test database with seed data
Playwright captures screenshots and traces on failure, making debugging straightforward even when tests run in CI.
The main challenges were Docker networking (Chromium can’t resolve localhost inside containers) and seed data timing (tests failing because the database wasn’t ready). Health checks and retry logic solved both.
The Benefits
Deterministic browser tests. If it passes on your machine, it passes in CI. If it fails in CI, you can reproduce it locally.
Screenshots and traces from failures make debugging remote CI runs practical. No more “it works for me” when the pipeline is red.
New contributors can run the full acceptance suite without installing browsers, Node.js, or any Playwright dependencies locally.
Beyond Playwright, this release added preferred queue auto-selection, not-closed filters for ticket lists, and login UX polish. But the containerised testing infrastructure is what will keep paying dividends.