- Ajoute privacy-policy-v1.md et release-compliance-checklist.md - Ajoute documents QA gates #238-#243 - Ajoute scripts de validation repo-only et device runbooks - Prépare checklists exécutables avant upload Play fermé Ticket #261
155 lines
4.1 KiB
Bash
Executable File
155 lines
4.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
PROJECT_ROOT="/home/anthony/Documents/Projects/GameTime"
|
|
ARTIFACT_BASE="${ARTIFACT_BASE:-$PROJECT_ROOT/.ideai/artifacts/qa-device}"
|
|
PHONE_SERIAL="${PHONE_SERIAL:-}"
|
|
WATCH_SERIAL="${WATCH_SERIAL:-}"
|
|
PACKAGE_NAME="${PACKAGE_NAME:-com.idea.gametime}"
|
|
WATCH_PACKAGE_NAME="${WATCH_PACKAGE_NAME:-com.idea.gametime}"
|
|
|
|
usage() {
|
|
cat <<'EOF'
|
|
Usage:
|
|
./tool/qa_device_watch_companion.sh start
|
|
./tool/qa_device_watch_companion.sh stop <artifact_dir>
|
|
|
|
Environment:
|
|
PHONE_SERIAL Optional adb serial for the phone under test
|
|
WATCH_SERIAL Optional adb serial for the Wear device under test
|
|
ARTIFACT_BASE Optional artifact root
|
|
PACKAGE_NAME Optional phone package name
|
|
WATCH_PACKAGE_NAME Optional watch package name
|
|
EOF
|
|
}
|
|
|
|
adb_phone() {
|
|
if [[ -n "$PHONE_SERIAL" ]]; then
|
|
adb -s "$PHONE_SERIAL" "$@"
|
|
else
|
|
adb "$@"
|
|
fi
|
|
}
|
|
|
|
adb_watch() {
|
|
[[ -n "$WATCH_SERIAL" ]] || {
|
|
echo "WATCH_SERIAL is required for watch companion QA." >&2
|
|
exit 1
|
|
}
|
|
adb -s "$WATCH_SERIAL" "$@"
|
|
}
|
|
|
|
require_adb() {
|
|
command -v adb >/dev/null 2>&1 || {
|
|
echo "adb not found in PATH." >&2
|
|
exit 1
|
|
}
|
|
adb start-server >/dev/null
|
|
adb_phone get-state >/dev/null 2>&1 || {
|
|
echo "No phone adb device available." >&2
|
|
exit 1
|
|
}
|
|
adb_watch get-state >/dev/null 2>&1 || {
|
|
echo "No watch adb device available." >&2
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
timestamp() {
|
|
date -u +"%Y%m%dT%H%M%SZ"
|
|
}
|
|
|
|
start_capture() {
|
|
require_adb
|
|
local dir="$ARTIFACT_BASE/watch-companion-$(timestamp)"
|
|
mkdir -p "$dir"
|
|
|
|
adb devices -l >"$dir/adb-devices.txt"
|
|
adb_phone shell getprop ro.build.fingerprint >"$dir/phone-build-fingerprint.txt"
|
|
adb_watch shell getprop ro.build.fingerprint >"$dir/watch-build-fingerprint.txt"
|
|
adb_phone shell dumpsys package "$PACKAGE_NAME" >"$dir/phone-package-dumpsys-before.txt" || true
|
|
adb_watch shell dumpsys package "$WATCH_PACKAGE_NAME" >"$dir/watch-package-dumpsys-before.txt" || true
|
|
adb_phone logcat -c
|
|
adb_watch logcat -c
|
|
adb_phone logcat -v threadtime >"$dir/phone-logcat.txt" 2>&1 &
|
|
echo "$!" >"$dir/phone-logcat.pid"
|
|
adb_watch logcat -v threadtime >"$dir/watch-logcat.txt" 2>&1 &
|
|
echo "$!" >"$dir/watch-logcat.pid"
|
|
|
|
cat >"$dir/steps.md" <<EOF
|
|
# Watch companion manual QA
|
|
|
|
Date: $(date -u +"%Y-%m-%d %H:%M:%SZ")
|
|
Phone package: $PACKAGE_NAME
|
|
Watch package: $WATCH_PACKAGE_NAME
|
|
|
|
## Preconditions
|
|
- Phone and watch connected through adb.
|
|
- Same GameTime app version installed on both.
|
|
- Watch paired to the phone and reachable.
|
|
|
|
## Manual flow
|
|
1. Launch GameTime on the phone.
|
|
2. Start a workout from the phone.
|
|
3. Validate that the active session is projected to the watch.
|
|
4. Validate visible metrics on watch, including steps if available.
|
|
5. Trigger at least one action from the watch that must affect the phone session.
|
|
6. Validate phone UI updates correctly after the watch action.
|
|
7. Finish the workout and validate the watch teardown / final state.
|
|
|
|
## Evidence to collect
|
|
- Screenshot(s) on phone and watch while a session is active.
|
|
- Notes on connection status and any visible lag.
|
|
- Notes on step visibility if data is present.
|
|
- Final verdict on session projection and round-trip actions.
|
|
EOF
|
|
|
|
echo "$dir"
|
|
}
|
|
|
|
stop_capture() {
|
|
local dir="${1:-}"
|
|
[[ -n "$dir" ]] || {
|
|
usage >&2
|
|
exit 2
|
|
}
|
|
require_adb
|
|
[[ -d "$dir" ]] || {
|
|
echo "Artifact directory not found: $dir" >&2
|
|
exit 1
|
|
}
|
|
|
|
[[ -f "$dir/phone-logcat.pid" ]] && kill "$(cat "$dir/phone-logcat.pid")" >/dev/null 2>&1 || true
|
|
[[ -f "$dir/watch-logcat.pid" ]] && kill "$(cat "$dir/watch-logcat.pid")" >/dev/null 2>&1 || true
|
|
|
|
adb_phone shell dumpsys package "$PACKAGE_NAME" >"$dir/phone-package-dumpsys-after.txt" || true
|
|
adb_watch shell dumpsys package "$WATCH_PACKAGE_NAME" >"$dir/watch-package-dumpsys-after.txt" || true
|
|
|
|
cat <<EOF
|
|
Watch companion manual QA artifacts finalized in:
|
|
$dir
|
|
|
|
Archive expected:
|
|
- adb-devices.txt
|
|
- phone-build-fingerprint.txt
|
|
- watch-build-fingerprint.txt
|
|
- phone-logcat.txt
|
|
- watch-logcat.txt
|
|
- steps.md
|
|
EOF
|
|
}
|
|
|
|
case "${1:-}" in
|
|
start)
|
|
start_capture
|
|
;;
|
|
stop)
|
|
shift
|
|
stop_capture "${1:-}"
|
|
;;
|
|
*)
|
|
usage
|
|
exit 2
|
|
;;
|
|
esac
|