Hosted ongabo.esvia 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