565c132848
A Gitea Actions workflow (.gitea/workflows/ci.yml) running the headless test suite on push, plus shared test scaffolding: seeded-RNG / approx / tally helpers (test_helpers.gd), a harness self-test, and a resolution + pseudo-locale UI-layout robustness guard. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CCyaJPTHCH9EDthpf4A5Sj
66 lines
2.0 KiB
Bash
Executable File
66 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Run all project tests. Exit code 0 = all passed.
|
|
# Usage: bash run_tests.sh [--no-gameplay]
|
|
set -euo pipefail
|
|
|
|
GODOT="${GODOT:-godot}"
|
|
SKIP_GAMEPLAY=0
|
|
for arg in "$@"; do [[ "$arg" == "--no-gameplay" ]] && SKIP_GAMEPLAY=1; done
|
|
|
|
echo "=== gdlint ==="
|
|
gdlint actors systems ui props levels tests
|
|
|
|
echo ""
|
|
echo "=== Harness self-test (shared test_helpers: seeded RNG + approx + tally) ==="
|
|
"$GODOT" --headless --script tests/harness_selftest.gd
|
|
|
|
echo ""
|
|
echo "=== Logic tests ==="
|
|
"$GODOT" --headless --script tests/logic_test.gd
|
|
|
|
echo ""
|
|
echo "=== Damage pipeline (bull's hit reception through DamageEvent) ==="
|
|
"$GODOT" --headless --script tests/damage_pipeline_test.gd
|
|
|
|
echo ""
|
|
echo "=== FX gallery smoke (every registered Fx effect spawns + frees) ==="
|
|
"$GODOT" --headless --script tests/fx_gallery_test.gd
|
|
|
|
echo ""
|
|
echo "=== Console focus tests ==="
|
|
"$GODOT" --headless --script tests/console_focus_test.gd
|
|
|
|
echo ""
|
|
echo "=== Level switch tests (no cross-level geometry/collider leaks) ==="
|
|
"$GODOT" --headless --script tests/level_switch_test.gd
|
|
|
|
echo ""
|
|
echo "=== Touch control tests (joystick self-heals, never strands) ==="
|
|
"$GODOT" --headless --script tests/touch_controls_test.gd
|
|
|
|
echo ""
|
|
echo "=== UI layout tests (HUD stays on-screen, text fits, tap targets, scroll — across resolutions) ==="
|
|
"$GODOT" --headless --script tests/ui_layout_test.gd
|
|
|
|
echo ""
|
|
echo "=== Rigid-skin tests (web mesh conversion keeps all materials) ==="
|
|
"$GODOT" --headless --script tests/rigid_skin_test.gd
|
|
|
|
echo ""
|
|
echo "=== Performance tests (frame-budget regression guard) ==="
|
|
"$GODOT" --headless --script tests/performance_test.gd
|
|
|
|
echo ""
|
|
echo "=== Ragdoll perf (on-hit spike breakdown: build / sim-start / burst / mass hit) ==="
|
|
"$GODOT" --headless --script tests/ragdoll_perf_test.gd
|
|
|
|
if [[ "$SKIP_GAMEPLAY" -eq 0 ]]; then
|
|
echo ""
|
|
echo "=== Gameplay tests (headless — assertions only, screenshots may be blank) ==="
|
|
"$GODOT" --headless --script tests/gameplay_test.gd
|
|
echo "Frame strip: tests/output/gameplay/"
|
|
fi
|
|
|
|
echo ""
|
|
echo "=== All tests passed ==="
|