Skip to content

AutoTester: Docker-based in-game integration test framework#491

Draft
Skidamek wants to merge 16 commits into
mainfrom
autotester-upstream
Draft

AutoTester: Docker-based in-game integration test framework#491
Skidamek wants to merge 16 commits into
mainfrom
autotester-upstream

Conversation

@Skidamek
Copy link
Copy Markdown
Owner

@Skidamek Skidamek commented May 20, 2026

Adds a full autotester framework that spins up headless Minecraft server + client Docker containers, drives the in-game UI via AutoTestBridge (file-based JSON bridge), and validates real UX flows e.g. (connect -> fingerprint -> sync/update -> restart -> rejoin) across all 20 version/loader targets.

What's included

autotester/ Python package - phase-driven runner with declarative YAML scenarios:

  • cli.py - autotester build-images, autotester run, autotester clean
  • runner.py - phase orchestration + Docker lifecycle (containers, networks, volumes, log waits, cleanup)
  • bridge.py - polls bridge-command.json / bridge-response.json every 50ms with a 30s timeout
  • config.py - YAML loading for settings.yaml, targets.yaml, scenarios/*.yaml
  • Scenarios: sync (full end-to-end + rejoin) and download-only (no restart, faster debug)

AutoTestBridge.java - registered via mod initializers; exposes:
ping, get_screen, get_widgets, click, set_text, set_screen, connect, verify_fingerprint, quit

CI (.github/workflows/ingame-tests.yml):

  • prepare builds the target matrix from targets.yaml
  • build reuses the shared build workflow (build.yml) and publishes merged jars as build-artifacts
  • ingame runs a fail-fast: false matrix, downloads artifacts, builds the client image, and runs the scenario
  • report aggregates results.json, emits ::error annotations, and posts a summary table to $GITHUB_STEP_SUMMARY

Infrastructure cleanup:

  • Dropped support for few not widely used versions (1.21.3, 1.20.6, 1.20.4, 1.19.4)

How to run

./gradlew build
uv --project autotester run autotester build-images
uv --project autotester run autotester run --target 1.21.11-fabric --jobs 3

Skidamek added 16 commits May 20, 2026 14:40
Adds a docker-based autotest framework that runs real Minecraft
server + client containers, drives the UI through a file-based
JSON bridge (AutoTestBridge), and validates the modpack sync flow
against 22 version/loader targets.

Includes mod-side changes required to expose UI state for testing:
AutoTestBridge, async certificate trust helpers, EditBox inputText
persistence, and infrastructure cleanup for unsupported MC versions.
Adds a docker-based autotest framework that runs real Minecraft
server + client containers, drives the UI through a file-based
JSON bridge (AutoTestBridge), and validates the modpack sync flow
against 22 version/loader targets.

Includes mod-side changes required to expose UI state for testing:
AutoTestBridge, async certificate trust helpers, EditBox inputText
persistence, and infrastructure cleanup for unsupported MC versions.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant