Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/NativePipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -751,7 +751,7 @@ jobs:
# truncated — at 20 min several shards (accordion, background-image, bottom-sheet,
# color-picker, safe-area-view) were cancelled mid-flow. If a shard still hits 30 the cause
# is real app instability, not the cap.
timeout-minutes: 30
timeout-minutes: 35
strategy:
max-parallel: 4
matrix:
Expand Down
15 changes: 15 additions & 0 deletions maestro/helpers/helpers.sh
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,24 @@ stop_recording() {
REC_FILE=""
}

# Function to clean up stale XCTest processes (iOS only)
cleanup_xctest_processes() {
if [ "$PLATFORM" != "ios" ]; then
return 0
fi
echo "🧹 Cleaning up stale XCTest processes..."
# Kill any leftover XCTest runner processes that might be blocking driver initialization
pkill -9 -f "XCTRunner" 2>/dev/null || true
pkill -9 -f "xctest" 2>/dev/null || true
pkill -9 -f "maestro.*driver" 2>/dev/null || true
sleep 2
}

# Function to restart the iOS simulator
restart_simulator() {
echo "🔄 Restarting iOS Simulator..."
# Clean up XCTest processes first
cleanup_xctest_processes
# Shut down whatever is booted; the device is auto-selected in prepare_ios.sh,
# so we don't depend on a hardcoded device name here.
xcrun simctl shutdown all || true
Expand Down
10 changes: 10 additions & 0 deletions maestro/run_maestro_jsactions_tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,16 @@ run_jsactions_tests() {
fi
}

# Clean up any stale XCTest processes before starting (iOS only)
if [ "$PLATFORM" == "ios" ]; then
cleanup_xctest_processes
fi

# Fast-fail smoke check before running jsActions tests (same as widget tests)
if ! smoke_check; then
exit 1
fi

# Run jsActions tests
run_jsactions_tests
if [ $? -ne 0 ]; then
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ appId: "${APP_ID}"
text: "Bottom Sheet"
- tapOn:
text: "Expanding fullscreen"
# Because the image loading can take some time due to resources on emulator, we need to wait for the image to be visible
- extendedWaitUntil:
# Because the image loading and animation can take some time due to resources on emulator, we need to wait
- extendedWaitUntil:
visible: randText # Any random text that does not exist in the UI
optional: true # This should be true so that the test won't fail
timeout: 10000 # 10 seconds
timeout: 15000 # 15 seconds to allow for animation to complete
- takeScreenshot:
path: "maestro/images/actual/${PLATFORM}/bottom_sheet_expanding_fullscreen"
- assertScreenshot:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ appId: "${APP_ID}"
text: "Bottom Sheet"
- tapOn:
text: "Modal basic non native"
# Wait for the page to fully load before tapping Open
- extendedWaitUntil:
visible: "Open"
timeout: 10000
- tapOn:
text: "Open"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,29 @@ appId: "${APP_ID}"
timeout: 5000
- tapOn:
text: "OK"
# Wait for dialog to dismiss before navigating back
- extendedWaitUntil:
visible: "Go back"
timeout: 3000
- tapOn: "Go back"
# Wait for widgets menu to appear before tapping intro screen again
- extendedWaitUntil:
visible: "Widgets menu"
timeout: 5000
- tapOn:
text: "Intro screen"
- extendedWaitUntil:
visible: "Active slide: 2"
timeout: 5000
- tapOn:
text: "NEXT"
# Wait for slide transition to complete - longer timeout for Android emulator
- extendedWaitUntil:
visible: "Active slide: 3"
timeout: 10000
- extendedWaitUntil:
visible: "FINISH"
timeout: 10000
- tapOn:
text: "FINISH"
- extendedWaitUntil:
Expand Down
Loading