Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions .github/workflows/remote-engine-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: Remote engine tests

# Runs remote_engine_test/ (lib/services/remote_game_engine.dart exercised
# directly against a dockerized CRG scoreboard server, no app UI/emulator
# involved) as a matrix across every supported scoreboard version, and
# publishes each version's results as a separate GitHub Check via
# dorny/test-reporter.
#
# Runs on every PR targeting main, plus manual dispatch. Not yet marked as
# a required check in branch protection - do that once this has proven
# reliable (note: required-status-checks needs each matrix job's check name
# listed individually, or a small aggregator job that depends on the whole
# matrix, since branch protection doesn't understand matrix jobs as a unit).
on:
workflow_dispatch:
pull_request:
branches: [main]

permissions:
contents: read
checks: write

jobs:
remote-engine-tests:
name: Remote engine tests (${{ matrix.version }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
version:
# Ignoring old v2023.7 until failing test is investigated
# - v2023.7
- v2025.0
- v2025.1
- v2025.2
- v2025.3
- v2025.4
- v2025.5
- v2025.6
- v2025.7
- v2025.8
- v2025.9

steps:
- uses: actions/checkout@v7

- uses: subosito/flutter-action@v2
with:
channel: stable

- uses: actions/cache@v6
with:
path: ~/.pub-cache
key: pub-${{ hashFiles('**/pubspec.lock') }}
restore-keys: pub-

- name: Install dependencies
run: flutter pub get

- name: Build scoreboard Docker image
run: ./scripts/build-scoreboard-images.sh --versions "${{ matrix.version }}"

- name: Run remote engine tests
run: ./scripts/test-remote-engine-scoreboards.sh --versions "${{ matrix.version }}"

- name: Upload test result JSON
if: always()
uses: actions/upload-artifact@v7
with:
name: remote-engine-test-results-${{ matrix.version }}
path: test-results/*.json
if-no-files-found: warn

- name: Publish test report
if: always()
uses: dorny/test-reporter@v3
with:
name: Remote engine tests (${{ matrix.version }})
path: 'test-results/*.json'
reporter: flutter-json
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,9 @@ unlinked_spec.ds
# Coverage
coverage/

# Machine-readable test reports (scripts/test-*-scoreboards.sh --results-dir)
/test-results/

# Symbols
app.*.symbols

Expand Down
Loading
Loading