|
629 | 629 |
|
630 | 630 | "$ADB_BIN" -s "$EMULATOR_SERIAL" shell pm path android \ |
631 | 631 | | sed 's/^/[build-android-app] pm path android: /' || true |
| 632 | +INSTRUMENTATION_LIST="$("$ADB_BIN" -s "$EMULATOR_SERIAL" shell pm list instrumentation 2>/dev/null || true)" |
| 633 | +if [ -n "$INSTRUMENTATION_LIST" ]; then |
| 634 | + printf '%s\n' "$INSTRUMENTATION_LIST" | sed 's/^/[build-android-app] instrumentation: /' |
| 635 | +else |
| 636 | + ba_log "No instrumentation targets reported on $EMULATOR_SERIAL before installation" |
| 637 | +fi |
| 638 | + |
| 639 | +PACKAGE_REGEX="${PACKAGE_NAME//./\\.}" |
| 640 | +PACKAGE_LIST="$("$ADB_BIN" -s "$EMULATOR_SERIAL" shell pm list packages 2>/dev/null || true)" |
| 641 | +if [ -n "$PACKAGE_LIST" ]; then |
| 642 | + PACKAGE_MATCHES="$(printf '%s\n' "$PACKAGE_LIST" | grep -E "${PACKAGE_REGEX}|${PACKAGE_REGEX}\\.test" || true)" |
| 643 | + if [ -n "$PACKAGE_MATCHES" ]; then |
| 644 | + printf '%s\n' "$PACKAGE_MATCHES" | sed 's/^/[build-android-app] package: /' |
| 645 | + else |
| 646 | + ba_log "Packages matching $PACKAGE_NAME not yet installed on $EMULATOR_SERIAL" |
| 647 | + fi |
| 648 | +else |
| 649 | + ba_log "Package manager returned no packages on $EMULATOR_SERIAL" |
| 650 | +fi |
| 651 | + |
| 652 | +INSTRUMENTATION_TARGET="$(printf '%s\n' "$INSTRUMENTATION_LIST" | awk -F' ' '/instrumentation/{print $2}' | head -n1)" |
| 653 | +if [ -n "$INSTRUMENTATION_TARGET" ]; then |
| 654 | + "$ADB_BIN" -s "$EMULATOR_SERIAL" shell am instrument -w -r \ |
| 655 | + -e log true \ |
| 656 | + "$INSTRUMENTATION_TARGET" \ |
| 657 | + 2>&1 | sed 's/^/[build-android-app] am instrument: /' |
| 658 | +else |
| 659 | + ba_log "Skipping am instrument dry run; no instrumentation target detected on $EMULATOR_SERIAL" |
| 660 | +fi |
632 | 661 |
|
633 | 662 | UI_TEST_TIMEOUT_SECONDS="${UI_TEST_TIMEOUT_SECONDS:-900}" |
634 | 663 | if ! [[ "$UI_TEST_TIMEOUT_SECONDS" =~ ^[0-9]+$ ]] || [ "$UI_TEST_TIMEOUT_SECONDS" -le 0 ]; then |
635 | 664 | ba_log "Invalid UI_TEST_TIMEOUT_SECONDS=$UI_TEST_TIMEOUT_SECONDS provided; falling back to 900" |
636 | 665 | UI_TEST_TIMEOUT_SECONDS=900 |
637 | 666 | fi |
638 | 667 |
|
639 | | -GRADLE_TEST_CMD=("./gradlew" "--no-daemon" "connectedDebugAndroidTest") |
| 668 | +GRADLE_TEST_CMD=( |
| 669 | + "./gradlew" |
| 670 | + "--no-daemon" |
| 671 | + "-Pandroid.testInstrumentationRunnerArguments=class=${PACKAGE_NAME}.${MAIN_NAME}UiTest" |
| 672 | + "connectedDebugAndroidTest" |
| 673 | +) |
640 | 674 | if command -v timeout >/dev/null 2>&1; then |
641 | 675 | ba_log "Running instrumentation UI tests with external timeout of ${UI_TEST_TIMEOUT_SECONDS}s" |
642 | 676 | GRADLE_TEST_CMD=("timeout" "$UI_TEST_TIMEOUT_SECONDS" "${GRADLE_TEST_CMD[@]}") |
|
0 commit comments