Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
9e61b38
docs(simu): propose unified UI automation plan
bultodepapas Aug 17, 2026
db1cde7
docs(simu): harden unified automation implementation plan
bultodepapas Aug 17, 2026
83563d0
docs(simu): record phase 0 baseline and gates
bultodepapas Aug 17, 2026
05672de
simu: add bounded automation protocol core
bultodepapas Aug 17, 2026
91638a4
simu: add cross-platform stdio transport
bultodepapas Aug 17, 2026
c2a7277
simu: add cross-platform automation client
bultodepapas Aug 18, 2026
035df27
feat(simu): wait for first-frame readiness
bultodepapas Aug 18, 2026
f957a23
feat(simu): add core UI input and frame barriers
bultodepapas Aug 18, 2026
1992a3d
feat(simu): add render-complete framebuffer capture
bultodepapas Aug 18, 2026
5bc741d
feat(simu): add state injection and lifecycle control
bultodepapas Aug 18, 2026
c6afd45
tools: add strict TX16S smoke scenario and fixtures
bultodepapas Aug 31, 2026
34fbdb1
simu: harden automation transport and lifecycle
bultodepapas Aug 31, 2026
e3fb2b7
docs: record simulator automation hardening evidence
bultodepapas Aug 31, 2026
e51022a
fix(simu): harden automation lifecycle and isolation
bultodepapas Sep 1, 2026
c4fb7ff
fix(tools): bound simulator automation sessions
bultodepapas Sep 1, 2026
0e58d34
ci(simu): extend automation validation gates
bultodepapas Sep 1, 2026
1d9bc51
docs(simu): request formal automation review
bultodepapas Sep 1, 2026
e274501
fix(simu): reject invalid UTF-8 capture paths
bultodepapas Sep 1, 2026
7d9f2a8
fix(tools): enforce protocol argument boundaries
bultodepapas Sep 1, 2026
26d088e
ci(simu): run native automation tests from build root
bultodepapas Sep 1, 2026
8c56a8e
docs(simu): publish final automation guide
bultodepapas Sep 1, 2026
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
127 changes: 127 additions & 0 deletions .github/workflows/simulator_ui_automation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
---
name: Simulator UI automation

on:
workflow_dispatch:
pull_request:
paths:
- '.github/workflows/simulator_ui_automation.yml'
- 'radio/src/targets/simu/automation_*'
- 'radio/src/targets/simu/CMakeLists.txt'
- 'radio/src/targets/simu/arg_parser.*'
- 'radio/src/targets/simu/sdl_simu.cpp'
- 'radio/src/tests/simu_automation_*'
- 'radio/src/tests/simu_arg_parser.cpp'
- 'radio/src/tests/CMakeLists.txt'
- 'radio/src/main.cpp'
- 'radio/src/gui/colorlcd/LvglWrapper.cpp'
- 'tools/ui-harness/**'
push:
branches:
- main
paths:
- '.github/workflows/simulator_ui_automation.yml'
- 'radio/src/targets/simu/automation_*'
- 'radio/src/targets/simu/CMakeLists.txt'
- 'radio/src/targets/simu/arg_parser.*'
- 'radio/src/targets/simu/sdl_simu.cpp'
- 'radio/src/tests/simu_automation_*'
- 'radio/src/tests/simu_arg_parser.cpp'
- 'radio/src/tests/CMakeLists.txt'
- 'radio/src/main.cpp'
- 'radio/src/gui/colorlcd/LvglWrapper.cpp'
- 'tools/ui-harness/**'

permissions:
contents: read

jobs:
host-tests:
name: Host tests (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- windows-latest
steps:
- name: Check out the repo
uses: actions/checkout@v7

- name: Compile Python sources
run: python -m compileall -q tools/ui-harness

- name: Run host and hardening tests
run: python -m unittest discover -s tools/ui-harness/tests -p "test_*.py" -v

native-radio-tests:
name: Native radio automation tests (ASan/UBSan)
runs-on: ubuntu-latest
timeout-minutes: 45
container:
image: ghcr.io/edgetx/edgetx-dev@sha256:75a076b11bcf82128f25261d4e3149b0b9aac9bd24f49fb74076b3d0e723686c
steps:
- name: Check out the repo and submodules
uses: actions/checkout@v7
with:
submodules: recursive

- name: Configure native TX16S tests
run: >-
cmake --preset simu
-B build/ci-automation-radio
-DPCB=X10
-DPCBREV=TX16S
-DCMAKE_BUILD_TYPE=Debug
-DTESTS_ASAN=ON
'-DCMAKE_C_FLAGS_DEBUG=-fsanitize=undefined -fno-sanitize-recover=undefined'
'-DCMAKE_CXX_FLAGS_DEBUG=-fsanitize=undefined -fno-sanitize-recover=undefined'

- name: Build native radio tests
run: cmake --build build/ci-automation-radio --target gtests-radio --parallel 2

- name: Run native radio tests
env:
ASAN_OPTIONS: detect_leaks=0:halt_on_error=1
UBSAN_OPTIONS: halt_on_error=1:print_stacktrace=1
run: >-
./build/ci-automation-radio/gtests-radio
--gtest_filter='SimuArgumentParser.*:SimuAutomation*.*'

wasi-isolation:
name: WASI automation isolation
runs-on: ubuntu-latest
timeout-minutes: 60
container:
image: ghcr.io/edgetx/edgetx-dev@sha256:75a076b11bcf82128f25261d4e3149b0b9aac9bd24f49fb74076b3d0e723686c
steps:
- name: Check out the repo and submodules
uses: actions/checkout@v7
with:
submodules: recursive

- name: Configure TX16S WASI superbuild
run: >-
cmake -S .
-B build/ci-automation-wasi
-DPCB=X10
-DPCBREV=TX16S
-DCMAKE_BUILD_TYPE=Release

- name: Build TX16S WASI module
run: >-
cmake --build build/ci-automation-wasi
--target wasi-module
--parallel 2

- name: Assert automation surface is absent
shell: bash
run: |
shopt -s nullglob
modules=(build/ci-automation-wasi/wasm/*.wasm)
test "${#modules[@]}" -gt 0
if grep -aE 'automation-stdio|automation-output|SIMU_AUTOMATION|AutomationStdio' "${modules[@]}"; then
echo "automation marker found in WASI output" >&2
exit 1
fi
Loading