Hosted onhoraciohdev.dev.hyper.mediavia theHypermedia Protocol

Editor test coveragehttps://linear.app/seedhypermedia/issue/SHM-2016/editor-test-coverage

Problem

The Seed editor is a complex, interaction-heavy block editor based on Tiptap/BlockNote and with our own custom schema. Recent regressions around copy-paste, link toolbar and list interactions have shown the need for automated tests for the editor package.

Solution

This project proposes building a Playwright end-to-end test suite that can simulate realistic editing flows and verify the Prosemirror editor state between transactions. This will provide a stable foundation for preventing regressions and improving reliability in the editor. Most editor functionality is pure DOM behavior, so browser E2E tests should be sufficient, however unit tests built on Vitest to cover editor commands and util functions can also be added in the future, after the E2E foundation is implemented.

Implementation

The following editor areas should have tests coverage added to them:

    Copy-paste of content from both Seed documents and external sources

      Plain text

      Multi-line text

      HTML

      Markdown

      Lists and blockquotes

      Seed block types

    Selection changes

      Text selections

      Node selections (node level blocks such as media blocks, embeds, query blocks)

      Selections with arrow keys

      Selections with mouse

      Selection when moving between different block types

    Block Insertion, Modification and Deletion

      Inserting blocks using slash menu.

      Modifying block attributes.

      Deleting blocks using Backspace and Delete.

      Verifying document structure through ProseMirror state.

    Toolbars

      Formatting toolbar and its' functions

      Link preview/editing toolbar and its' functions

    Menus

      Slash menu

      Link menu

    Drag and drop

      Here I'm not sure if browser editor test environment is different from electron for dragging files from the file system.

An initial solution should start with

    Basic block insertion and deletion

    Copy/paste scenarios

    Selection and toolbar behavior

Rabbit holes

    Clipboard API inconsistencies

    Toolbar visibility timing on hover

    Pasting from external sources will probably be hard coded content

Do you like what you are reading? Subscribe to receive updates.

Unsubscribe anytime