← All Reports

Forms Web Renderer — ENG-5373 / 5282 / 5278 / 5279 / 5372

Multi-line text entry widget · compact radio/check styling · dropdown, spinbox & PIN-gated access bug fixes

📅 2026-06-19 🌐 form.dev / our.forms.dev.sense.engineering (DEV) 🤖 Claude Opus 4.8 + playwright-cli + GraphQL 👤 Paul Wagner
PARTIAL
Overall result
43 / 44
TC steps passed
3 / 3
Bug fixes verified
1
Failure (Low — autofocus)
0
Blocking bugs

📝 Verdict — PARTIAL

ENG-5373 (new multi-line text entry widget): now renders a real <textarea maxlength="1023"> on web (no longer the “unsupported widget” fallback). 27 of 28 TC steps pass — line-breaks preserved on submit, 1023-char cap enforced, auto-fit vs fixed height both correct, all four states submit the right State, read-only is disabled/greyed. One Low-severity FAIL: autofocus='True' is not honored.

ENG-5282 (compact radio/check): 16/16 PASS — label 16px, padding 15px, gap 15px, #F2F3F4 pill, 1px #DCE2EA ring, pill radius 10px, checkbox radius 5px, blue selected label, single-select radio / multi-select checklist (verified against authored CSS).

ENG-5278 (dropdown not clickable) and ENG-5279 (spinbox misaligned): both verified FIXED.

ENG-5372 (PIN-gated share access error): verified FIXED — the correct PIN grants access and renders the form, and the link still works for re-open and retry. The "access error" now appears only on a wrong PIN (a correct deny), though that wording ("You don't have access") is misleading for a mistyped PIN.

Method note: sessions created on dev by driving the OrgApp GraphQL (sessionStart + anonymous sessionShareIssue) same-origin from the authenticated browser, opened in the ViewerApp. Styling verified via authored CSS rules + getComputedStyle (shadow-DOM-piercing); submissions via session.stage.submittedValues. The local forms-develop source snapshot is behind dev (lacks both features) — everything was judged on the live site. Display DPR = 1.25 (a 1px border reads as 0.8px computed).

ENG-5373 — Multi-line Text Entry Widget

The <multiline-text-entry> widget now has a web renderer: a real <textarea class="field-input field-input-multiline" maxlength="1023"> — not the unsupported-widget fallback.

TC1 — Renders in the web renderer  9 PASS / 1 FAIL

#CheckResultEvidence
1Renders as interactive editorPASSLabel "Comments" + textbox + caption render
2Multi-line control (not unsupported)PASS<textarea class="field-input-multiline" maxlength="1023">
3Label above editorPASS"Comments" above the textbox
4Caption below editorPASS.hint "Maximum 1023 characters" below
5Empty caption → none shownPASScaption='' → no caption element
6Placeholder in empty editorPASSplaceholder="Enter your comments here...", value empty
7Pre-filled value, editablePASSvalue="The pump tripped at 14:32.", readOnly:false
8Autofocus on loadFAILautofocus='True' not honored — editor not focused (document focused; no autofocus attr)
9Auto-fit (height='0') expandsPASSHeight grew 65px → 154px after 5 lines
10Fixed height='200'PASS200px at load; stayed 200px after 10 lines (scrolls, scrollHeight 266)

TC2 — Capture & submission  9 / 9 PASS

#CheckResultEvidence
1Loads empty editor + SubmitPASSEmpty textarea + "Submit" button
2–4Type lines; Enter inserts newline (not submit)PASS3 lines: "First line of the comment\nSecond line\nThird line"; form not submitted
5–6Submit → line breaks preservedPASSsubmittedValues Comments Value retains \n breaks
71023 chars submitted in fullPASSSubmitted Value length = 1023
8Attempt >1023 (1100) cappedPASSEditor accepted exactly 1023 of 1100 (maxlength)
9Pre-filled, submit without editingPASSSubmitted Value = "Pre-filled note"

TC3 — State variants  9 / 9 PASS

StateRender / behaviourSubmitted StateResult
DEFAULTEnabled, accepts input"DEFAULT" (Value "Default text")PASS
READ_ONLYShows "Locked note", disabled + greyed; rejects typing"READ_ONLY" (Value "Locked note")PASS
WARNINGRenders, editor enabled"WARNING" (Value "Warning text")PASS
ERRORRenders, editor enabled"ERROR" (Value "Error text")PASS

Observation (non-blocking): Warning/Error render & stay editable as required, but apply no distinct warning/error border styling on web (stays #DCE2EA).

ENG-5282 — Compact Radio & Checklist Styling

Verified against authored CSS + computed styles. The "0.8px" computed border is a 1px authored border snapped at 1.25× DPR — intended value is 1px.

TC1 — Radio  8 / 8 PASS  ·  TC2 — Checklist  8 / 8 PASS

PropertySpecRadioChecklist
Option label font-size16px16px16px
Pill padding15px15px15px
Control↔label gap15px15px15px
Pill background#F2F3F4rgb(242,243,244)rgb(242,243,244)
Control border1px #DCE2EA1px rgb(220,226,234)1px rgb(220,226,234)
Pill radius / control size10px / 25px10px / 25px10px / 25px
Checkbox radius5px5px
Selected label colourblue#3c7eff#3c7eff
Selection modelsingle / multisingle (2nd deselects 1st)multi (both stay)

ENG-5278 — Dropdown not clickable (bug)  FIXED

CheckResultEvidence
Dropdown opens on clickPASSOption list (1–5) renders, all cursor:pointer
Option is selectablePASSClicking "3" closed list, trigger → "3 ▼"
Selection can be changedPASSRe-opened, clicked "5", trigger → "5 ▼"

ENG-5279 — Numeric spinbox misaligned (bug)  FIXED

The [ − value + ] stepper’s three elements are now identical height and aligned (wrapper uses align-items: stretch):

Elementtopbottomheight
Minus button48553550px
Value input48553550px
Plus button48553550px

ENG-5372 — PIN-gated share access error (bug)  FIXED

Reported: clicking a share link from email/Teams showed an access error; after entering the PIN the same access error appeared and the link then stopped working. Verified with PIN-gated shares (PIN 1234) across three fresh tokens.

#ScenarioResultEvidence
1Open link directly (paste)PASSLands on /challenge/pin "This session is restricted" — no access error
2Open link with Teams Referer (simulated click)PASSAlso lands on the PIN prompt, no access error
3Correct PIN → ContinuePASSForm renders ("the PIN gate granted access"); verified on two shares
4Reload / re-open after successPASSForm renders again (reporter's "pasting no longer works" does not reproduce)
5Wrong PIN (0000)PASS (deny)"You don't have access" — access correctly refused, form not shown
6Re-paste after a failed PINPASSReturns to the PIN prompt — link not broken, retry works
7Correct PIN after a prior failurePASSForm renders — full recovery

Observation (non-blocking): the wrong-PIN screen reads "Access denied / You don't have access / This link cannot be opened from here", which sounds like a permissions failure rather than "incorrect PIN". This is likely what the original reporter saw on a failed PIN. Suggest a clearer wrong-PIN message.

The one failure

🟡 Low — ENG-5373 TC1 step 8: autofocus='True' not honored

With the form's only widget set to autofocus='True', the editor does not receive focus on load. Confirmed with the window focused (document.hasFocus()===true): the active element is BODY, and the rendered <textarea> has no autofocus attribute (property false). Expected: editor focused on load. Severity Low (UX convenience; does not block the workflow).