# Multiline, rich text, contenteditable

**Test family:** `MUL`

This file is self-contained. Adapt lengths and accepted characters from the full product path, not only the HTML attributes.

- **MUL-001** Preserve intentional paragraphs, blank lines, lists, indentation, and line endings.
- **MUL-002** Test a single very long line and many short lines at equivalent total size.
- **MUL-003** Paste plain text, rich HTML, tables, links, and images; sanitize without corrupting permitted content.
- **MUL-004** Keyboard shortcuts, selection, composition, undo history, and screen-reader editing remain usable.
- **MUL-005** Preview, saved rendering, email/export, and reopened editor agree.
- **MUL-006** Autosave handles rapid edits, offline changes, stale versions, retry, and explicit save without reordering text.
- **MUL-007** Character/word count uses the stated unit and updates correctly through paste/undo/composition.
- **MUL-008** Mentions, links, and embedded content do not grant access to unauthorized viewers.

## Comprehensive per-item coverage

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

[Back to Input controls index](../../controls-input.md)
