From 4fc79c0f72e6ace4891c1b793e4aca4bcd2e75fc Mon Sep 17 00:00:00 2001 From: Thais Damasceno Date: Fri, 5 Jun 2026 16:44:12 +0100 Subject: [PATCH 01/25] fix(ci): parsing ids to detox configuration file --- .../workflows/browserstack-e2e-android.yml | 20 +++++++++---------- PingTestRunner/.detoxrc.js | 6 +++--- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/browserstack-e2e-android.yml b/.github/workflows/browserstack-e2e-android.yml index 8e2723daa..163032478 100644 --- a/.github/workflows/browserstack-e2e-android.yml +++ b/.github/workflows/browserstack-e2e-android.yml @@ -169,12 +169,12 @@ jobs: -u "$BROWSERSTACK_USERNAME:$BROWSERSTACK_ACCESS_KEY" \ -X POST "https://api-cloud.browserstack.com/app-automate/detox/v2/android/app" \ -F "file=@$APP_APK_PATH") - app_url=$(echo "$response" | jq -r '.app_url') - if [[ "$app_url" == "null" || -z "$app_url" ]]; then - echo "::error::Failed to get app_url from BrowserStack response: $response" + app_id=$(echo "$response" | jq -r '.app_id') + if [[ "$app_id" == "null" || -z "$app_id" ]]; then + echo "::error::Failed to get app_id from BrowserStack response: $response" exit 1 fi - echo "app_url=$app_url" >> "$GITHUB_OUTPUT" + echo "app_id=$app_id" >> "$GITHUB_OUTPUT" - name: Upload app client to BrowserStack id: upload-test @@ -183,20 +183,20 @@ jobs: -u "$BROWSERSTACK_USERNAME:$BROWSERSTACK_ACCESS_KEY" \ -X POST "https://api-cloud.browserstack.com/app-automate/detox/v2/android/app-client" \ -F "file=@$TEST_APK_PATH") - test_url=$(echo "$response" | jq -r '.app_client_url') - if [[ "$test_url" == "null" || -z "$test_url" ]]; then - echo "::error::Failed to get app_client_url from BrowserStack response: $response" + test_id=$(echo "$response" | jq -r '.app_client_id') + if [[ "$test_id" == "null" || -z "$test_id" ]]; then + echo "::error::Failed to get app_client_id from BrowserStack response: $response" exit 1 fi - echo "test_url=$test_url" >> "$GITHUB_OUTPUT" + echo "test_id=$test_id" >> "$GITHUB_OUTPUT" - name: Run E2E tests on BrowserStack real devices id: run-tests run: yarn test:runner:bs:android 2>&1 | tee /tmp/detox-bs.log; exit "${PIPESTATUS[0]}" working-directory: ${{ github.workspace }} env: - BROWSERSTACK_APP_URL: ${{ steps.upload-app.outputs.app_url }} - BROWSERSTACK_TEST_URL: ${{ steps.upload-test.outputs.test_url }} + BROWSERSTACK_APP_ID: ${{ steps.upload-app.outputs.app_id }} + BROWSERSTACK_TEST_ID: ${{ steps.upload-test.outputs.test_id }} - name: Prepare test summary report if: always() diff --git a/PingTestRunner/.detoxrc.js b/PingTestRunner/.detoxrc.js index a8ae83e9f..4216e60c9 100644 --- a/PingTestRunner/.detoxrc.js +++ b/PingTestRunner/.detoxrc.js @@ -44,11 +44,11 @@ module.exports = { build: 'cd android && ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release', }, - // BrowserStack cloud app — URLs are resolved after uploading binaries to BrowserStack. + // BrowserStack cloud app — IDs are resolved after uploading binaries to BrowserStack. 'android.cloud': { type: 'android.cloud', - app: process.env.BROWSERSTACK_APP_URL, - appClient: process.env.BROWSERSTACK_TEST_URL, + app: process.env.BROWSERSTACK_APP_ID, + appClient: process.env.BROWSERSTACK_TEST_ID, }, }, devices: { From e4b57ed573b8abe404b8bbd1ec597f29735f96fd Mon Sep 17 00:00:00 2001 From: Thais Damasceno Date: Fri, 5 Jun 2026 17:20:50 +0100 Subject: [PATCH 02/25] fix(e2e): prevent multiple BrowserStack sessions per CI run --- PingTestRunner/.detoxrc.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/PingTestRunner/.detoxrc.js b/PingTestRunner/.detoxrc.js index 4216e60c9..4fe195461 100644 --- a/PingTestRunner/.detoxrc.js +++ b/PingTestRunner/.detoxrc.js @@ -14,15 +14,10 @@ module.exports = { video: 'failing', }, }, - behavior: { - cleanup: { - shutdownDevice: false, - }, - }, testRunner: { args: { - $0: 'jest', config: 'e2e/jest.config.js', + maxWorkers: process.env.CI ? 1 : undefined, }, jest: { setupTimeout: 300000, From 66ce92283421bbb45f58e09b61c960d9d0070f60 Mon Sep 17 00:00:00 2001 From: Thais Damasceno Date: Fri, 5 Jun 2026 18:14:10 +0100 Subject: [PATCH 03/25] chore(detox): update the cloud provider --- .yarn/install-state.gz | Bin 1726037 -> 1718010 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz index 0acf0dec8c939573d5bad3735034d11c6db97dcc..18f6f08b204ee940960eae56c1f4e514022bedc2 100644 GIT binary patch delta 1357750 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