252 lines
11 KiB
Markdown
252 lines
11 KiB
Markdown
# Classroom test checklist
|
|
|
|
Run against the exact artifact published to canary, on the real endpoint,
|
|
before promoting to stable with `./update_stable.sh`.
|
|
|
|
## Boot
|
|
|
|
- [ ] Cold boot reaches the classroom shell with no terminal or window junk
|
|
- [ ] Reboot does the same
|
|
- [ ] Wallpaper appears
|
|
- [ ] Dock appears, centred
|
|
- [ ] Clock appears, bottom right
|
|
|
|
## Provisioning
|
|
|
|
- [ ] `journalctl -u ekklesia-classroom-provision` shows a clean run
|
|
- [ ] Google Chrome is installed on a machine that never had it
|
|
- [ ] A second boot does not reinstall anything
|
|
- [ ] A machine with no network still boots to a working shell, and
|
|
provisioning succeeds at a later boot once it is online
|
|
|
|
## Networking
|
|
|
|
- [ ] `nmtui` is installed and `NetworkManager.service` is enabled
|
|
- [ ] An Ethernet interface declared in `/etc/network/interfaces` remains
|
|
managed by ifupdown and keeps its existing address
|
|
- [ ] `sudo nmtui` can save and activate a Wi-Fi connection
|
|
- [ ] The saved Wi-Fi connection reconnects after reboot
|
|
- [ ] A machine with no Wi-Fi adapter reaches the classroom normally without
|
|
an online-wait delay or NetworkManager failure
|
|
- [ ] Ethernet-only operation is unchanged
|
|
|
|
## Printing
|
|
|
|
- [ ] `cups.service` is enabled and `lpstat -r` reports that the scheduler runs
|
|
- [ ] `lpinfo -m` contains the generic color PCL 6/PCL XL driver documented in
|
|
[printing.md](printing.md)
|
|
- [ ] `sudo classroom-printer-setup <printer-ip>` creates only
|
|
`Classroom_Color`, enables it, and makes it the system default
|
|
- [ ] Repeating the helper updates the same queue without creating a duplicate
|
|
- [ ] Chrome opens the system print dialog and shows the configured queue
|
|
- [ ] Unrelated label/check-in printers are not automatically added
|
|
- [ ] The CUPS test page prints in color on the Ricoh MP C3502
|
|
- [ ] With the Ricoh powered off, the classroom still boots normally and a job
|
|
simply remains queued
|
|
|
|
## UI scale
|
|
|
|
UI_SCALE sets sway's output scale, so it scales the whole session.
|
|
Change it, then `sudo systemctl restart getty@tty1`.
|
|
|
|
- [ ] `UI_SCALE=1.0` is identical to a session with no scaling
|
|
- [ ] `swaymsg -t get_outputs` shows the mode still 1920x1080 at every
|
|
scale, with only the logical size changing
|
|
- [ ] At 1.25 and 1.5, **Chrome** grows: tabs, omnibox, toolbar icons,
|
|
menus and page content
|
|
- [ ] Chrome's buttons are still easy to hit with the mouse
|
|
- [ ] Dock, clock, notifications and the DVD bar grow by the same
|
|
amount — once, not twice
|
|
- [ ] Dock icons stay crisp at 1.25 and 1.5 on a normal-density monitor,
|
|
not just from across the room: compare an icon against the clock
|
|
text beside it
|
|
- [ ] DVD control bar icons are crisp at the same scales
|
|
- [ ] `UI_SCALE=0.8` shrinks everything together
|
|
- [ ] A nonsense value (`UI_SCALE=banana`) still gives a working shell
|
|
- [ ] An extreme value (`UI_SCALE=9`) is clamped, not obeyed
|
|
- [ ] `journalctl` or the sway log shows `classroom-scale: session scale N`
|
|
|
|
## Reserved bottom shell (regression)
|
|
|
|
The bottom strip is one full-width layer-shell surface with a 76px
|
|
exclusive zone. Dock and clock live inside it. Do not split them back
|
|
into separate layer-shell windows.
|
|
|
|
- [ ] A maximised Chrome window stops above the bottom strip
|
|
- [ ] The clock does not float over Chrome
|
|
- [ ] Dock stays centred, clock stays bottom right
|
|
- [ ] Wallpaper shows through the unused parts of the strip
|
|
- [ ] Every dock button still responds to clicks
|
|
- [ ] A fullscreen application covers the whole display, dock included
|
|
|
|
## Browser
|
|
|
|
- [ ] First Browser click launches Chrome
|
|
- [ ] Chrome opens on Wonder Ink (https://app.wonderink.org/)
|
|
- [ ] Clicking Browser while Chrome is focused minimises it
|
|
- [ ] Clicking Browser again restores it **maximised, not floating or draggable**
|
|
- [ ] Clicking Browser while Chrome is running but unfocused focuses it
|
|
- [ ] `Super+M` minimises the focused window
|
|
- [ ] `Super+Shift+M` restores the most recently minimised window
|
|
- [ ] Normal navigation to any other site works
|
|
- [ ] The Home button returns to Wonder Ink
|
|
- [ ] Fullscreen YouTube video uses the whole display
|
|
- [ ] Leaving fullscreen restores the correct geometry above the dock
|
|
- [ ] Chrome has **no sway title bar** — the window starts at Chrome's
|
|
own tab strip, and Chrome's tabs and address bar are still there
|
|
- [ ] Chrome still maximises and minimises as before
|
|
- [ ] After a reboot, no "Restore pages? Chrome didn't shut down
|
|
correctly" bubble
|
|
- [ ] Chrome does not offer to save passwords
|
|
- [ ] Chrome shows no way to sign into the browser itself
|
|
- [ ] No "Add profile" and no Guest entry in the profile menu
|
|
- [ ] No profile picker at startup
|
|
- [ ] Wonder Ink signs in normally during a session
|
|
- [ ] After closing Chrome fully and reopening, Wonder Ink is signed out
|
|
(see browser.md — this is the unverified one)
|
|
- [ ] YouTube is still signed into the church account after that
|
|
- [ ] `chrome://policy` lists PasswordManagerEnabled as an applied
|
|
managed policy
|
|
- [ ] Website logins still persist across a reboot
|
|
- [ ] Clicking Browser when Chrome is closed shows a throbber on the
|
|
dock button until the window appears
|
|
- [ ] Clicking Browser when Chrome is already open feels immediate,
|
|
with no throbber
|
|
- [ ] The pointer shows a busy cursor while it is over the dock
|
|
- [ ] No first-run, default-browser or sign-in nag appears
|
|
- [ ] `chrome://policy` lists the Ekklesia policies as applied, with no
|
|
"unknown policy" entries
|
|
- [ ] Chrome does not start by itself at boot
|
|
- [ ] After a reboot, cookies and site logins are still there
|
|
- [ ] After an OTA update, cookies and site logins are still there
|
|
|
|
Known limitation: Chrome's own minimise button in its title bar does
|
|
nothing. Sway ignores the Wayland minimise request and gives no event to
|
|
hook. Minimising is the dock's Browser button or `Super+M`.
|
|
|
|
## Notifications
|
|
|
|
- [ ] `classroom-notify-test` renders with the classroom styling:
|
|
dark translucent, rounded, white text, top right
|
|
- [ ] `classroom-notify-test --critical "Parent Call" "Room 3 needs a parent."`
|
|
renders in the critical style and does not time out
|
|
- [ ] Notifications appear over a fullscreen video
|
|
|
|
Over SSH from an administrator account, run it with sudo:
|
|
|
|
```
|
|
sudo classroom-notify-test --dry-run # show the session it resolved
|
|
sudo classroom-notify-test # send into the classroom desktop
|
|
```
|
|
|
|
The classroom desktop belongs to the classroom user, and mako sits on
|
|
that user's D-Bus session. A plain notify-send from an SSH session lands
|
|
in the administrator's own session, where nothing owns
|
|
org.freedesktop.Notifications, so D-Bus tries to start a second mako with
|
|
no display and the call times out with NoReply. The script finds the
|
|
running sway process for the classroom user and delivers into its
|
|
session instead. It never starts mako.
|
|
|
|
- [ ] `sudo classroom-notify-test` from an SSH session displays on the
|
|
classroom screen
|
|
- [ ] `sudo classroom-notify-test --dry-run` reports the resolved
|
|
XDG_RUNTIME_DIR, bus address and Wayland display
|
|
- [ ] Running it as an unprivileged admin account explains it needs sudo
|
|
- [ ] `tests/test-classroom-notify-test.sh` passes (also run by the build)
|
|
|
|
## Messaging
|
|
|
|
- [ ] With `MQTT_ENABLED=false`, `journalctl -u ekklesia-classroom-mqtt`
|
|
shows one line and the service is inactive — and the room is
|
|
completely normal
|
|
- [ ] With a broker configured, the service connects and
|
|
`mosquitto_sub -t 'classroom/status/#' -v` shows the room online
|
|
- [ ] A published notification appears on the classroom screen in the
|
|
classroom styling
|
|
- [ ] `urgency: critical` renders in the critical style
|
|
- [ ] Killing the broker leaves the room entirely usable
|
|
- [ ] The service reconnects on its own when the broker returns
|
|
- [ ] Rebooting with the broker **down** boots normally to the dock
|
|
- [ ] A retained notification left on the broker does not appear at boot
|
|
|
|
## DVD
|
|
|
|
With `DVD_ENABLED=false`:
|
|
|
|
- [ ] No DVD button in the dock
|
|
|
|
With `DVD_ENABLED=true`:
|
|
|
|
- [ ] Drive unplugged: button present, icon held back, friendly notification on click
|
|
- [ ] Drive present, no disc: friendly notification on click, nothing crashes
|
|
- [ ] Inserting a disc produces one **DVD Ready** notification
|
|
- [ ] The DVD icon comes up to full strength while a disc is in
|
|
- [ ] Nothing plays until the button is pressed
|
|
- [ ] Clicking plays the disc
|
|
- [ ] Menus work
|
|
- [ ] Audio works
|
|
- [ ] Chapter navigation works
|
|
- [ ] Fullscreen works
|
|
- [ ] `Super+M` minimises the player, the DVD button restores it
|
|
- [ ] Closing the player works
|
|
- [ ] Ejecting is detected, the icon goes back
|
|
- [ ] Reinserting is detected again
|
|
- [ ] Commercial CSS disc plays without anyone having run codec setup
|
|
by hand
|
|
|
|
## Sanctuary LIVE capability
|
|
|
|
With `LIVE_ENABLED=false`:
|
|
|
|
- [ ] No LIVE button or spacing hole appears in the dock
|
|
- [ ] No live-specific service or process starts
|
|
|
|
With `LIVE_ENABLED=true`:
|
|
|
|
- [ ] LIVE appears after DVD when DVD is enabled, and after Browser otherwise
|
|
- [ ] Clicking it shows the existing placeholder notification
|
|
- [ ] No live playback is attempted
|
|
|
|
### DVD mode
|
|
|
|
- [ ] Pressing DVD covers the **whole** display immediately, dock and
|
|
clock included — no wallpaper visible anywhere, at any point
|
|
- [ ] A spinner and "Loading DVD…" show while the disc spins up
|
|
- [ ] No partial VLC window is ever visible against the wallpaper
|
|
- [ ] The loading surface stays up until the disc menu is actually
|
|
showing — VLC's tiled black startup window is never visible
|
|
- [ ] Video or the disc menu replaces the loading surface when ready
|
|
- [ ] A disc that never opens still gives the desktop back (20s)
|
|
- [ ] No VLC chrome anywhere: no menu bar, no fullscreen controller,
|
|
no cone, no sway title bar
|
|
- [ ] Wallpaper is never visible around VLC
|
|
- [ ] Moving the mouse to the bottom slides the classroom bar up
|
|
- [ ] It hides again shortly after the mouse leaves it
|
|
- [ ] While hidden, clicking a disc menu item near the bottom still
|
|
reaches the menu
|
|
- [ ] Play/pause toggles and the icon follows the actual state
|
|
- [ ] Previous and next chapter work
|
|
- [ ] The menu button returns to the disc menu
|
|
- [ ] Space pauses; arrow keys and Enter navigate the disc menu
|
|
- [ ] Arrow keys do **not** change volume, and no key reaches crop,
|
|
aspect ratio, subtitles, audio tracks or deinterlacing
|
|
- [ ] Esc leaves DVD mode cleanly, with no black window left behind
|
|
- [ ] Close leaves DVD mode cleanly
|
|
- [ ] Eject leaves DVD mode and opens the tray
|
|
- [ ] Killing VLC by hand also returns to the classroom desktop
|
|
- [ ] Pressing DVD twice quickly does not start two sessions
|
|
- [ ] The bar is sized by UI_SCALE like the dock
|
|
|
|
## OTA
|
|
|
|
- [ ] `./update_canary.sh` publishes package first, manifest last
|
|
- [ ] The endpoint on the canary channel picks the update up
|
|
- [ ] SHA-256 verification passes
|
|
- [ ] Install succeeds and the endpoint reboots
|
|
- [ ] Everything above still works after the update
|
|
- [ ] Upgrade from 0.1.36 preserves every existing `device.conf` value
|
|
- [ ] `LIVE_ENABLED=false` is appended exactly once on upgrade and remains
|
|
single after reinstall
|
|
- [ ] `tools/validate-trixie-release.sh` passes against the 0.1.37 package and
|
|
the 0.1.36 package
|