Skip to content

CI: Add action to run Maestro tests, along with simple tests#3298

Merged
guusdk merged 3 commits intoigniterealtime:mainfrom
Fishbowler:add-conversations-ci
May 5, 2026
Merged

CI: Add action to run Maestro tests, along with simple tests#3298
guusdk merged 3 commits intoigniterealtime:mainfrom
Fishbowler:add-conversations-ci

Conversation

@Fishbowler
Copy link
Copy Markdown
Member

@Fishbowler Fishbowler commented May 3, 2026

This PR:

  • Adds an action that will download a Conversations APK, launch an emulator, install the app and run tests using Maestro
  • Adds some tests to run
  • Adds an additional test job to Openfire CI to run the action

There's the beginnings of some sasl2 stuff here, as that was the trigger for writing this, but it's not enabled here.

@Fishbowler Fishbowler force-pushed the add-conversations-ci branch 2 times, most recently from 7ac8eef to 38b0122 Compare May 3, 2026 17:55
@Fishbowler Fishbowler force-pushed the add-conversations-ci branch from 38b0122 to e2f9961 Compare May 3, 2026 18:24
@guusdk
Copy link
Copy Markdown
Member

guusdk commented May 4, 2026

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)?

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread .github/actions/conversationstest-action/action.yml Outdated
Comment thread .github/workflows/continuous-integration-workflow.yml
Comment thread build/ci/conversations/flows/scripts/checkHealth.js
Comment thread .github/actions/conversationstest-action/run-tests.sh
Comment thread build/ci/conversations/flows/README.md Outdated
Comment thread .github/actions/conversationstest-action/start-sidecar-api.sh Outdated
Comment thread build/ci/conversations/flows/README.md Outdated
Comment thread build/ci/conversations/flows/scripts/startSession.js
Comment thread build/ci/conversations/flows/scripts/checkForLogs.js
Comment thread build/ci/conversations/flows/scripts/checkHealth.js
- 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
@Fishbowler
Copy link
Copy Markdown
Member Author

@guusdk Can you trigger another review from Copilot?

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread build/ci/conversations/flows/scripts/checkForLogs.js Outdated
Comment thread .github/actions/conversationstest-action/run-tests.sh Outdated
Comment thread .github/actions/conversationstest-action/run-tests.sh Outdated
Comment thread .github/actions/conversationstest-action/start-sidecar-api.sh
Comment thread .github/actions/conversationstest-action/action.yml
Comment thread .github/actions/conversationstest-action/action.yml
Comment thread .github/actions/conversationstest-action/run-tests.sh
- 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
@guusdk guusdk merged commit 5be60e8 into igniterealtime:main May 5, 2026
33 checks passed
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.

3 participants