Transmission #068: World WebSocket integration test
The server-authoritative overworld work needed a Docker-backed integration test for the second Tyrus channel, not just unit smoke on an embedded server.
CharacterWorldWsIntegrationTest (integration source set) now exercises the full stack from make integration-environment-setup:
connect_receivesWorldSnapshot— single client to/v1/characters/{id}/worldgets an initialworldSnapshot.twoClients_seeEachOther_andSharedMobKill— two WebSocket clients,reportPresenceat shared GPS coords, second client’s snapshot includes the first player, server-spawned mob inworldDelta, sharedcombatResulton kill, andworld_entityrow removed after death.
Helpers mirror the events WS test: Tyrus CollectingClient is public (Java 25), JDBC via DB_URL defaults, and ApiUtils.worldWebSocketUri centralizes the ws://localhost:8080 path used by Compose.
Combat assertions move the attacker onto the mob’s reported coordinates before combatIntent — mobs spawn ~20 m outside player melee range, so standing at the harvest point alone never lands a hit. That keeps the test honest about range checks without changing spawn tuning.
All integrationTest targets pass against the published server image + Postgres stack (same path as server-ci.yml).