Scenarios

A scenario groups multiple cases that describe the same phenomenon across different operating systems, devices, browsers, or keyboard setups.

81 scenarios 95 total cases

IME & Composition

scenario-composition-events

1 variant macOS Safari

Composition events are not fired consistently for all IMEs

Open scenario →

scenario-ime-backspace-granularity

2 variants Windows macOS Chrome

Backspace removes a whole composed syllable instead of a single jamo

Open scenario →

scenario-ime-enter-breaks

2 variants Windows Chrome Firefox

Composition is cancelled when pressing Enter inside contenteditable

Open scenario →

scenario-ime-ui-positioning

1 variant macOS Chrome

IME candidate window appears in wrong position

Open scenario →

scenario-space-during-composition

1 variant Windows Edge

Space key during composition is ignored or committed inconsistently

Open scenario →

scenario-undo-with-composition

1 variant Windows Chrome

Undo during IME composition clears more text than expected

Open scenario →

IME & Composition

scenario-baseline

1 variant Any Chrome

Baseline typing and composition in a simple contenteditable region

Open scenario →

Formatting

scenario-execCommand-alternatives

1 variant Any Chrome

execCommand is deprecated but still widely used for formatting

Open scenario →

scenario-formatting-persistence

4 variants macOS Windows Linux Safari Chrome

Bold formatting is lost when typing after applying bold

Open scenario →

scenario-insertHTML-behavior

1 variant Windows Chrome

insertHTML breaks DOM structure and formatting

Open scenario →

scenario-paste-formatting-loss

3 variants Windows macOS Chrome Safari

Pasting rich text into contenteditable strips markup unexpectedly

Open scenario →

scenario-paste-plain-text

1 variant macOS Safari

Pasting rich text inserts unwanted formatting

Open scenario →

Paste & Copy

scenario-caret-position-after-paste

1 variant Windows Firefox

Caret position jumps unexpectedly after pasting content

Open scenario →

scenario-clipboard-api

2 variants macOS Windows Chrome Firefox

Clipboard API paste does not work in contenteditable

Open scenario →

scenario-paste-event-handling

1 variant Windows Chrome

preventDefault on paste event does not prevent default paste behavior

Open scenario →

scenario-paste-media-handling

1 variant macOS Chrome

Pasting images into contenteditable is not supported consistently

Open scenario →

Selection

scenario-copy-selection-behavior

1 variant macOS Safari

Selection is lost after copying content in contenteditable

Open scenario →

scenario-css-contain

1 variant Windows Chrome

CSS contain property may affect contenteditable selection

Open scenario →

scenario-css-transform

1 variant Windows Edge

CSS transform may cause selection handles to appear in wrong position

Open scenario →

scenario-drag-drop-behavior

1 variant macOS Chrome

Drag and drop of text within contenteditable does not work as expected

Open scenario →

scenario-mobile-touch-behavior

4 variants iOS Android Safari Chrome

Touch events interfere with contenteditable focus on mobile

Open scenario →

scenario-nested-contenteditable

1 variant Any Chrome

Nested contenteditable elements cause focus and selection issues

Open scenario →

scenario-selection-api-behavior

1 variant macOS Safari

window.getSelection() returns null when contenteditable loses focus

Open scenario →

scenario-selection-collapse-on-blur

1 variant macOS Safari

Selection collapses unexpectedly when clicking outside contenteditable

Open scenario →

scenario-selection-range-accuracy

1 variant Windows Edge

Selection range is incorrect when selecting across multiple elements

Open scenario →

scenario-touch-selection-mobile

1 variant iOS Safari

Touch selection handles are difficult to use on mobile devices

Open scenario →

scenario-virtual-scrolling

1 variant macOS Chrome

Virtual scrolling libraries interfere with contenteditable selection

Open scenario →

Caret & Navigation

scenario-caret-movement-granularity

1 variant Windows Chrome

Arrow keys move by word instead of character when modifier is not pressed

Open scenario →

scenario-caret-movement-with-emoji

2 variants macOS Windows Chrome Edge

Arrow keys skip over emoji in contenteditable

Open scenario →

Mobile & Touch

scenario-autocapitalize-behavior

1 variant iOS Safari

autocapitalize attribute works inconsistently on contenteditable

Open scenario →

scenario-autocorrect-behavior

1 variant iOS Safari

autocorrect attribute behavior differs on contenteditable

Open scenario →

scenario-css-backdrop-filter

1 variant iOS Safari

CSS backdrop-filter may cause rendering issues in contenteditable

Open scenario →

scenario-enterkeyhint-behavior

1 variant Android Chrome

enterkeyhint attribute does not work on contenteditable

Open scenario →

scenario-entermode-behavior

1 variant iOS Safari

enterkeyhint and inputmode affect Enter key behavior inconsistently

Open scenario →

scenario-inputmode-behavior

1 variant iOS Safari

inputmode attribute does not affect virtual keyboard on mobile

Open scenario →

scenario-media-query-layout

1 variant iOS Safari

Media query layout changes may disrupt contenteditable editing

Open scenario →

scenario-mobile-keyboard-scroll

1 variant iOS Safari

Virtual keyboard on mobile scrolls contenteditable out of view

Open scenario →

Accessibility

scenario-accessibility-announcements

1 variant macOS Safari

Screen readers do not announce changes in contenteditable regions

Open scenario →

scenario-accessibility-aria

1 variant macOS Safari

ARIA attributes on contenteditable are not properly announced

Open scenario →

Performance

scenario-css-filter

1 variant macOS Chrome

CSS filter may affect contenteditable performance

Open scenario →

scenario-css-will-change

1 variant macOS Chrome

CSS will-change may improve or degrade contenteditable performance

Open scenario →

scenario-mutation-observer-interference

1 variant macOS Safari

MutationObserver may interfere with contenteditable editing

Open scenario →

scenario-performance-large-content

1 variant Any Chrome

Typing becomes slow with large contenteditable content

Open scenario →

scenario-resize-observer-interference

1 variant Windows Chrome

ResizeObserver may cause layout shifts during contenteditable editing

Open scenario →

Focus & Blur

scenario-autofocus-behavior

1 variant Windows Chrome

autofocus attribute does not work on contenteditable

Open scenario →

scenario-focus-management

1 variant Windows Firefox

Focus is lost when clicking on certain elements within contenteditable

Open scenario →

scenario-fullscreen-api

1 variant Windows Chrome

Fullscreen API may affect contenteditable focus and selection

Open scenario →

scenario-page-visibility-api

1 variant macOS Safari

Page Visibility API may affect contenteditable during tab switches

Open scenario →

scenario-placeholder-behavior

1 variant macOS Safari

Placeholder text disappears when contenteditable receives focus

Open scenario →

scenario-tabindex-behavior

1 variant Windows Edge

tabindex attribute does not control focus order correctly

Open scenario →

Other

scenario-autocomplete-behavior

1 variant macOS Chrome

Autocomplete suggestions do not appear for contenteditable

Open scenario →

scenario-backspace-granularity

1 variant macOS Safari

Backspace deletes whole words instead of single characters

Open scenario →

scenario-beforeinput-support

1 variant macOS Safari

beforeinput event is not supported in Safari

Open scenario →

scenario-contenteditable-iframe

1 variant Windows Edge

contenteditable behavior differs when inside an iframe

Open scenario →

scenario-contenteditable-inheritance

1 variant Windows Firefox

contenteditable inheritance behavior is inconsistent

Open scenario →

scenario-contenteditable-readonly

1 variant Any Chrome

contenteditable="false" on child elements is not respected consistently

Open scenario →

scenario-contenteditable-shadow-dom

1 variant macOS Chrome

contenteditable does not work correctly inside Shadow DOM

Open scenario →

scenario-contenteditable-table

1 variant Windows Firefox

contenteditable in table cells causes layout issues

Open scenario →

scenario-cors-restrictions

1 variant macOS Safari

CORS restrictions may affect contenteditable in cross-origin iframes

Open scenario →

scenario-csp-restrictions

1 variant Windows Chrome

Content Security Policy may restrict contenteditable behavior

Open scenario →

scenario-css-isolation

1 variant macOS Safari

CSS isolation property may affect contenteditable stacking context

Open scenario →

scenario-css-mix-blend-mode

1 variant Windows Firefox

CSS mix-blend-mode may affect contenteditable text rendering

Open scenario →

scenario-delete-key-behavior

1 variant Linux Firefox

Delete key behavior is inconsistent with Backspace

Open scenario →

scenario-disabled-attribute

1 variant macOS Safari

disabled attribute does not disable contenteditable

Open scenario →

scenario-double-line-break

2 variants macOS Safari Chrome

Pressing Enter inserts two line breaks in contenteditable

Open scenario →

scenario-drag-drop-api

1 variant macOS Chrome

Drag and Drop API behavior differs in contenteditable

Open scenario →

scenario-file-api

1 variant macOS Safari

File API drag and drop does not work in contenteditable

Open scenario →

scenario-form-integration

1 variant Windows Chrome

contenteditable content is not included in form submission

Open scenario →

scenario-input-event-duplication

1 variant Windows Edge

Input events fire multiple times for single keystroke

Open scenario →

scenario-intersection-observer-interference

1 variant macOS Safari

IntersectionObserver may affect contenteditable visibility detection

Open scenario →

scenario-language-attribute

1 variant macOS Safari

lang attribute does not affect spellcheck language

Open scenario →

scenario-maxlength-behavior

1 variant Windows Chrome

maxlength attribute is not supported on contenteditable

Open scenario →

scenario-pattern-validation

1 variant Windows Firefox

pattern attribute does not validate contenteditable content

Open scenario →

scenario-readonly-attribute

1 variant Linux Firefox

readonly attribute does not prevent editing in contenteditable

Open scenario →

scenario-required-validation

1 variant macOS Chrome

required attribute is not supported for validation

Open scenario →

scenario-spellcheck-behavior

1 variant macOS Safari

Spellcheck interferes with contenteditable editing

Open scenario →

scenario-spellcheck-interference

1 variant macOS Safari

Spellcheck suggestions interfere with contenteditable editing

Open scenario →

scenario-text-direction

1 variant Windows Firefox

Text direction (dir attribute) changes are not applied during editing

Open scenario →

scenario-undo-redo-behavior

2 variants Windows macOS Edge Safari

Undo and redo behavior is inconsistent across browsers

Open scenario →

scenario-web-components-integration

1 variant Windows Chrome

contenteditable behavior differs inside Web Components

Open scenario →

scenario-xss-protection

1 variant Windows Edge

XSS protection may interfere with contenteditable HTML insertion

Open scenario →