FIELD NOTES · ACCEPTANCE EXERCISES

Add a room must not also send the enquiry

The commissioning decision

A renovation enquiry has buttons for adding another room and sending the completed brief. A utility button without an explicit type can behave like a submit button inside a form. Acceptance should distinguish an intermediate editing action from final submission, including keyboard activation.

Source and claim boundary

A button associated with a form can default to submit when no valid type is specified. type=button makes a utility control non-submitting by default. MDN · Checked 16 October 2026.

Filled synthetic acceptance cases

Synthetic teaching data, not client records. Review the inputs and expected outcomes before running the isolated browser exercise. On narrow screens, scroll the table.

InputCheckExpected
Button inside form, no typeResolved button.typesubmit
Add room, type=buttonLocal click, submit count0
Send, type=submitLocal click, prevented submit count1

How to verify beyond appearance

  1. List each control as editing, reset or final submission.
  2. Run the local click cases; submission is cancelled before any network action.
  3. Test the actual new component with keyboard activation and confirm only the intended action triggers the endpoint.

Interpret the result

A button’s label and styling do not define its native role. Keep a small control inventory with resolved type and observed event count. If a framework intercepts clicks, verify its real behaviour rather than assuming the HTML fix is sufficient. The fixture isolates a default that can create accidental enquiries but does not show that such an incident occurred on any client site.

What this does not prove

No real enquiry is sent. The test does not establish double-submit prevention, server idempotency or delivery status.

Runnable fixture and handover record

Open the browser acceptance fixture · Read the test source。The fixture creates temporary elements with synthetic values inside the browser. It reads no account, uploads no file, and sends no email or form. Record the browser version, check name, observed value and pass state. Keep real integration evidence separate: a local pass is not a live delivery result.