@@ -5,11 +5,12 @@ set -euo pipefail
55ra_log () { echo " [run-android-instrumentation-tests] $1 " ; }
66
77if [ $# -lt 1 ]; then
8- ra_log " Usage: $0 <gradle_project_dir>" >&2
8+ ra_log " Usage: $0 <gradle_project_dir> [package_name] " >&2
99 exit 1
1010fi
1111
1212GRADLE_PROJECT_DIR=" $1 "
13+ PACKAGE_NAME=" ${2:- } "
1314
1415SCRIPT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " && pwd) "
1516REPO_ROOT=" $( cd " $SCRIPT_DIR /.." && pwd) "
@@ -93,6 +94,13 @@ ra_log "Device build fingerprint: $(adb_target shell getprop ro.build.fingerprin
9394ra_log " Installed instrumentation targets:"
9495adb_target shell pm list instrumentation || true
9596
97+ if [ -z " $PACKAGE_NAME " ]; then
98+ PACKAGE_NAME=" $( adb_target shell pm list instrumentation 2> /dev/null | sed -n ' s/.*target=\([^)]*\)).*/\1/p' | tr -d ' \r' | head -n 1 || true) "
99+ if [ -n " $PACKAGE_NAME " ]; then
100+ ra_log " Detected application package from instrumentation list: $PACKAGE_NAME "
101+ fi
102+ fi
103+
96104if [ ! -d " $GRADLE_PROJECT_DIR " ]; then
97105 ra_log " Gradle project directory not found: $GRADLE_PROJECT_DIR " >&2
98106 exit 1
@@ -110,3 +118,35 @@ ORIGINAL_JAVA_HOME="${JAVA_HOME:-}"; export JAVA_HOME="$JAVA17_HOME"
110118)
111119export JAVA_HOME=" $ORIGINAL_JAVA_HOME "
112120ra_log " Instrumentation tests completed successfully"
121+
122+ if [ -z " $PACKAGE_NAME " ]; then
123+ ra_log " Application package name not available; skipping screenshot capture" >&2
124+ exit 1
125+ fi
126+
127+ ra_log " Launching $PACKAGE_NAME before capturing screenshot"
128+ adb_target shell monkey -p " $PACKAGE_NAME " -c android.intent.category.LAUNCHER 1 > /dev/null 2>&1 || {
129+ ra_log " Failed to launch $PACKAGE_NAME via monkey" >&2
130+ exit 1
131+ }
132+
133+ SCREENSHOT_DEVICE_PATH=" /sdcard/Download/cn1-instrumentation-screenshot.png"
134+ SCREENSHOT_DIR=" $REPO_ROOT /out/android-emulator"
135+ SCREENSHOT_PATH=" $SCREENSHOT_DIR /hello-codenameone.png"
136+ mkdir -p " $SCREENSHOT_DIR "
137+ rm -f " $SCREENSHOT_PATH "
138+
139+ ra_log " Capturing emulator screenshot to $SCREENSHOT_DEVICE_PATH "
140+ adb_target shell rm " $SCREENSHOT_DEVICE_PATH " > /dev/null 2>&1 || true
141+ adb_target shell screencap -p " $SCREENSHOT_DEVICE_PATH " > /dev/null || {
142+ ra_log " Failed to capture screenshot on device" >&2
143+ exit 1
144+ }
145+
146+ ra_log " Pulling screenshot to $SCREENSHOT_PATH "
147+ adb_target pull " $SCREENSHOT_DEVICE_PATH " " $SCREENSHOT_PATH " > /dev/null || {
148+ ra_log " Failed to pull screenshot from device" >&2
149+ exit 1
150+ }
151+ adb_target shell rm " $SCREENSHOT_DEVICE_PATH " > /dev/null 2>&1 || true
152+ ra_log " Screenshot available at $SCREENSHOT_PATH "
0 commit comments