37 lines
2.4 KiB
Markdown
37 lines
2.4 KiB
Markdown
# 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/`).
|