Files
mmd-pdf/docs/mmd-pdf/TEST-CASES.md
T
kua-agentandClaude Opus 5 e02d219736 docs: product documentation, design working files, and the failed design review
Adds the required doc set under docs/mmd-pdf/ - PRD, feature backlog with
status and sign-off per feature, screens with wireframes, test cases with the
test data and the agent-tasking prompts, and the sign-off log.

The sign-off log records the independent design review of 2026-08-27:
DESIGN-FAIL, three blockers and five major findings, which is why every design
feature in the backlog is blocked and the logo/token branch is unmerged.

Design working files live in docs/mmd-pdf/design/ so the next agent can
regenerate and re-render them. redplate.css there is the MMD shell design
system lifted verbatim from the session that owns it - do not edit it.

Also carries the session handover.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-27 13:25:29 +02:00

6.3 KiB
Raw Blame History

MMD PDF — test cases, test data, agent tasking

The rig

Testing happens on mmd-win-test-01 — VM 203 on hypervisor mmd-fsn-03 (Falkenstein, 168.119.88.172 / tailnet 100.64.0.19), Windows Server 2022, guest 10.10.20.22. It auto-starts with the host.

A user test uses keyboard and mouse only. The rig is /opt/mmd-wintest/wintest on the hypervisor — Xvfb + xfreerdp3 + xdotool, so every input is a real pointer or key event. There is no scripting back door in that path.

wintest start | stop | status | shot <name>
wintest move <x> <y> · click [1|2|3] · dblclick · at <x> <y> [btn]
wintest drag <x1> <y1> <x2> <y2> · scroll up|down [n]
wintest type "<text>" · key <keys...>

/root/winrun.py (PowerShell over WinRM) exists for setup and for reading a result back — installing, copying a file in, extracting text from a saved PDF. It is never used to make something happen inside the application.

Gotcha: Stop-Process on a running GUI app hangs the WinRM session. Launch GUI apps with a new scheduled-task name: schtasks /create /tn X /tr "..." /ru Administrator /it /f then /run.

Test data

/root/kpdf/mkpdf.py on the hypervisor writes a one-page delivery note:

MMD STEEL GROUP - DELIVERY NOTE
Supplier: Fabrimetal SARL
Reference: BON-2026-0847
Quantity delivered: 12 tonnes
Received by: ____________________
Editing test: change the quantity above to 14 tonnes.

Serve it to the VM from the hypervisor (the VM reaches 10.10.20.1, and now the internet too after its DNS was fixed on 2026-08-27): cd /root/kpdf && python3 -m http.server 8899 --bind 10.10.20.1


TC-01 · Open and read a PDF — PDF-01

Input Launch MmdPdf.exe with C:\src\clean-note.pdf as its argument. Expected Window opens; the page renders; the status bar reads 1 OF 1; the title bar carries the file name.

TC-02 · Change text already on the page — PDF-02

Input Double-click the words "Quantity delivered: 12 tonnes". Press End, nine × BackSpace, type 19 tonnes, press Enter. Expected The line reads "Quantity delivered: 19 tonnes" on screen.

TC-03 · The old text is removed, not covered — PDF-03 · the one that matters

Input After TC-02, click Save, answer Replace. Then read the file back: pdftotext delivery-note.pdf - Expected The extracted text contains 19 tonnes and does not contain 12 tonnes. Every other line is unchanged and still extractable. Falsification Before the fix this returned both figures. If 12 tonnes appears, the fix has regressed and the tool must not be used to correct figures.

TC-04 · Save asks before it overwrites — PDF-04

Input Edit anything, click Save. Expected A dialog naming the file. Nothing is written to disk until it is answered. Cancel leaves the file byte-identical.

TC-05 · No admin rights, portable — PDF-05

Input Copy the single .exe to a folder in a standard user's profile and run it. Expected It runs. No elevation prompt. Nothing is written to Program Files.

TC-06 · Leaves the Windows default-PDF setting alone — PDF-06 · security

Input Read HKCU:\...\FileExts\.pdf\UserChoice (ProgId, Hash) and the key's ACL. Install, launch, open a PDF. Read them again. Expected ProgId, Hash and the deny ACE are identical. No helper binary appears beside the executable. Falsification PDFgear forged this hash and stripped the deny ACE. If either changes, the tool is blocked, as PDFgear was. Read-only — this test only reads the registry.

TC-07 · MMD name, icon and word-mark — PDF-07

Input Look at the title bar, the taskbar icon, the About box, and Explorer's icon for the file type. Expected MMD PDF everywhere; the official lockup in the title bar; no trace of the upstream product name or author. Icon legible at 32px and above.

TC-08 · MMD design system, light only — PDF-08 · blocked

Input Open Settings; look for a theme or accent picker. Sample the chrome, rail, page-field and ink colours. Expected No picker exists. Values match Themes/MMD.xaml. No dark surface anywhere. Windows title bar stays light. Blocked until the design passes review and Ben signs it.

TC-09 · Works at 800×600 — PDF-09 · blocked

Input Set the VM to 800×600. Open a document. Reach every tool. Expected No horizontal scrollbar on the chrome. Every tool reachable. Every label a person must read is at least 9px. The page is visible without scrolling its own width. Blocked on the toolbar direction (A/B/C).

TC-10 … TC-18 — not written

Forms, mark-up, page work, text recognition, scanning, French, print, signing and Intune are in the backlog. Write the case when the feature is picked up; do not pre-write cases for work nobody is doing.


Agent tasking

To run a user test (TC-01 … TC-09):

You are testing MMD PDF on mmd-win-test-01. Reach the hypervisor with ssh -i ~/.ssh/id_ed25519_mmd_fsn03_rescue root@100.64.0.19. Start the rig with wintest start. Every action inside the application must be a real keyboard or mouse event through wintest — never PowerShell, never a registry write, never a command-line argument to make something happen. /root/winrun.py is allowed only to put a file on the VM, launch the app, and read a result back. Run exactly as written. Screenshot before and after every step with wintest shot, decode each PNG and look at it. Report each step as it happened, including anything that did not work. If you cannot perform a step, say blocked and name the exact interaction — do not substitute a different route to the same end.

To review a design (any UI change):

You are an independent design reviewer. You did not build this. Your default verdict is DESIGN-FAIL; only evidence moves you off it. Read the screenshots as images. Judge against: 800×600, light only, the fixed palette, red only for one primary action / focus / urgency, square corners, the type scale, a 9px floor on any text a person must read, no icon-only buttons except the window controls, dense but not cramped, and whether a plant clerk who is not a computer person could use it. Output a verdict line then numbered findings, each with severity, the screen, the specific element, and the concrete fix. DESIGN-PASS only with zero blockers and zero majors.