# `fullscreen toggle` must read the dashboard's REAL state, not a belief the
# FIFO's own `fullscreen` verb tracked on the side.
#
# warden_debug.c's `fullscreen` command used to keep a private `static bool
# on` as its only record of state, and nothing kept it in step with the real
# dashboard: `home` clears fullscreen by calling
# warden_screen_overview_set_fullscreen(false) directly (every hardware run's
# preamble, since a live panel is wherever the last flow or an operator left
# it), and a real tap on the dashboard toggles it through the UI's own
# tap-catcher. Either way the FIFO's belief was left stale. A `fullscreen
# toggle` right after either one then decided its next state from that stale
# belief: if `on` was still true from an earlier `fullscreen on`, toggling
# set it to false -- which coincidentally MATCHED the already-off real state,
# so the dashboard never actually turned on, yet the reply still said
# "fullscreen off: ok". See test_qmp_drive.py's FullscreenToggleTracksRealState
# for the same scenario driven offline against a faked control channel (both
# the pre-fix and fixed shapes).
#
# `wake` first, as every compiled flow does: by the time the control bridge
# is up the rig may already sit dimmed, and sleep.c swallows the touch that
# wakes a dimmed panel (flare-edge #148).
wake
sleep 1
assert_page Dashboard/Dashboard
assert_hit 47 676 obj box=12,640,72x72
ctl fullscreen on
sleep 1
assert_hit 47 676 widget box=0,0,720x720
home
sleep 1
assert_page Dashboard/Dashboard
# home must have cleared the REAL state -- this is home-leaves-fullscreen.txt's
# own check, repeated here so a failure below is unambiguously the toggle's
# fault and not a home regression.
assert_hit 47 676 obj box=12,640,72x72
# The dashboard is really off now. A correct toggle from here can only go on.
ctl fullscreen toggle
sleep 1
assert_hit 47 676 widget box=0,0,720x720
