diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index e17528d79a..4e76b77ecb 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -232,7 +232,7 @@ jobs: strategy: fail-fast: false # keeps matrix running if one fails matrix: - rn-version: ["0.71.19", "0.86.2"] + rn-version: ["0.71.19", "0.87.0"] rn-architecture: ["legacy", "new"] platform: ["android", "ios"] build-type: ["production"] @@ -245,7 +245,7 @@ jobs: runs-on: macos-15-xlarge # Use Xcode 26 (macos-26) for newer RN versions - platform: ios - rn-version: "0.86.2" + rn-version: "0.87.0" runs-on: macos-26-xlarge - platform: android runs-on: ubuntu-24.04 @@ -315,7 +315,7 @@ jobs: if: ${{ steps.platform-check.outputs.skip != 'true' }} with: package-manager-cache: false - node-version: 20 + node-version: ${{ startsWith(matrix.rn-version, '0.71') && '20' || '22' }} cache: "yarn" cache-dependency-path: yarn.lock @@ -385,7 +385,7 @@ jobs: strategy: fail-fast: false # keeps matrix running if one fails matrix: - rn-version: ["0.86.2"] + rn-version: ["0.87.0"] rn-architecture: ["legacy", "new"] platform: ["android", "ios"] build-type: ["production"] @@ -446,7 +446,7 @@ jobs: if: ${{ steps.platform-check.outputs.skip != 'true' }} with: package-manager-cache: false - node-version: 20 + node-version: 22 cache: "yarn" cache-dependency-path: yarn.lock diff --git a/dev-packages/e2e-tests/maestro/feedback/captureFlow-android.yml b/dev-packages/e2e-tests/maestro/feedback/captureFlow-android.yml index a48e577110..2609b8fb9e 100644 --- a/dev-packages/e2e-tests/maestro/feedback/captureFlow-android.yml +++ b/dev-packages/e2e-tests/maestro/feedback/captureFlow-android.yml @@ -30,6 +30,11 @@ jsEngine: graaljs - tapOn: "What's the bug? What did you expect?" - inputText: 'This is a test feedback message with a screenshot from CI e2e tests' +# Hide keyboard by tapping on a non-tappable element. Under RN 0.87 edge-to-edge +# the open keyboard occludes 'Take a screenshot' on shorter viewports (e.g. the +# CI emulator), so dismiss it before scrolling — mirrors the pre-submit step below. +- tapOn: 'Email' + # Take screenshot - scrollUntilVisible: element: diff --git a/dev-packages/e2e-tests/src/EndToEndTests.tsx b/dev-packages/e2e-tests/src/EndToEndTests.tsx index e044dac2bc..b0fec06b7e 100644 --- a/dev-packages/e2e-tests/src/EndToEndTests.tsx +++ b/dev-packages/e2e-tests/src/EndToEndTests.tsx @@ -1,6 +1,6 @@ import * as Sentry from '@sentry/react-native'; import * as React from 'react'; -import { Text, View } from 'react-native'; +import { StatusBar, Text, View } from 'react-native'; const E2E_TESTS_READY_TEXT = 'E2E Tests Ready'; @@ -67,7 +67,11 @@ const EndToEndTestsScreen = (): React.JSX.Element => { ]; return ( - + // RN 0.87 enables edge-to-edge by default, drawing content behind the + // status bar. Offset by its height so "E2E Tests Ready" (and the rest of + // the harness UI) stays visible to Maestro's assertVisible. StatusBar + // .currentHeight is Android-only; falls back to 0 on iOS. + {isReady ? E2E_TESTS_READY_TEXT : 'Loading...'} {error} {eventId ? {eventId} : No event ID}