test: stabilize Android public staging verification
This commit is contained in:
parent
2372947430
commit
ad0204830a
|
|
@ -45,10 +45,7 @@ public final class CrossClientStagingInstrumentedTest {
|
||||||
String browserReply = requiredArgument("browser_reply");
|
String browserReply = requiredArgument("browser_reply");
|
||||||
|
|
||||||
try (ActivityScenario<MainActivity> scenario = launch(loginPath)) {
|
try (ActivityScenario<MainActivity> scenario = launch(loginPath)) {
|
||||||
waitForElementText(
|
waitForElement("remember-login-button");
|
||||||
"remember-login-button",
|
|
||||||
"Keep me logged in on this device"
|
|
||||||
);
|
|
||||||
click("remember-login-button");
|
click("remember-login-button");
|
||||||
waitForElementText(
|
waitForElementText(
|
||||||
"main-content",
|
"main-content",
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ tools_image="who-need-help:android-e2e-tools-$run_id"
|
||||||
browser_image="who-need-help-e2e-tests:android-$run_id"
|
browser_image="who-need-help-e2e-tests:android-$run_id"
|
||||||
android_image="who-need-help-android:cross-client-$run_id"
|
android_image="who-need-help-android:cross-client-$run_id"
|
||||||
container="who-need-help-android-cross-client-$run_id"
|
container="who-need-help-android-cross-client-$run_id"
|
||||||
|
avd_volume="who-need-help-android-avd-cross-client-$run_id"
|
||||||
package=org.whoneedhelp.mobile.staging
|
package=org.whoneedhelp.mobile.staging
|
||||||
service_class=org.whoneedhelp.mobile.TrackingService
|
service_class=org.whoneedhelp.mobile.TrackingService
|
||||||
fixture_password="$(openssl rand -hex 24)"
|
fixture_password="$(openssl rand -hex 24)"
|
||||||
|
|
@ -234,6 +235,7 @@ cleanup() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
docker rm -f "$container" >/dev/null 2>&1 || true
|
docker rm -f "$container" >/dev/null 2>&1 || true
|
||||||
|
docker volume rm -f "$avd_volume" >/dev/null 2>&1 || true
|
||||||
docker image rm "$android_image" "$browser_image" "$tools_image" >/dev/null 2>&1 || true
|
docker image rm "$android_image" "$browser_image" "$tools_image" >/dev/null 2>&1 || true
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
@ -243,6 +245,12 @@ cleanup() {
|
||||||
else
|
else
|
||||||
printf 'true\n'
|
printf 'true\n'
|
||||||
fi
|
fi
|
||||||
|
printf 'volume_absent='
|
||||||
|
if docker volume inspect "$avd_volume" >/dev/null 2>&1; then
|
||||||
|
printf 'false\n'
|
||||||
|
else
|
||||||
|
printf 'true\n'
|
||||||
|
fi
|
||||||
printf 'fixture_prefix_absent='
|
printf 'fixture_prefix_absent='
|
||||||
if [[ -f "$output_dir/database-cleanup.diff" ]] &&
|
if [[ -f "$output_dir/database-cleanup.diff" ]] &&
|
||||||
[[ ! -s "$output_dir/database-cleanup.diff" ]]; then
|
[[ ! -s "$output_dir/database-cleanup.diff" ]]; then
|
||||||
|
|
@ -277,12 +285,41 @@ docker build \
|
||||||
--tag "$android_image" \
|
--tag "$android_image" \
|
||||||
android >"$output_dir/android-image-build.log"
|
android >"$output_dir/android-image-build.log"
|
||||||
|
|
||||||
|
docker volume create "$avd_volume" >"$output_dir/avd-volume.txt"
|
||||||
|
|
||||||
docker run -d \
|
docker run -d \
|
||||||
--name "$container" \
|
--name "$container" \
|
||||||
--device /dev/kvm \
|
--device /dev/kvm \
|
||||||
|
--mount \
|
||||||
|
"type=volume,source=$avd_volume,target=/home/gradle/.android/avd/who_need_help_test.avd" \
|
||||||
"$android_image" >"$output_dir/container-id.txt"
|
"$android_image" >"$output_dir/container-id.txt"
|
||||||
|
|
||||||
adb wait-for-device
|
if [[ "$(docker inspect --format '{{.State.Running}}' "$container")" != true ]]; then
|
||||||
|
docker logs "$container" >"$output_dir/emulator.log" 2>&1 || true
|
||||||
|
echo "Android cross-client emulator exited before ADB became available; inspect $output_dir/emulator.log." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
adb_ready=0
|
||||||
|
for _attempt in $(seq 1 90); do
|
||||||
|
if [[ "$(docker inspect --format '{{.State.Running}}' "$container")" != true ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$(adb get-state 2>/dev/null || true)" == device ]]; then
|
||||||
|
adb_ready=1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ "$adb_ready" -ne 1 ]]; then
|
||||||
|
docker logs "$container" >"$output_dir/emulator.log" 2>&1 || true
|
||||||
|
echo "Android cross-client emulator did not expose a ready ADB device." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
booted=
|
booted=
|
||||||
for _attempt in $(seq 1 90); do
|
for _attempt in $(seq 1 90); do
|
||||||
booted=$(adb shell getprop sys.boot_completed 2>/dev/null | tr -d '\r')
|
booted=$(adb shell getprop sys.boot_completed 2>/dev/null | tr -d '\r')
|
||||||
|
|
@ -343,6 +380,12 @@ start_android_phase exchangeMessageAndTrackingWithBrowser
|
||||||
|
|
||||||
tracking_started=0
|
tracking_started=0
|
||||||
for _attempt in $(seq 1 45); do
|
for _attempt in $(seq 1 45); do
|
||||||
|
if ! kill -0 "$android_runner_pid" 2>/dev/null; then
|
||||||
|
wait_android_phase
|
||||||
|
echo "Android instrumentation exited before foreground tracking started." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
adb shell dumpsys notification --noredact >"$output_dir/notifications-current.txt"
|
adb shell dumpsys notification --noredact >"$output_dir/notifications-current.txt"
|
||||||
adb shell dumpsys activity services "$package" >"$output_dir/services-current.txt"
|
adb shell dumpsys activity services "$package" >"$output_dir/services-current.txt"
|
||||||
if grep -Fq "Sharing live location" "$output_dir/notifications-current.txt" &&
|
if grep -Fq "Sharing live location" "$output_dir/notifications-current.txt" &&
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ TEST_APK="$ROOT/android/dist-staging/who-need-help-staging-androidTest.apk"
|
||||||
run_id=$(date -u +%Y%m%d%H%M%S)-$$
|
run_id=$(date -u +%Y%m%d%H%M%S)-$$
|
||||||
image="who-need-help-android:staging-smoke-$run_id"
|
image="who-need-help-android:staging-smoke-$run_id"
|
||||||
container="who-need-help-android-staging-smoke-$run_id"
|
container="who-need-help-android-staging-smoke-$run_id"
|
||||||
|
avd_volume="who-need-help-android-avd-staging-smoke-$run_id"
|
||||||
output="$ROOT/output/android-staging-smoke/$run_id"
|
output="$ROOT/output/android-staging-smoke/$run_id"
|
||||||
package=org.whoneedhelp.mobile.staging
|
package=org.whoneedhelp.mobile.staging
|
||||||
activity=org.whoneedhelp.mobile.MainActivity
|
activity=org.whoneedhelp.mobile.MainActivity
|
||||||
|
|
@ -77,6 +78,7 @@ cleanup() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
docker rm -f "$container" >/dev/null 2>&1 || true
|
docker rm -f "$container" >/dev/null 2>&1 || true
|
||||||
|
docker volume rm -f "$avd_volume" >/dev/null 2>&1 || true
|
||||||
docker image rm "$image" >/dev/null 2>&1 || true
|
docker image rm "$image" >/dev/null 2>&1 || true
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
@ -87,6 +89,13 @@ cleanup() {
|
||||||
printf 'true\n'
|
printf 'true\n'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
printf 'volume_absent='
|
||||||
|
if docker volume inspect "$avd_volume" >/dev/null 2>&1; then
|
||||||
|
printf 'false\n'
|
||||||
|
else
|
||||||
|
printf 'true\n'
|
||||||
|
fi
|
||||||
|
|
||||||
printf 'image_absent='
|
printf 'image_absent='
|
||||||
if docker image inspect "$image" >/dev/null 2>&1; then
|
if docker image inspect "$image" >/dev/null 2>&1; then
|
||||||
printf 'false\n'
|
printf 'false\n'
|
||||||
|
|
@ -113,11 +122,21 @@ docker build \
|
||||||
--tag "$image" \
|
--tag "$image" \
|
||||||
"$ROOT/android" >"$output/image-build.txt"
|
"$ROOT/android" >"$output/image-build.txt"
|
||||||
|
|
||||||
|
docker volume create "$avd_volume" >"$output/avd-volume.txt"
|
||||||
|
|
||||||
docker run -d \
|
docker run -d \
|
||||||
--name "$container" \
|
--name "$container" \
|
||||||
--device /dev/kvm \
|
--device /dev/kvm \
|
||||||
|
--mount \
|
||||||
|
"type=volume,source=$avd_volume,target=/home/gradle/.android/avd/who_need_help_test.avd" \
|
||||||
"$image" >"$output/container-id.txt"
|
"$image" >"$output/container-id.txt"
|
||||||
|
|
||||||
|
if [ "$(docker inspect --format '{{.State.Running}}' "$container")" != "true" ]; then
|
||||||
|
docker logs "$container" >"$output/emulator.log" 2>&1 || true
|
||||||
|
echo "Android staging emulator exited before ADB became available; inspect $output/emulator.log." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
docker exec "$container" adb wait-for-device
|
docker exec "$container" adb wait-for-device
|
||||||
|
|
||||||
booted=
|
booted=
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user