# Select, combobox, autocomplete, multi-select

**Test family:** `SEL`

- **SEL-001** Open by pointer and keyboard; Escape closes; focus and prior selection behave conventionally.
- **SEL-002** Initial placeholder is not submitted as a value; required/optional semantics are clear.
- **SEL-003** Select first/last/middle, disabled, grouped, duplicate-label, long-label, and no-option cases.
- **SEL-004** Typeahead matches intended prefix/fuzzy rules across case, accents, and non-Latin text.
- **SEL-005** Async suggestions show loading/no-results/error/retry and ignore stale responses.
- **SEL-006** Freeform values are accepted only when promised and validated independently from suggestions.
- **SEL-007** Multi-select add/remove/reorder, duplicate prevention, max selection, select-all, and clear work with keyboard and touch.
- **SEL-008** Large option sets virtualize without skipped keyboard options, wrong aria position, or stale selection.
- **SEL-009** Changing an upstream dependent select clears or revalidates incompatible downstream values without silent data loss.
- **SEL-010** Unknown/deleted selected values remain explainable on edit and export.

## Comprehensive per-item coverage

- **SEL-011** Enter ordinary lowercase, uppercase, mixed-case, numeric, and alphanumeric values; apply the documented character policy consistently.
- **SEL-012** Enter ASCII emoticons such as `:)`, `:-)`, `;)`, `:D`, `:(`, and `<3`; accept or reject each deliberately without corruption, partial stripping, or a server error.
- **SEL-013** Enter kaomoji and symbol-heavy emoticons such as `¯\_(ツ)_/¯`, `(╯°□°)╯︵ ┻━┻`, and `ಠ_ಠ`; preserve or reject the whole value predictably.
- **SEL-014** Enter a single emoji, repeated emoji, skin-tone modifier, variation selector, keycap, flag, and ZWJ family/profession sequence; count and validate complete grapheme clusters.
- **SEL-015** Mix letters, digits, punctuation, emoticons, and emoji in one value; never normalize it into a different accepted identity or meaning.
- **SEL-016** Try ASCII control characters, tab, newline, carriage return, null, non-breaking space, word joiner, and zero-width characters through UI and direct requests.
- **SEL-017** Try Latin accents, decomposed accents, CJK, Arabic, Hebrew, Devanagari, and mixed-script text; preserve supported scripts and explain unsupported ones.
- **SEL-018** Try left-to-right, right-to-left, and bidi-override/isolate characters; keep value, cursor, error, surrounding label, logs, and exports unambiguous.
- **SEL-019** Compare visually confusable values using Latin, Cyrillic, Greek, digits, homoglyph punctuation, and normalization equivalents; prevent unintended duplicates or spoofing.
- **SEL-020** Exercise exact lower and upper boundaries using ASCII, two-byte characters, four-byte emoji, and multi-code-point graphemes; enforce the declared counting unit everywhere.
- **SEL-021** Send the same value through form encoding, JSON, multipart, URL query/path, API, import, and mobile/native clients where applicable; decode exactly once.
- **SEL-022** Use inert SQL, markup, script, template, command, path, CSV-formula, and log-forging canaries; keep them data in validation, storage, display, notifications, analytics, and export.
- **SEL-023** Type slowly and rapidly, paste plain/rich text, drag text, use autofill, dictate, compose with an IME, undo/redo, and replace a selection; converge on the same value.
- **SEL-024** Bypass `maxlength`, `pattern`, `required`, input type, disabled, and client validation; require the authoritative server contract and a useful error.
- **SEL-025** Save, reload, navigate back/forward, reopen, search, sort, mention, notify, audit, sync, import, and export the value; preserve intended content and policy.
- **SEL-026** Edit the same value concurrently from two sessions and retry after timeout; detect conflicts and avoid duplicate side effects or silent overwrites.
- **SEL-027** Exercise offline, validation timeout, save failure, partial response, reconnect, and session expiry; retain recoverable input and never claim false success.
- **SEL-028** Verify label, instructions, required state, error, suggestions, character count, focus, and current value with keyboard, switch, voice, and screen-reader use.
- **SEL-029** Test narrow viewport, zoom/reflow, large fonts, high contrast, reduced motion, translated copy, locale-specific input, and mobile keyboards without hiding or altering the value.
- **SEL-030** Measure validation and save behavior near maximum size and during rapid input; avoid UI freezes, request storms, timing leaks, and unbounded downstream work.
- **SEL-031** Inspect DOM, URL, clipboard, browser storage, telemetry, logs, traces, crash reports, notifications, and screenshots; expose the value only according to its data classification.
- **SEL-032** Delete, clear, reset, cancel, and restore the value; distinguish intentional removal from lost input and honor retention, audit, and recovery policy.

[Back to Choice, action, and navigation controls index](../../controls-choice-action.md)
