Use the button in the dropdown or paste the URL directly in the editor,
Insert the media,
Check if media was inserted and is selected.
Update the media
Put an URL in the clipboard,
Select some media,
Use the button in the dropdown,
Update the URL,
Check if media was updated and remains selected.
Data output
Call editor.getData(),
All the media should be represented without previews, using only the
<oembed> tag.
URL validation
Invalid
In the previous scenarios try using a non–media URL,
The error should be displayed next to the URL field,
Nothing should be inserted/updated.
Empty
In the previous scenarios try using an empty URL,
The error should be displayed next to the URL field,
Nothing should be inserted/updated.
Copy&Paste
Play with media copy&paste.
It should work just like images or any other widget.
Open media in new tab
Locate any generic media in the content,
Hover the URL in the content (the tooltip should show up),
Click the URL,
A new browser tab should open with the media URL.
Resize handles (semantic mode)
Click on a video embed (YouTube, Vimeo),
Four resize handles should appear at the corners of the media wrapper,
Drag a corner handle to resize — a size label should appear during the drag,
The resized media should stay centered,
Both left and right handles should resize symmetrically,
Release the handle — the new width should persist (check editor.getData()),
The data output <figure> should include
style="width: …" and class media_resized,
The inner element should remain <oembed> (not a preview div),
Undo (Ctrl+Z) should restore the original size.
Resize minimum width (semantic mode)
Drag a resize handle to shrink the embed as far as possible,
The embed should floor at the base .media { min-width: 15em } (~240px).
Handles should remain reachable at that floor.
Spotify default size and min-width (semantic mode)
A freshly inserted (or pre-existing, never-resized) Spotify embed should render at its
default 300px width (height ~378px from the 100/126 aspect ratio),
The figure has min-width: 300px so the resize handles cannot drag it below
the default width (Spotify's player breaks layout below ~280px).
Resize upcast (semantic mode)
The "Pre-resized media (50%)" section should load at 50% width, centered.
Resize for generic media, no preview (semantic mode)
Click a generic media (Twitter, Flickr, Instagram, etc.),
Resize handles should appear around the placeholder,
Dragging should change the figure width,
The placeholder should scale within the resized figure.
Resize + URL change (semantic mode)
Resize a media embed to ~50%,
Change the media URL (select it, click the media embed button, enter a new URL),
The new media should retain the 50% width.
Aspect ratio in the editing view (semantic mode)
Inspect a YouTube or Vimeo iframe in the DOM,
The iframe should be wrapped in a plain <div> (no
padding-bottom or position styles on the wrapper),
The iframe's inline CSS should include aspect-ratio: 16 / 9 and
height: auto,
Resizing the embed should preserve the 16:9 proportion.
Alignment classes survive in semantic data output
Insert a media embed and apply each alignment in turn (use the
Wrap text and Break text dropdowns),
Call editor.getData() after each application,
Output <figure> should include the matching class for
alignLeft/alignBlockLeft/alignBlockRight/alignRight:
media-style-align-left (float)
media-style-block-align-left (block)
media-style-block-align-right (block)
media-style-align-right (float)
For alignCenter (default), the output <figure> should be
class="media" only — no alignment class.
The inner element should remain <oembed url="…"> — alignment changes
the figure class, not the inner element.
Resize + alignment in semantic mode
Resize a media to ~50% then apply alignLeft from the
Wrap text dropdown,
Output <figure> should include both media_resized (with
style="width: 50%") and media-style-align-left,