CI: Add action to run Maestro tests, along with simple tests#3298
CI: Add action to run Maestro tests, along with simple tests#3298guusdk merged 3 commits intoigniterealtime:mainfrom
Conversation
7ac8eef to
38b0122
Compare
38b0122 to
e2f9961
Compare
|
Oh, this is exciting! I wonder, for the benefit of future maintainers, can those Maestro yaml accept comments (that explain what various test steps try to verify)? |
There was a problem hiding this comment.
Pull request overview
This PR adds an end-to-end CI test harness that runs the Android Conversations client in an emulator and executes Maestro UI flows, using a logcat “sidecar” HTTP API to assert on device logs. It integrates this into the main Openfire GitHub Actions CI workflow as an additional job.
Changes:
- Adds a composite GitHub Action (
conversationstest-action) that boots an Android emulator, installs Conversations, starts/stops the logcat sidecar, and runs Maestro tests. - Introduces Maestro flows (a “simple/demoboot” flow and an (currently not enabled) SASL2 flow) plus supporting JS scripts and documentation.
- Extends the CI workflow to run the new Conversations e2e test job, and ignores the downloaded APK in
.gitignore.
Reviewed changes
Copilot reviewed 12 out of 13 changed files in this pull request and generated 13 comments.
Show a summary per file
| File | Description |
|---|---|
build/ci/conversations/flows/simple.yaml |
Adds a basic Maestro flow to configure and log into Conversations against Openfire. |
build/ci/conversations/flows/sasl2.yaml |
Adds a SASL2-focused flow (currently not enabled in CI matrix). |
build/ci/conversations/flows/scripts/startSession.js |
Starts a sidecar log session and records a timestamp for the flow. |
build/ci/conversations/flows/scripts/checkHealth.js |
Adds sidecar health probing before flows run. |
build/ci/conversations/flows/scripts/checkForLogs.js |
Adds a reusable “assert log line exists” helper via sidecar HTTP API. |
build/ci/conversations/flows/README.md |
Documents how to run the harness locally and describes sidecar configuration/API usage. |
build/ci/conversations/configs/sasl2.xml |
Adds an autosetup config intended for SASL2-related runs. |
.github/actions/conversationstest-action/action.yml |
Defines the composite action that installs Maestro, runs the emulator, and uploads artifacts on failure. |
.github/actions/conversationstest-action/run-tests.sh |
Downloads/installs Conversations APK, manages sidecar lifecycle, and runs Maestro tests. |
.github/actions/conversationstest-action/start-sidecar-api.sh |
Downloads and starts the sidecar JAR, polling /health for readiness. |
.github/actions/conversationstest-action/stop-sidecar-api.sh |
Stops the sidecar process using a PID file. |
.github/workflows/continuous-integration-workflow.yml |
Adds a new conversations job to run the composite action in CI. |
.gitignore |
Ignores conversations.apk downloaded by the test script. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Remove custom port config - Make action tag input required - Add empty config file entry for the demoboot tag - Fix demoboot config path in docs - Fix tmp directory docs
|
@guusdk Can you trigger another review from Copilot? |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 12 out of 13 changed files in this pull request and generated 7 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Ensure JS var is initialised - Ensure bash exit trap is ready - Ensure sidecar tidies up if it fails to launch - Ensure adb failures don't pollute maestro exit codes
This PR:
There's the beginnings of some
sasl2stuff here, as that was the trigger for writing this, but it's not enabled here.