rehearsal 2026-10-20: 44 more screenshots off the browser container, gallery rebuilt; A4 browser spike result
gates / gates (push) Successful in 12m48s
@@ -0,0 +1,36 @@
|
||||
# A4 — the browser spike: a real browser for the household, with no browser on DooPlex (2026-10-20)
|
||||
|
||||
**Result: it works. Ready in ~12 minutes (09:39 → 09:51 UTC), well inside the 90-minute box.** Used for the rest of the run.
|
||||
|
||||
## What was built
|
||||
|
||||
- A throwaway LXC **9330 `rehearsal1020-browser`** on demo-hp (Tier 0): Debian 13, 2 cores, 4 GB, 24 GB on nvme-scratch.
|
||||
- **Chromium 155.0.8059.79** (the Debian package) driven by **Playwright 1.52.0** (Python, `/opt/pw`).
|
||||
- Two sizes: **phone 390×844** (scale 2, touch, an Android user agent) and **computer 1366×768**; two languages:
|
||||
**hu-HU** and **en-US** (locale + `Accept-Language`), time zone Europe/Budapest.
|
||||
- Tools (all in `../tools/`): `ui.py` (a JSON list of steps: go, click, fill from a secret, select, wait, screenshot),
|
||||
`brun.sh` (run a command in the LXC; secrets travel on stdin through `envrun.py`, never on a command line),
|
||||
`brpull.sh` (copy the screenshots off the LXC), `gallery.py` (builds `../screens/README.md`).
|
||||
|
||||
## What it was used for
|
||||
|
||||
The download page (B1), the bind page and its wrong tries (B2), the claim, the recovery-code ceremony, the family card,
|
||||
every app's own install page (B3), Actual Budget's own import dialog (B4 — the one app with no usable API), the walk of
|
||||
the dashboard on phone and computer (B4), the second drive (B6 #13), the English pass of 15 pages (B6 #16).
|
||||
121 screenshots in `../screens/`.
|
||||
|
||||
## Limits — what this is NOT
|
||||
|
||||
- **The household's address has no DNS** (`tester4.test` is a reserved name): the LXC maps the box's names to its LAN
|
||||
address in `/etc/hosts`, and TLS is not verified. A real household reaches the box through its own domain and a
|
||||
real certificate; that leg is not covered.
|
||||
- **Not a human click-through.** Playwright presses the same buttons and reads the same pages, but it does not get lost,
|
||||
misread or give up. The stuck points (`../B10-stuck/`) are a reading of what a person would do, not a measurement.
|
||||
- **Screenshots blank every text and password field for the photo** (and put the values back before any submit —
|
||||
the 12:22 slip, when they did not, sent an empty Nextcloud form). Codes shown as text on a page were never
|
||||
photographed. Before a commit, the pages that hold a password or a key (app settings, share password, security,
|
||||
remote backup) were opened and looked at: they show only dots or blanks.
|
||||
|
||||
## Teardown
|
||||
|
||||
The LXC is removed in Part D with the rest (`../D-teardown/`).
|
||||
@@ -76,6 +76,24 @@ Phone = 390×844, computer = 1366×768 (Chromium 155 + Playwright 1.52.0 in a th
|
||||
| `b3-drives-5-init-confirm` | — | — | <img src="b3-apps/b3-drives-5-init-confirm-desktop-hu.png" width="260"> | — |
|
||||
| `b3-family-1-security` | <img src="b3-apps/b3-family-1-security-phone-hu.png" width="140"> | — | — | — |
|
||||
|
||||
## b4-actual
|
||||
|
||||
| screen | phone HU | phone EN | computer HU | computer EN |
|
||||
|---|---|---|---|---|
|
||||
| `b4-actual-1-first-open` | — | — | <img src="b4-actual/b4-actual-1-first-open-desktop-hu.png" width="260"> | — |
|
||||
| `b4-actual-2-now` | — | — | <img src="b4-actual/b4-actual-2-now-desktop-hu.png" width="260"> | — |
|
||||
| `b4-actual-3-signed-in` | — | — | <img src="b4-actual/b4-actual-3-signed-in-desktop-hu.png" width="260"> | — |
|
||||
| `b4-actual-4-budget` | — | — | <img src="b4-actual/b4-actual-4-budget-desktop-hu.png" width="260"> | — |
|
||||
| `b4-actual-5-account-dialog` | — | — | <img src="b4-actual/b4-actual-5-account-dialog-desktop-hu.png" width="260"> | — |
|
||||
| `b4-actual-6-account` | — | — | <img src="b4-actual/b4-actual-6-account-desktop-hu.png" width="260"> | — |
|
||||
| `b4-actual-7-import-dialog` | — | — | <img src="b4-actual/b4-actual-7-import-dialog-desktop-hu.png" width="260"> | — |
|
||||
| `b4-actual-8-after-import` | — | — | <img src="b4-actual/b4-actual-8-after-import-desktop-hu.png" width="260"> | — |
|
||||
| `b4-actual-9-imported` | — | — | <img src="b4-actual/b4-actual-9-imported-desktop-hu.png" width="260"> | — |
|
||||
| `b4-vault-1-signup` | — | — | <img src="b4-actual/b4-vault-1-signup-desktop-hu.png" width="260"> | — |
|
||||
| `b4-vault-2-after-continue` | — | — | <img src="b4-actual/b4-vault-2-after-continue-desktop-hu.png" width="260"> | — |
|
||||
| `b4-vault-3-master-filled` | — | — | <img src="b4-actual/b4-vault-3-master-filled-desktop-hu.png" width="260"> | — |
|
||||
| `b4-vault-4-after-create` | — | — | <img src="b4-actual/b4-vault-4-after-create-desktop-hu.png" width="260"> | — |
|
||||
|
||||
## b4-immich
|
||||
|
||||
| screen | phone HU | phone EN | computer HU | computer EN |
|
||||
@@ -86,6 +104,65 @@ Phone = 390×844, computer = 1366×768 (Chromium 155 + Playwright 1.52.0 in a th
|
||||
| `b4-immich-3-signup-filled` | — | — | <img src="b4-immich/b4-immich-3-signup-filled-desktop-hu.png" width="260"> | — |
|
||||
| `b4-immich-4-after-signup` | — | — | <img src="b4-immich/b4-immich-4-after-signup-desktop-hu.png" width="260"> | — |
|
||||
|
||||
## b4-share
|
||||
|
||||
| screen | phone HU | phone EN | computer HU | computer EN |
|
||||
|---|---|---|---|---|
|
||||
| `b4-share-1-sharing` | — | — | <img src="b4-share/b4-share-1-sharing-desktop-hu.png" width="260"> | — |
|
||||
| `b4-share-2-after-setup` | — | — | <img src="b4-share/b4-share-2-after-setup-desktop-hu.png" width="260"> | — |
|
||||
| `b4-share-3-enable-ticked` | — | — | <img src="b4-share/b4-share-3-enable-ticked-desktop-hu.png" width="260"> | — |
|
||||
| `b4-share-4-after-enable` | — | — | <img src="b4-share/b4-share-4-after-enable-desktop-hu.png" width="260"> | — |
|
||||
| `b4-share-5-after-password` | — | — | <img src="b4-share/b4-share-5-after-password-desktop-hu.png" width="260"> | — |
|
||||
|
||||
## b4-walk
|
||||
|
||||
| screen | phone HU | phone EN | computer HU | computer EN |
|
||||
|---|---|---|---|---|
|
||||
| `b4-walk-01-launcher` | <img src="b4-walk/b4-walk-01-launcher-phone-hu.png" width="140"> | — | <img src="b4-walk/b4-walk-01-launcher-desktop-hu.png" width="260"> | — |
|
||||
| `b4-walk-02-dashboard` | <img src="b4-walk/b4-walk-02-dashboard-phone-hu.png" width="140"> | — | <img src="b4-walk/b4-walk-02-dashboard-desktop-hu.png" width="260"> | — |
|
||||
| `b4-walk-10-immich-page` | <img src="b4-walk/b4-walk-10-immich-page-phone-hu.png" width="140"> | — | <img src="b4-walk/b4-walk-10-immich-page-desktop-hu.png" width="260"> | — |
|
||||
| `b4-walk-10-paperless-ngx-page` | <img src="b4-walk/b4-walk-10-paperless-ngx-page-phone-hu.png" width="140"> | — | <img src="b4-walk/b4-walk-10-paperless-ngx-page-desktop-hu.png" width="260"> | — |
|
||||
| `b4-walk-10-vaultwarden-page` | <img src="b4-walk/b4-walk-10-vaultwarden-page-phone-hu.png" width="140"> | — | <img src="b4-walk/b4-walk-10-vaultwarden-page-desktop-hu.png" width="260"> | — |
|
||||
| `b4-walk-11-immich-utmutato` | <img src="b4-walk/b4-walk-11-immich-utmutato-phone-hu.png" width="140"> | — | <img src="b4-walk/b4-walk-11-immich-utmutato-desktop-hu.png" width="260"> | — |
|
||||
| `b4-walk-11-paperless-ngx-utmutato` | <img src="b4-walk/b4-walk-11-paperless-ngx-utmutato-phone-hu.png" width="140"> | — | <img src="b4-walk/b4-walk-11-paperless-ngx-utmutato-desktop-hu.png" width="260"> | — |
|
||||
| `b4-walk-11-vaultwarden-utmutato` | <img src="b4-walk/b4-walk-11-vaultwarden-utmutato-phone-hu.png" width="140"> | — | <img src="b4-walk/b4-walk-11-vaultwarden-utmutato-desktop-hu.png" width="260"> | — |
|
||||
| `b4-walk-20-backups` | <img src="b4-walk/b4-walk-20-backups-phone-hu.png" width="140"> | — | <img src="b4-walk/b4-walk-20-backups-desktop-hu.png" width="260"> | — |
|
||||
|
||||
## b6-s13
|
||||
|
||||
| screen | phone HU | phone EN | computer HU | computer EN |
|
||||
|---|---|---|---|---|
|
||||
| `b6-s13-1-init-list` | — | — | <img src="b6-s13/b6-s13-1-init-list-desktop-hu.png" width="260"> | — |
|
||||
| `b6-s13-2-init-done` | — | — | <img src="b6-s13/b6-s13-2-init-done-desktop-hu.png" width="260"> | — |
|
||||
| `b6-s13-3-backups-offer` | — | — | <img src="b6-s13/b6-s13-3-backups-offer-desktop-hu.png" width="260"> | — |
|
||||
|
||||
## b6-s16-en
|
||||
|
||||
| screen | phone HU | phone EN | computer HU | computer EN |
|
||||
|---|---|---|---|---|
|
||||
| `b6-s16-en-00_` | — | — | — | <img src="b6-s16-en/b6-s16-en-00_-desktop-en.png" width="260"> |
|
||||
| `b6-s16-en-01_dashboard` | — | — | — | <img src="b6-s16-en/b6-s16-en-01_dashboard-desktop-en.png" width="260"> |
|
||||
| `b6-s16-en-02_apps` | — | — | — | <img src="b6-s16-en/b6-s16-en-02_apps-desktop-en.png" width="260"> |
|
||||
| `b6-s16-en-03_apps_immich` | — | — | — | <img src="b6-s16-en/b6-s16-en-03_apps_immich-desktop-en.png" width="260"> |
|
||||
| `b6-s16-en-04_apps_paperless-ngx` | — | — | — | <img src="b6-s16-en/b6-s16-en-04_apps_paperless-ngx-desktop-en.png" width="260"> |
|
||||
| `b6-s16-en-05_storage` | — | — | — | <img src="b6-s16-en/b6-s16-en-05_storage-desktop-en.png" width="260"> |
|
||||
| `b6-s16-en-06_backups` | — | — | — | <img src="b6-s16-en/b6-s16-en-06_backups-desktop-en.png" width="260"> |
|
||||
| `b6-s16-en-07_backups_apps` | — | — | — | <img src="b6-s16-en/b6-s16-en-07_backups_apps-desktop-en.png" width="260"> |
|
||||
| `b6-s16-en-08_backups_remote` | — | — | — | <img src="b6-s16-en/b6-s16-en-08_backups_remote-desktop-en.png" width="260"> |
|
||||
| `b6-s16-en-09_backups_restore` | — | — | — | <img src="b6-s16-en/b6-s16-en-09_backups_restore-desktop-en.png" width="260"> |
|
||||
| `b6-s16-en-10_sharing` | — | — | — | <img src="b6-s16-en/b6-s16-en-10_sharing-desktop-en.png" width="260"> |
|
||||
| `b6-s16-en-11_settings_security` | — | — | — | <img src="b6-s16-en/b6-s16-en-11_settings_security-desktop-en.png" width="260"> |
|
||||
| `b6-s16-en-12_settings_notifications` | — | — | — | <img src="b6-s16-en/b6-s16-en-12_settings_notifications-desktop-en.png" width="260"> |
|
||||
| `b6-s16-en-13_monitoring` | — | — | — | <img src="b6-s16-en/b6-s16-en-13_monitoring-desktop-en.png" width="260"> |
|
||||
| `b6-s16-en-14_system` | — | — | — | <img src="b6-s16-en/b6-s16-en-14_system-desktop-en.png" width="260"> |
|
||||
|
||||
## b6-s5
|
||||
|
||||
| screen | phone HU | phone EN | computer HU | computer EN |
|
||||
|---|---|---|---|---|
|
||||
| `b6-s5-1-after-failed-run` | <img src="b6-s5/b6-s5-1-after-failed-run-phone-hu.png" width="140"> | — | — | — |
|
||||
| `b6-s5-2-overview` | <img src="b6-s5/b6-s5-2-overview-phone-hu.png" width="140"> | — | — | — |
|
||||
|
||||
## install
|
||||
|
||||
**01-boot.png**
|
||||
|
||||
|
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 193 KiB |
|
After Width: | Height: | Size: 139 KiB |
|
After Width: | Height: | Size: 187 KiB |
|
After Width: | Height: | Size: 183 KiB |
|
After Width: | Height: | Size: 218 KiB |
|
After Width: | Height: | Size: 220 KiB |
|
After Width: | Height: | Size: 80 KiB |
|
After Width: | Height: | Size: 126 KiB |
|
After Width: | Height: | Size: 189 KiB |
|
After Width: | Height: | Size: 257 KiB |
|
After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 142 KiB |
|
After Width: | Height: | Size: 109 KiB |
|
After Width: | Height: | Size: 170 KiB |
|
After Width: | Height: | Size: 136 KiB |
|
After Width: | Height: | Size: 239 KiB |
|
After Width: | Height: | Size: 608 KiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 505 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 417 KiB |
|
After Width: | Height: | Size: 967 KiB |
|
After Width: | Height: | Size: 202 KiB |
|
After Width: | Height: | Size: 454 KiB |
|
After Width: | Height: | Size: 73 KiB |
|
After Width: | Height: | Size: 111 KiB |
|
After Width: | Height: | Size: 208 KiB |
|
After Width: | Height: | Size: 75 KiB |
|
After Width: | Height: | Size: 189 KiB |
|
After Width: | Height: | Size: 6.7 KiB |
|
After Width: | Height: | Size: 93 KiB |
|
After Width: | Height: | Size: 101 KiB |
|
After Width: | Height: | Size: 166 KiB |
|
After Width: | Height: | Size: 194 KiB |
|
After Width: | Height: | Size: 137 KiB |
|
After Width: | Height: | Size: 126 KiB |
|
After Width: | Height: | Size: 207 KiB |
|
After Width: | Height: | Size: 198 KiB |
|
After Width: | Height: | Size: 109 KiB |
|
After Width: | Height: | Size: 122 KiB |
|
After Width: | Height: | Size: 312 KiB |
|
After Width: | Height: | Size: 6.7 KiB |
|
After Width: | Height: | Size: 259 KiB |
|
After Width: | Height: | Size: 456 KiB |