FIELD NOTES · ACCEPTANCE EXERCISES

Two selected services must reach the enquiry inbox as two

The commissioning decision

An event supplier offers lighting and audio in one multi-select field. The browser sends both choices, but a handler reads only the first value. Define the enquiry contract as an ordered list or a set, including the empty case, rather than treating every form field as a single string.

Source and claim boundary

A multiple select can produce repeated name/value entries. FormData.getAll retrieves all values under a name; a single-value read does not establish complete capture. 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
lighting + audio selectedgetAll(service)[lighting, audio]
lighting + audio selectedget(service)lighting only
No selectiongetAll(service)[]; business rule decides whether allowed

How to verify beyond appearance

  1. Write an explicit allowed-service list and whether selection order matters.
  2. Compare get and getAll in the fixture with two selected options.
  3. Verify both choices in a redacted receiving record and ensure unknown codes are rejected.

Interpret the result

The example isolates a common loss point between the browser and the handler. It does not prove that a mailing integration preserves arrays. Retain the repeated entries, parsed collection and final email or CRM test record. If duplicates are removed, document that rule rather than silently changing the contract.

What this does not prove

The fixture does not book equipment, calculate a price or validate service availability. Avoid personal attendee details.

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.