blob: 414af521663964269dc6f86bc4a23a9c76d60a87 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
#!/usr/bin/env bash
# Author: cirakg & claude ai
# Summary: Run the scripted UI flow on each device in the headless simulator and compare every screen with its golden image.
#
# Usage: screenshots.sh DEVICE [DEVICE ...] (APPROVE=1 saves new goldens)
# Output: build/screenshots/<DEVICE>/<screen>.png (the watch screen only),
# plus <screen>-diff.png where a screen differs from
# test/golden/<DEVICE>/<screen>.png.
#
# Uses the UI-test build (uitest.jungle): fake entries, PIN 123456 and a
# frozen clock, so every screenshot is reproducible. tools/ui_flow.py
# drives the app and checks the screens.
set -euo pipefail
# shellcheck source=ciq-env.sh
source "$(dirname "${BASH_SOURCE[0]}")/ciq-env.sh"
(($# > 0)) || die "usage: screenshots.sh DEVICE [DEVICE ...]"
ciq_require_sdk
ciq_require_key
for device in "$@"; do
build-app.sh uitest "${device}"
done
ciq_start_display
ciq_start_simulator
out="${BUILD_DIR}/screenshots"
mkdir -p "${out}"
approve=()
[[ "${APPROVE:-0}" == 1 ]] && approve=(--approve)
failed=0
for device in "$@"; do
mkdir -p "${out}/${device}"
log_file="${out}/${device}/app.log"
if ! ciq_launch_app "${device}" "${log_file}" uitest; then
ciq_stop_app
log "no first frame on ${device}; see ${log_file}"
failed=1
continue
fi
python3 /work/tools/ui_flow.py --device-dir "${CIQ_HOME}/Devices/${device}" --log "${log_file}" \
--window "$(ciq_simulator_window)" --out "${out}/${device}" --golden "/work/test/golden/${device}" \
"${approve[@]}" || failed=1
ciq_stop_app
done
((failed == 0)) || die "screenshot checks failed; see build/screenshots/"
log "screenshots checked on: $*"
|