From 562ac2b0f42a8572c12f8cb64fd961db90acca08 Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Fri, 19 Dec 2025 06:34:39 -0700 Subject: [PATCH 01/21] connect project to eas --- example/app.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/example/app.json b/example/app.json index 521138a..f734028 100644 --- a/example/app.json +++ b/example/app.json @@ -45,6 +45,13 @@ "experiments": { "typedRoutes": true, "reactCompiler": true - } + }, + "extra": { + "router": {}, + "eas": { + "projectId": "9c680ba9-b514-4d3e-9b75-6d7e7baf0e3e" + } + }, + "owner": "mxwidgetsdk" } } From ce4cdcb5042f98209983a9129891410688fce0ba Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Fri, 19 Dec 2025 06:59:23 -0700 Subject: [PATCH 02/21] added a github workflow for e2e tests --- .github/workflows/e2e-tests.yml | 112 ++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 .github/workflows/e2e-tests.yml diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml new file mode 100644 index 0000000..2208e86 --- /dev/null +++ b/.github/workflows/e2e-tests.yml @@ -0,0 +1,112 @@ +name: E2E Tests + +on: + pull_request: + +jobs: + e2e-test: + runs-on: ubuntu-latest + timeout-minutes: 30 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: "npm" + + - name: Install SDK dependencies + run: npm install + + - name: Build SDK + run: npm run build + + - name: Install example app dependencies + working-directory: ./example + run: npm install + + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: "temurin" + java-version: "17" + + - name: Setup Android SDK + uses: android-actions/setup-android@v3 + + - name: Cache Gradle + uses: actions/cache@v4 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- + + - name: Install Maestro CLI + run: | + curl -Ls "https://get.maestro.mobile.dev" | bash + echo "$HOME/.maestro/bin" >> $GITHUB_PATH + + - name: Verify Maestro installation + run: maestro --version + + - name: Enable KVM group perms + run: | + echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules + sudo udevadm control --reload-rules + sudo udevadm trigger --name-match=kvm + + - name: Cache AVD + uses: actions/cache@v4 + id: avd-cache + with: + path: | + ~/.android/avd/* + ~/.android/adb* + key: avd-31 + + - name: Create AVD and generate snapshot for caching + if: steps.avd-cache.outputs.cache-hit != 'true' + uses: reactivecircus/android-emulator-runner@v2 + with: + api-level: 31 + arch: x86_64 + target: google_apis + profile: pixel_6 + force-avd-creation: false + emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + disable-animations: true + script: echo "Generated AVD snapshot for caching." + + - name: Build Android app + working-directory: ./example + run: npx expo prebuild --platform android && cd android && ./gradlew assembleDebug + + - name: Run Maestro tests + uses: reactivecircus/android-emulator-runner@v2 + with: + api-level: 31 + arch: x86_64 + target: google_apis + profile: pixel_6 + emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + disable-animations: true + script: | + cd example + adb install android/app/build/outputs/apk/debug/app-debug.apk + npm run e2e + + - name: Upload Maestro test results + if: always() + uses: actions/upload-artifact@v4 + with: + name: maestro-test-results + path: | + example/.maestro/ + ~/.maestro/tests/ + retention-days: 7 From 09e2b3af497081f00f397a6c485585c857817bf6 Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Fri, 19 Dec 2025 07:29:27 -0700 Subject: [PATCH 03/21] attempting to clear up space before running tests --- .github/workflows/e2e-tests.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 2208e86..cf2cd2a 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -12,6 +12,19 @@ jobs: - name: Checkout code uses: actions/checkout@v4 + - name: Free up disk space + run: | + echo "Disk space before cleanup:" + df -h + sudo rm -rf /usr/share/dotnet + sudo rm -rf /usr/local/lib/android + sudo rm -rf /opt/ghc + sudo rm -rf /usr/local/share/boost + sudo rm -rf "$AGENT_TOOLSDIRECTORY" + sudo docker image prune --all --force + echo "Disk space after cleanup:" + df -h + - name: Setup Node.js uses: actions/setup-node@v4 with: From 8415586f6772b16961c77a377f5795f4ed7e6d71 Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Fri, 19 Dec 2025 07:32:48 -0700 Subject: [PATCH 04/21] cleanup less --- .github/workflows/e2e-tests.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index cf2cd2a..33ddfa7 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -17,7 +17,6 @@ jobs: echo "Disk space before cleanup:" df -h sudo rm -rf /usr/share/dotnet - sudo rm -rf /usr/local/lib/android sudo rm -rf /opt/ghc sudo rm -rf /usr/local/share/boost sudo rm -rf "$AGENT_TOOLSDIRECTORY" From e565efcd2a4f97dcc01596556f7dfa2fa0d1f63a Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Fri, 19 Dec 2025 08:10:08 -0700 Subject: [PATCH 05/21] attempting to fix e2e tests --- .github/workflows/e2e-tests.yml | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 33ddfa7..34587e0 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -97,7 +97,11 @@ jobs: - name: Build Android app working-directory: ./example - run: npx expo prebuild --platform android && cd android && ./gradlew assembleDebug + run: | + npx expo prebuild --platform android + cd android + ./gradlew assembleDebug + ls -la app/build/outputs/apk/debug/ - name: Run Maestro tests uses: reactivecircus/android-emulator-runner@v2 @@ -109,9 +113,10 @@ jobs: emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none disable-animations: true script: | - cd example - adb install android/app/build/outputs/apk/debug/app-debug.apk - npm run e2e + cd example/android + adb install app/build/outputs/apk/debug/app-debug.apk + cd .. + maestro test ./maestro/ --format junit --output maestro-results.xml - name: Upload Maestro test results if: always() @@ -119,6 +124,6 @@ jobs: with: name: maestro-test-results path: | - example/.maestro/ - ~/.maestro/tests/ + example/maestro-results.xml retention-days: 7 + if-no-files-found: warn From 84749814db9ba077640d78f44430580cbabb5707 Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Fri, 19 Dec 2025 08:41:30 -0700 Subject: [PATCH 06/21] attempting to fix e2e tests --- .github/workflows/e2e-tests.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 34587e0..9dc92f7 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -113,9 +113,8 @@ jobs: emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none disable-animations: true script: | - cd example/android - adb install app/build/outputs/apk/debug/app-debug.apk - cd .. + adb install example/android/app/build/outputs/apk/debug/app-debug.apk + cd example maestro test ./maestro/ --format junit --output maestro-results.xml - name: Upload Maestro test results From 79e2821ea0895cf9d785cc7f1a7f1e2deb14542f Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Fri, 19 Dec 2025 09:14:29 -0700 Subject: [PATCH 07/21] another attempted fix for e2e tests --- .github/workflows/e2e-tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 9dc92f7..17ad89b 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -114,8 +114,8 @@ jobs: disable-animations: true script: | adb install example/android/app/build/outputs/apk/debug/app-debug.apk - cd example - maestro test ./maestro/ --format junit --output maestro-results.xml + maestro test ./example/maestro/ --format junit --output maestro-results.xml + mv maestro-results.xml example/ - name: Upload Maestro test results if: always() From d1260ea84fc65e12929adc8f273b72dcca10987e Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Fri, 19 Dec 2025 09:48:24 -0700 Subject: [PATCH 08/21] testing another pipeline change --- .github/workflows/e2e-tests.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 17ad89b..07d3c3e 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -115,7 +115,10 @@ jobs: script: | adb install example/android/app/build/outputs/apk/debug/app-debug.apk maestro test ./example/maestro/ --format junit --output maestro-results.xml - mv maestro-results.xml example/ + ls -la + cat maestro-results.xml || echo "Results file not found in root" + mv maestro-results.xml example/ || echo "Could not move file" + ls -la example/ - name: Upload Maestro test results if: always() From 0d7674c9aed654fc419588592359330498da4958 Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Fri, 19 Dec 2025 10:16:44 -0700 Subject: [PATCH 09/21] another attempt at a fix --- .github/workflows/e2e-tests.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 07d3c3e..8bf229f 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -114,11 +114,15 @@ jobs: disable-animations: true script: | adb install example/android/app/build/outputs/apk/debug/app-debug.apk - maestro test ./example/maestro/ --format junit --output maestro-results.xml + maestro test ./example/maestro/ --format junit --output maestro-results.xml || true ls -la - cat maestro-results.xml || echo "Results file not found in root" - mv maestro-results.xml example/ || echo "Could not move file" - ls -la example/ + if [ -f maestro-results.xml ]; then + mv maestro-results.xml example/ + echo "Results file moved to example/" + else + echo "Results file was not created" + fi + maestro test ./example/maestro/ - name: Upload Maestro test results if: always() From 2834a36aa5ec67b79834398a911aeb81ff3bae12 Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Fri, 19 Dec 2025 10:50:54 -0700 Subject: [PATCH 10/21] another attempted fix --- .github/workflows/e2e-tests.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 8bf229f..c1fd90a 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -115,13 +115,7 @@ jobs: script: | adb install example/android/app/build/outputs/apk/debug/app-debug.apk maestro test ./example/maestro/ --format junit --output maestro-results.xml || true - ls -la - if [ -f maestro-results.xml ]; then - mv maestro-results.xml example/ - echo "Results file moved to example/" - else - echo "Results file was not created" - fi + test -f maestro-results.xml && mv maestro-results.xml example/ && echo "Results file moved" || echo "No results file" maestro test ./example/maestro/ - name: Upload Maestro test results From afdd9a29723be81dd09c7002b9d1f47b32e6069e Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Fri, 19 Dec 2025 11:20:49 -0700 Subject: [PATCH 11/21] adding screenshots/video to the upload --- .github/workflows/e2e-tests.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index c1fd90a..3be7762 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -114,9 +114,12 @@ jobs: disable-animations: true script: | adb install example/android/app/build/outputs/apk/debug/app-debug.apk + mkdir -p maestro-output maestro test ./example/maestro/ --format junit --output maestro-results.xml || true - test -f maestro-results.xml && mv maestro-results.xml example/ && echo "Results file moved" || echo "No results file" - maestro test ./example/maestro/ + maestro record ./example/maestro/ --output maestro-output/ || maestro test ./example/maestro/ + test -f maestro-results.xml && mv maestro-results.xml example/ || echo "No results file" + test -d maestro-output && mv maestro-output example/ || echo "No maestro output directory" + ls -la example/ - name: Upload Maestro test results if: always() @@ -125,5 +128,7 @@ jobs: name: maestro-test-results path: | example/maestro-results.xml + example/maestro-output/ + ~/.maestro/tests/ retention-days: 7 if-no-files-found: warn From e8d96d0e62db27f02d9acf7c13fb33df61fd6a9d Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Mon, 5 Jan 2026 09:48:45 -0700 Subject: [PATCH 12/21] attempting to upload screenshots --- .github/workflows/e2e-tests.yml | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 3be7762..ae5482a 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -114,12 +114,18 @@ jobs: disable-animations: true script: | adb install example/android/app/build/outputs/apk/debug/app-debug.apk - mkdir -p maestro-output - maestro test ./example/maestro/ --format junit --output maestro-results.xml || true - maestro record ./example/maestro/ --output maestro-output/ || maestro test ./example/maestro/ - test -f maestro-results.xml && mv maestro-results.xml example/ || echo "No results file" - test -d maestro-output && mv maestro-output example/ || echo "No maestro output directory" - ls -la example/ + mkdir -p example/maestro-output + # Run tests (produce JUnit results) and capture artifacts under example/maestro-output + maestro test ./example/maestro/ --format junit --output example/maestro-results.xml || true + # Run record to capture screenshots & artifacts into the output directory + maestro record ./example/maestro/ --output example/maestro-output/ || true + # If Maestro also wrote to the user home tests dir, copy those into the output dir for upload + if [ -d "$HOME/.maestro/tests" ]; then + mkdir -p example/maestro-output/.maestro-tests + cp -r "$HOME/.maestro/tests/." example/maestro-output/.maestro-tests/ || true + fi + ls -la example/maestro-output || true + ls -la example/ || true - name: Upload Maestro test results if: always() From 333c626aceecd402904045acc1eefeed4ba995bf Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Mon, 5 Jan 2026 10:22:12 -0700 Subject: [PATCH 13/21] trying to fix e2e test upload --- .github/workflows/e2e-tests.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index ae5482a..c1150c2 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -117,14 +117,18 @@ jobs: mkdir -p example/maestro-output # Run tests (produce JUnit results) and capture artifacts under example/maestro-output maestro test ./example/maestro/ --format junit --output example/maestro-results.xml || true - # Run record to capture screenshots & artifacts into the output directory - maestro record ./example/maestro/ --output example/maestro-output/ || true + # Run record to capture screenshots & artifacts into the output directory (use --local to render a video file) + maestro record --local ./example/maestro/ example/maestro-output/recording.mp4 || true # If Maestro also wrote to the user home tests dir, copy those into the output dir for upload if [ -d "$HOME/.maestro/tests" ]; then mkdir -p example/maestro-output/.maestro-tests cp -r "$HOME/.maestro/tests/." example/maestro-output/.maestro-tests/ || true fi - ls -la example/maestro-output || true + echo "Listing example/maestro-output contents:"; ls -la example/maestro-output || true + if [ -d example/maestro-output ]; then + echo "Creating tarball example/maestro-output.tar.gz" + tar -czf example/maestro-output.tar.gz -C example maestro-output || true + fi ls -la example/ || true - name: Upload Maestro test results @@ -135,6 +139,7 @@ jobs: path: | example/maestro-results.xml example/maestro-output/ + example/maestro-output.tar.gz ~/.maestro/tests/ retention-days: 7 if-no-files-found: warn From 732ed76eeda2b447ae3dce46896d4b3597e6b754 Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Mon, 5 Jan 2026 13:24:21 -0700 Subject: [PATCH 14/21] attempting another fix for uploading --- .github/workflows/e2e-tests.yml | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index c1150c2..b67c564 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -116,13 +116,19 @@ jobs: adb install example/android/app/build/outputs/apk/debug/app-debug.apk mkdir -p example/maestro-output # Run tests (produce JUnit results) and capture artifacts under example/maestro-output - maestro test ./example/maestro/ --format junit --output example/maestro-results.xml || true - # Run record to capture screenshots & artifacts into the output directory (use --local to render a video file) - maestro record --local ./example/maestro/ example/maestro-output/recording.mp4 || true - # If Maestro also wrote to the user home tests dir, copy those into the output dir for upload + mkdir -p example/maestro-output/debug + maestro test ./example/maestro/ --format junit --output example/maestro-results.xml --debug-output example/maestro-output/debug || true + # Attempt to record each Flow file individually (maestro record accepts a single flow file) + for f in ./example/maestro/*.yaml ./example/maestro/*.yml ./example/maestro/*.flow; do + if [ -f "$f" ]; then + echo "Recording $f" + maestro record --local "$f" "example/maestro-output/$(basename "$f").mp4" --debug-output example/maestro-output/debug || echo "record failed for $f" + fi + done + # If Maestro wrote to the user home tests dir, copy those into the output dir for upload if [ -d "$HOME/.maestro/tests" ]; then mkdir -p example/maestro-output/.maestro-tests - cp -r "$HOME/.maestro/tests/." example/maestro-output/.maestro-tests/ || true + rsync -a "$HOME/.maestro/tests/" example/maestro-output/.maestro-tests/ || true fi echo "Listing example/maestro-output contents:"; ls -la example/maestro-output || true if [ -d example/maestro-output ]; then From b281c44b91fb87d28888d4cb2ccdde85de8fd94d Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Mon, 5 Jan 2026 13:57:26 -0700 Subject: [PATCH 15/21] attempting to fix e2e tests --- .github/workflows/e2e-tests.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index b67c564..6c83ef8 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -119,12 +119,14 @@ jobs: mkdir -p example/maestro-output/debug maestro test ./example/maestro/ --format junit --output example/maestro-results.xml --debug-output example/maestro-output/debug || true # Attempt to record each Flow file individually (maestro record accepts a single flow file) + bash << 'EOF' for f in ./example/maestro/*.yaml ./example/maestro/*.yml ./example/maestro/*.flow; do if [ -f "$f" ]; then echo "Recording $f" maestro record --local "$f" "example/maestro-output/$(basename "$f").mp4" --debug-output example/maestro-output/debug || echo "record failed for $f" fi done + EOF # If Maestro wrote to the user home tests dir, copy those into the output dir for upload if [ -d "$HOME/.maestro/tests" ]; then mkdir -p example/maestro-output/.maestro-tests From 54a862395f8e5649a9d727fb4d059758a26347f1 Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Mon, 5 Jan 2026 14:29:13 -0700 Subject: [PATCH 16/21] more attempts to fix e2e tests in the pipeline --- .github/workflows/e2e-tests.yml | 9 +-------- example/maestro/connectWidget.yaml | 5 +++++ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 6c83ef8..c2f15cb 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -119,14 +119,7 @@ jobs: mkdir -p example/maestro-output/debug maestro test ./example/maestro/ --format junit --output example/maestro-results.xml --debug-output example/maestro-output/debug || true # Attempt to record each Flow file individually (maestro record accepts a single flow file) - bash << 'EOF' - for f in ./example/maestro/*.yaml ./example/maestro/*.yml ./example/maestro/*.flow; do - if [ -f "$f" ]; then - echo "Recording $f" - maestro record --local "$f" "example/maestro-output/$(basename "$f").mp4" --debug-output example/maestro-output/debug || echo "record failed for $f" - fi - done - EOF + bash -lc 'for f in ./example/maestro/*.yaml ./example/maestro/*.yml ./example/maestro/*.flow; do if [ -f "$f" ]; then echo "Recording $f"; maestro record --local "$f" "example/maestro-output/$(basename "$f").mp4" --debug-output example/maestro-output/debug || echo "record failed for $f"; fi; done' || true # If Maestro wrote to the user home tests dir, copy those into the output dir for upload if [ -d "$HOME/.maestro/tests" ]; then mkdir -p example/maestro-output/.maestro-tests diff --git a/example/maestro/connectWidget.yaml b/example/maestro/connectWidget.yaml index c89a80d..b753575 100644 --- a/example/maestro/connectWidget.yaml +++ b/example/maestro/connectWidget.yaml @@ -1,7 +1,12 @@ appId: com.anonymous.example --- - launchApp +- screenshot: "after-launch" - tapOn: "Connect" +- screenshot: "after-tap-connect" - assertVisible: "Select your institution" +- screenshot: "after-select-institution" - tapOn: ".*MX Bank.*" +- screenshot: "after-tap-mx-bank" - assertVisible: "Enter your credentials" +- screenshot: "after-enter-credentials" From b86666897b650e8a5bf13e322f7699ed06a6eec8 Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Mon, 5 Jan 2026 15:11:24 -0700 Subject: [PATCH 17/21] attempt at fixing pipeline --- .github/workflows/e2e-tests.yml | 2 +- example/maestro/connectWidget.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index c2f15cb..628c388 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -117,7 +117,7 @@ jobs: mkdir -p example/maestro-output # Run tests (produce JUnit results) and capture artifacts under example/maestro-output mkdir -p example/maestro-output/debug - maestro test ./example/maestro/ --format junit --output example/maestro-results.xml --debug-output example/maestro-output/debug || true + maestro test ./example/maestro/ --format junit --output example/maestro-results.xml --debug-output example/maestro-output/debug --test-output-dir example/maestro-output/debug || true # Attempt to record each Flow file individually (maestro record accepts a single flow file) bash -lc 'for f in ./example/maestro/*.yaml ./example/maestro/*.yml ./example/maestro/*.flow; do if [ -f "$f" ]; then echo "Recording $f"; maestro record --local "$f" "example/maestro-output/$(basename "$f").mp4" --debug-output example/maestro-output/debug || echo "record failed for $f"; fi; done' || true # If Maestro wrote to the user home tests dir, copy those into the output dir for upload diff --git a/example/maestro/connectWidget.yaml b/example/maestro/connectWidget.yaml index b753575..7a470c4 100644 --- a/example/maestro/connectWidget.yaml +++ b/example/maestro/connectWidget.yaml @@ -1,12 +1,12 @@ appId: com.anonymous.example --- - launchApp -- screenshot: "after-launch" +- takeScreenshot: "after-launch" - tapOn: "Connect" -- screenshot: "after-tap-connect" +- takeScreenshot: "after-tap-connect" - assertVisible: "Select your institution" -- screenshot: "after-select-institution" +- takeScreenshot: "after-select-institution" - tapOn: ".*MX Bank.*" -- screenshot: "after-tap-mx-bank" +- takeScreenshot: "after-tap-mx-bank" - assertVisible: "Enter your credentials" -- screenshot: "after-enter-credentials" +- takeScreenshot: "after-enter-credentials" From b1a6014654039aca9885016263c2bfb91d61f44f Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Mon, 5 Jan 2026 15:49:51 -0700 Subject: [PATCH 18/21] increase the workflow timeout --- .github/workflows/e2e-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 628c388..cb111a2 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -6,7 +6,7 @@ on: jobs: e2e-test: runs-on: ubuntu-latest - timeout-minutes: 30 + timeout-minutes: 60 steps: - name: Checkout code From 1161675045a700707e6fb2f73fa3f8523e5a0ae4 Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Tue, 6 Jan 2026 06:00:29 -0700 Subject: [PATCH 19/21] recording uploading is working. trying to fix some errors --- .github/workflows/e2e-tests.yml | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index cb111a2..027b1f2 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -120,11 +120,6 @@ jobs: maestro test ./example/maestro/ --format junit --output example/maestro-results.xml --debug-output example/maestro-output/debug --test-output-dir example/maestro-output/debug || true # Attempt to record each Flow file individually (maestro record accepts a single flow file) bash -lc 'for f in ./example/maestro/*.yaml ./example/maestro/*.yml ./example/maestro/*.flow; do if [ -f "$f" ]; then echo "Recording $f"; maestro record --local "$f" "example/maestro-output/$(basename "$f").mp4" --debug-output example/maestro-output/debug || echo "record failed for $f"; fi; done' || true - # If Maestro wrote to the user home tests dir, copy those into the output dir for upload - if [ -d "$HOME/.maestro/tests" ]; then - mkdir -p example/maestro-output/.maestro-tests - rsync -a "$HOME/.maestro/tests/" example/maestro-output/.maestro-tests/ || true - fi echo "Listing example/maestro-output contents:"; ls -la example/maestro-output || true if [ -d example/maestro-output ]; then echo "Creating tarball example/maestro-output.tar.gz" @@ -132,6 +127,26 @@ jobs: fi ls -la example/ || true + - name: Collect Maestro artifacts + if: always() + run: | + echo "Waiting for recordings to flush" + sleep 2 + sync || true + mkdir -p example/maestro-output/.maestro-tests + if [ -d "$HOME/.maestro/tests" ]; then + echo "Copying $HOME/.maestro/tests -> example/maestro-output/.maestro-tests/" + rsync -a "$HOME/.maestro/tests/" example/maestro-output/.maestro-tests/ || true + else + echo "No $HOME/.maestro/tests directory found" + fi + echo "Listing example/maestro-output contents:"; ls -la example/maestro-output || true + if [ -d example/maestro-output ]; then + echo "Creating tarball example/maestro-output.tar.gz" + tar -czf example/maestro-output.tar.gz -C example maestro-output || true + fi + ls -la example/ || true + - name: Upload Maestro test results if: always() uses: actions/upload-artifact@v4 From 06d3d24178c8d3641a9dbf3cd4481c5b31069afa Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Tue, 6 Jan 2026 06:43:26 -0700 Subject: [PATCH 20/21] testing workflow changes --- .github/workflows/e2e-tests.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 027b1f2..16ca7ae 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -121,26 +121,28 @@ jobs: # Attempt to record each Flow file individually (maestro record accepts a single flow file) bash -lc 'for f in ./example/maestro/*.yaml ./example/maestro/*.yml ./example/maestro/*.flow; do if [ -f "$f" ]; then echo "Recording $f"; maestro record --local "$f" "example/maestro-output/$(basename "$f").mp4" --debug-output example/maestro-output/debug || echo "record failed for $f"; fi; done' || true echo "Listing example/maestro-output contents:"; ls -la example/maestro-output || true - if [ -d example/maestro-output ]; then - echo "Creating tarball example/maestro-output.tar.gz" - tar -czf example/maestro-output.tar.gz -C example maestro-output || true - fi + echo "Debug dir contents:"; ls -la example/maestro-output/debug || true + echo "MP4 files:"; ls -la example/maestro-output/*.mp4 || true ls -la example/ || true - name: Collect Maestro artifacts if: always() run: | echo "Waiting for recordings to flush" - sleep 2 + sleep 5 sync || true mkdir -p example/maestro-output/.maestro-tests if [ -d "$HOME/.maestro/tests" ]; then echo "Copying $HOME/.maestro/tests -> example/maestro-output/.maestro-tests/" rsync -a "$HOME/.maestro/tests/" example/maestro-output/.maestro-tests/ || true + sync || true else echo "No $HOME/.maestro/tests directory found" fi echo "Listing example/maestro-output contents:"; ls -la example/maestro-output || true + echo "Debug dir contents:"; ls -la example/maestro-output/debug || true + echo "MP4 files:"; ls -la example/maestro-output/*.mp4 || true + echo "Disk usage of outputs:"; du -sh example/maestro-output || true if [ -d example/maestro-output ]; then echo "Creating tarball example/maestro-output.tar.gz" tar -czf example/maestro-output.tar.gz -C example maestro-output || true From ee6644cfe0896b171601e085301ada4aab867c4c Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Tue, 6 Jan 2026 07:24:43 -0700 Subject: [PATCH 21/21] attempting to cache to speed up builds --- .github/workflows/e2e-tests.yml | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 16ca7ae..10e4c41 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -30,12 +30,32 @@ jobs: node-version: 20 cache: "npm" + - name: Cache SDK npm modules + uses: actions/cache@v4 + with: + path: | + ~/.npm + node_modules + key: sdk-npm-${{ runner.os }}-${{ hashFiles('package-lock.json','package.json') }} + restore-keys: | + sdk-npm-${{ runner.os }}- + - name: Install SDK dependencies run: npm install - name: Build SDK run: npm run build + - name: Cache example npm modules + uses: actions/cache@v4 + with: + path: | + ~/.npm + example/node_modules + key: example-npm-${{ runner.os }}-${{ hashFiles('example/package-lock.json','example/package.json') }} + restore-keys: | + example-npm-${{ runner.os }}- + - name: Install example app dependencies working-directory: ./example run: npm install @@ -49,15 +69,16 @@ jobs: - name: Setup Android SDK uses: android-actions/setup-android@v3 - - name: Cache Gradle + - name: Cache Gradle & Maven uses: actions/cache@v4 with: path: | ~/.gradle/caches ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + ~/.m2/repository + key: ${{ runner.os }}-gradle-m2-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties', '**/pom.xml') }} restore-keys: | - ${{ runner.os }}-gradle- + ${{ runner.os }}-gradle-m2- - name: Install Maestro CLI run: |