@@ -9,6 +9,11 @@ if [ $# -lt 1 ]; then
99 exit 1
1010fi
1111
12+ # near the top
13+ ARTIFACTS_DIR=" ${ARTIFACTS_DIR:- ${GITHUB_WORKSPACE:- $REPO_ROOT } / artifacts} "
14+ mkdir -p " $ARTIFACTS_DIR "
15+ TEST_LOG=" $ARTIFACTS_DIR /connectedAndroidTest.log"
16+
1217GRADLE_PROJECT_DIR=" $1 "
1318
1419SCRIPT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " && pwd) "
@@ -102,11 +107,58 @@ if [ ! -x "$GRADLE_PROJECT_DIR/gradlew" ]; then
102107 chmod +x " $GRADLE_PROJECT_DIR /gradlew"
103108fi
104109
105- ra_log " Running instrumentation tests from $GRADLE_PROJECT_DIR "
106- ORIGINAL_JAVA_HOME=" ${JAVA_HOME:- } " ; export JAVA_HOME=" $JAVA17_HOME "
110+ set -o pipefail
111+
112+ ra_log " Running instrumentation tests (stdout -> $TEST_LOG ; stderr -> terminal)"
113+ status=0
107114(
108115 cd " $GRADLE_PROJECT_DIR "
109- ./gradlew --no-daemon connectedDebugAndroidTest
110- )
111- export JAVA_HOME=" $ORIGINAL_JAVA_HOME "
116+ # stdout goes to tee+file, stderr remains on the terminal
117+ ./gradlew --no-daemon --console=plain connectedDebugAndroidTest | tee " $TEST_LOG "
118+ ) || status=$?
119+
120+ # Show the log now (helpful for review even on success)
121+ echo
122+ ra_log " ==== Begin connectedAndroidTest.log (tail -n 200) ===="
123+ tail -n 200 " $TEST_LOG " || true
124+ ra_log " ==== End connectedAndroidTest.log ===="
125+ echo
126+
127+ # Where Gradle puts connected test XML reports
128+ RESULTS_GLOB=" $GRADLE_PROJECT_DIR /app/build/outputs/androidTest-results/connected"
129+
130+ # Pick the newest XML (handles single or multiple files)
131+ NEWEST_XML=" $( find " $RESULTS_GLOB " -type f -name ' TEST-*.xml' -printf ' %T@ %p\n' 2> /dev/null \
132+ | sort -nr | awk ' NR==1{print $2}' ) "
133+
134+ ARTIFACTS_DIR=" ${ARTIFACTS_DIR:- ${GITHUB_WORKSPACE:- $REPO_ROOT } / artifacts} "
135+ mkdir -p " $ARTIFACTS_DIR "
136+ SCREENSHOT_PATH=" $ARTIFACTS_DIR /emulator-screenshot.png"
137+
138+ if [ -n " $NEWEST_XML " ] && [ -f " $NEWEST_XML " ]; then
139+ ra_log " Extracting screenshot from $NEWEST_XML -> $SCREENSHOT_PATH "
140+
141+ # Pull everything between your begin/end markers from <system-out> (handles CDATA and line breaks)
142+ if awk '
143+ /<<CN1_SCREENSHOT_BEGIN>>/ {on=1; next}
144+ /<<CN1_SCREENSHOT_END>>/ {on=0}
145+ on
146+ ' " $NEWEST_XML " \
147+ | tr -d " \r\n" \
148+ | base64 -d > " $SCREENSHOT_PATH " 2> /dev/null; then
149+
150+ if [ -s " $SCREENSHOT_PATH " ]; then
151+ ra_log " Screenshot saved: $( ls -lh " $SCREENSHOT_PATH " | awk " {print \$ 5, \$ 9}" ) "
152+ else
153+ ra_log " Markers found but produced empty file – check that your test emitted a non-empty PNG payload."
154+ fi
155+ else
156+ ra_log " Could not decode base64 from markers in $NEWEST_XML "
157+ fi
158+ else
159+ ra_log " No TEST-*.xml found under $RESULTS_GLOB (did the test run?)"
160+ fi
161+
162+ ra_log " Latest connected test report: ${NEWEST_XML:- <none>} "
163+
112164ra_log " Instrumentation tests completed successfully"
0 commit comments