The test-runners job was failing because network_mode: host puts the
armature container on DinD's network namespace, unreachable from the
workflow container which is on a separate bridge network.
Fix: Remove host networking entirely. Add a test-runner service to the
CI compose override that runs Playwright tests on the same bridge
network as armature, using Docker DNS (http://armature:80).
Changes:
- docker-compose.ci.yml: Replace network_mode: host with healthcheck
on armature + Playwright test-runner service (depends_on: healthy)
- ci.yaml: Collapse 7 test-runners steps into 3 (checkout, compose
up --exit-code-from test-runner, teardown)
The previous fix (container IP resolution) still failed because the
CI runner and compose containers are on separate Docker networks.
- Add docker-compose.ci.yml override with network_mode: host so the
container shares the runner's network stack directly
- Add --connect-timeout 2 to curl in wait-for-healthy.sh so it fails
fast instead of hanging indefinitely on unreachable hosts
- Cap health check at 30s (server boots in 5-10s)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>