Skip to content

Add RTC y-websocket-server tests#78179

Merged
alecgeatches merged 14 commits into
trunkfrom
add/rtc-y-websocket-tests
May 11, 2026
Merged

Add RTC y-websocket-server tests#78179
alecgeatches merged 14 commits into
trunkfrom
add/rtc-y-websocket-tests

Conversation

@alecgeatches

Copy link
Copy Markdown
Contributor

What?

Based on @danluu's changes in #77920, but with the official @y/websocket-server as a backend.

Replaces that PR's hand-rolled JSON server and client with a minimal harness on top of @y/websocket-server (the official Yjs WebSocket broker) and y-websocket (the matching client). The test surface, fixtures, and spec files are unchanged.

Note that #77920 added a new failing test collaboration-same-user-title-reload-loss.spec.ts that appears to be unrelated to the PR. I've removed that test from this PR, but it should be added in an appropriate PR related to that bug.

Why?

The previous test harness invented a JSON envelope that base64-wrapped Yjs updateV2 payloads and replayed the entire update log to every joiner. It works as a transport, but it bypassed some built-in transport features: sync step negotiation, binary frames, y-protocols awareness, and some other minor differences. A fuzzer running against that harness can find bugs in the editor's sync.providers integration but will miss any differences in the WebSocket broker. vip-real-time-collaboration (a Gutenberg RTC deployment) uses the official protocol, and likely other implementations will use the official Yjs server, so let's test against that one.

How?

Replace the custom server implementation with a shim around @y/websocket-server.

Also replaces #77920's test mirroring config, e.g.:

In test/e2e/specs/editor/collaboration/websocket/collaboration-presence.spec.ts:

import '../collaboration-presence.spec';

with configuration to run the same set of e2e tests from the websocket/ folder so we don't risk missing future e2e test additions.

Testing Instructions

  1. npm install
  2. Make sure wp-env is running: npm run wp-env start
  3. Run the WS suite: npm run test:e2e:rtc-websocket

Note that #77920 and this PR show different results. collaboration-same-user-title-reload-loss.spec.ts was added in #77920, but appears unrelated, and has been removed in this version of the PR. Here's the difference in results between the two branches:

In #77920 (hand-rolled sync server):

$ npm run test:e2e:rtc-websocket

  ✓   1 …aboration-awareness-cursor-position.spec.ts:7:6 › Collaboration - Awareness Cursor Position › awareness cursor tracks all positions through a bolded word without sticking at formatting boundaries (4.3s)
  ✓   2 [chromium] › specs/editor/collaboration/collaboration-block-gauntlet.spec.ts:24:6 › Collaboration - Block Gauntlet › Text blocks sync modifications between users (4.3s)
  ✓   3 [chromium] › specs/editor/collaboration/collaboration-block-gauntlet.spec.ts:224:6 › Collaboration - Block Gauntlet › Container blocks sync modifications between users (4.8s)
  ✓   4 [chromium] › specs/editor/collaboration/collaboration-block-gauntlet.spec.ts:576:6 › Collaboration - Block Gauntlet › Media, embed, and utility blocks sync modifications between users (4.2s)
  ✓   5 [chromium] › specs/editor/collaboration/collaboration-block-gauntlet.spec.ts:860:6 › Collaboration - Block Gauntlet › Widget and dynamic blocks sync modifications between users (4.1s)
  ✓   6 …› specs/editor/collaboration/collaboration-code-editor-performance.spec.ts:49:2 › Collaboration - Code editor performance › should not freeze when replacing content with large HTML in code editor (1.4s)
  ✓   7 …ecs/editor/collaboration/collaboration-cursor-stability.spec.ts:7:6 › Collaboration - Cursor Stability › cursor position is preserved when a collaborator applies bold formatting before the cursor (2.8s)
  ✘   8 [chromium] › specs/editor/collaboration/collaboration-document-size-lock.spec.ts:10:6 › Collaboration with large documents › shows post-locked modal when document size limit is exceeded (37.4s)
  ✓   9 …ium] › specs/editor/collaboration/collaboration-metabox-lock.spec.ts:23:7 › Collaboration with meta boxes › incompatible meta boxes › shows post-locked modal when meta boxes disable collaboration (3.8s)
  ✓  10 …s/editor/collaboration/collaboration-metabox-lock.spec.ts:131:7 › Collaboration with meta boxes › RTC-compatible meta boxes › does not disable collaboration when all meta boxes are RTC-compatible (2.8s)
  ✓  11 [chromium] › specs/editor/collaboration/collaboration-multibyte.spec.ts:13:6 › Collaboration - Multi-byte character encoding › syncs emoji between two users without corruption (2.9s)
  ✓  12 [chromium] › specs/editor/collaboration/collaboration-multibyte.spec.ts:47:6 › Collaboration - Multi-byte character encoding › syncs multiple emoji between users (2.8s)
  ✓  13 [chromium] › specs/editor/collaboration/collaboration-multibyte.spec.ts:79:6 › Collaboration - Multi-byte character encoding › syncs emoji inserted by a collaborator (2.8s)
  ✓  14 [chromium] › specs/editor/collaboration/collaboration-multibyte.spec.ts:120:6 › Collaboration - Multi-byte character encoding › syncs CJK Extension B characters (rare kanji) between users (2.9s)
  ✓  15 [chromium] › specs/editor/collaboration/collaboration-multibyte.spec.ts:154:6 › Collaboration - Multi-byte character encoding › syncs mathematical symbols from supplementary plane between users (2.8s)
  ✓  16 [chromium] › specs/editor/collaboration/collaboration-notes.spec.ts:11:6 › Collaboration - Notes Sync › User A adds a note, User B sees it (3.4s)
  ✓  17 [chromium] › specs/editor/collaboration/collaboration-notes.spec.ts:75:6 › Collaboration - Notes Sync › User B adds a note, User A sees it (3.5s)
  ✓  18 [chromium] › specs/editor/collaboration/collaboration-notes.spec.ts:146:6 › Collaboration - Notes Sync › Note with reply syncs between users (3.6s)
  ✘  19 [chromium] › specs/editor/collaboration/collaboration-persistence.spec.ts:7:6 › Collaboration - CRDT persistence › persists CRDT document when loading existing post without one (1.5s)
  ✓  20 [chromium] › specs/editor/collaboration/collaboration-persistence.spec.ts:51:6 › Collaboration - CRDT persistence › does not save CRDT document for auto-draft posts (1.6s)
  ✓  21 [chromium] › specs/editor/collaboration/collaboration-persistence.spec.ts:80:6 › Collaboration - CRDT persistence › persisted CRDT document matches content after save and reload (2.2s)
  ✓  22 [chromium] › specs/editor/collaboration/collaboration-presence.spec.ts:7:6 › Collaboration - Presence › Collaborator avatars appear when two users are editing (2.7s)
  ✓  23 [chromium] › specs/editor/collaboration/collaboration-presence.spec.ts:26:6 › Collaboration - Presence › Collaborator name shows in the popover list (2.8s)
  ✓  24 [chromium] › specs/editor/collaboration/collaboration-refresh.spec.ts:28:6 › Collaboration - Refresh › User A edits are synced to User B after User A refreshes (4.4s)
  ✘  25 …itor/collaboration/websocket/collaboration-same-user-title-reload-loss.spec.ts:45:6 › Collaboration - same-user title reload loss › keeps an unsaved same-user title in a reloaded browser session (22.8s)
  ✓  26 [chromium] › specs/editor/collaboration/collaboration-selection.spec.ts:8:6 › Collaboration - Selection Rendering › Text selection is visible to other users (3.8s)
  ✓  27 [chromium] › specs/editor/collaboration/collaboration-selection.spec.ts:74:6 › Collaboration - Selection Rendering › Text selection across two blocks renders selections in both blocks (3.0s)
  ✓  28 [chromium] › specs/editor/collaboration/collaboration-selection.spec.ts:150:6 › Collaboration - Selection Rendering › Clearing a selection removes highlight rectangles (2.9s)
  ✓  29 [chromium] › specs/editor/collaboration/collaboration-self-presence.spec.ts:7:6 › Collaboration - self presence › Self user always appears in collaborators list with "You" label (2.8s)
  ✓  30 [chromium] › specs/editor/collaboration/collaboration-self-presence.spec.ts:34:6 › Collaboration - self presence › Self user remains in collaborators list when cursor preference is disabled (2.8s)
  ✓  31 [chromium] › specs/editor/collaboration/collaboration-stress.spec.ts:362:6 › Collaboration - Stress Test › three users concurrently edit a large post with diverse blocks (8.3s)
  ✘  32 [chromium] › specs/editor/collaboration/collaboration-stress.spec.ts:570:6 › Collaboration - Stress Test › two users concurrently move list items (13.3s)
  ✘  33 [chromium] › specs/editor/collaboration/collaboration-sync-error-filter.spec.ts:43:6 › Sync connection error filter › plugin can replace the default modal for connection-limit-exceeded (37.5s)
  ✓  34 [chromium] › specs/editor/collaboration/collaboration-sync.spec.ts:7:6 › Collaboration - Sync › User A adds a paragraph block, User B sees it (2.8s)
  ✓  35 [chromium] › specs/editor/collaboration/collaboration-sync.spec.ts:38:6 › Collaboration - Sync › User B adds a paragraph block, User A sees it (2.7s)
  ✓  36 [chromium] › specs/editor/collaboration/collaboration-sync.spec.ts:71:6 › Collaboration - Sync › Both users add blocks simultaneously, both changes appear (2.8s)
  ✓  37 [chromium] › specs/editor/collaboration/collaboration-sync.spec.ts:115:6 › Collaboration - Sync › Title changes sync between users (2.7s)
  ✓  38 [chromium] › specs/editor/collaboration/collaboration-undo-redo.spec.ts:70:6 › Collaboration - Undo/Redo › User A undo only affects their own changes, not User B changes (2.8s)
  ✓  39 [chromium] › specs/editor/collaboration/collaboration-undo-redo.spec.ts:148:6 › Collaboration - Undo/Redo › Redo restores the undone change (2.9s)
  ✓  40 [chromium] › specs/editor/collaboration/collaboration-undo-redo.spec.ts:196:6 › Collaboration - Undo/Redo › Undo restores the post selection when another synced entity is loaded (1.9s)

  5 failed
    [chromium] › specs/editor/collaboration/collaboration-document-size-lock.spec.ts:10:6 › Collaboration with large documents › shows post-locked modal when document size limit is exceeded 
    [chromium] › specs/editor/collaboration/collaboration-persistence.spec.ts:7:6 › Collaboration - CRDT persistence › persists CRDT document when loading existing post without one 
    [chromium] › specs/editor/collaboration/websocket/collaboration-same-user-title-reload-loss.spec.ts:45:6 › Collaboration - same-user title reload loss › keeps an unsaved same-user title in a reloaded browser session 
    [chromium] › specs/editor/collaboration/collaboration-stress.spec.ts:570:6 › Collaboration - Stress Test › two users concurrently move list items 
    [chromium] › specs/editor/collaboration/collaboration-sync-error-filter.spec.ts:43:6 › Sync connection error filter › plugin can replace the default modal for connection-limit-exceeded 
  35 passed (4.0m)

This PR:

$ npm run test:e2e:rtc-websocket

  ✓   1 …aboration-awareness-cursor-position.spec.ts:7:6 › Collaboration - Awareness Cursor Position › awareness cursor tracks all positions through a bolded word without sticking at formatting boundaries (5.0s)
  ✓   2 [chromium] › specs/editor/collaboration/collaboration-block-gauntlet.spec.ts:24:6 › Collaboration - Block Gauntlet › Text blocks sync modifications between users (4.3s)
  ✓   3 [chromium] › specs/editor/collaboration/collaboration-block-gauntlet.spec.ts:224:6 › Collaboration - Block Gauntlet › Container blocks sync modifications between users (4.7s)
  ✓   4 [chromium] › specs/editor/collaboration/collaboration-block-gauntlet.spec.ts:576:6 › Collaboration - Block Gauntlet › Media, embed, and utility blocks sync modifications between users (4.2s)
  ✓   5 [chromium] › specs/editor/collaboration/collaboration-block-gauntlet.spec.ts:860:6 › Collaboration - Block Gauntlet › Widget and dynamic blocks sync modifications between users (4.1s)
  ✓   6 …› specs/editor/collaboration/collaboration-code-editor-performance.spec.ts:49:2 › Collaboration - Code editor performance › should not freeze when replacing content with large HTML in code editor (1.4s)
  ✓   7 …ecs/editor/collaboration/collaboration-cursor-stability.spec.ts:7:6 › Collaboration - Cursor Stability › cursor position is preserved when a collaborator applies bold formatting before the cursor (2.9s)
  ✘   8 [chromium] › specs/editor/collaboration/collaboration-document-size-lock.spec.ts:10:6 › Collaboration with large documents › shows post-locked modal when document size limit is exceeded (37.5s)
  ✓   9 …ium] › specs/editor/collaboration/collaboration-metabox-lock.spec.ts:23:7 › Collaboration with meta boxes › incompatible meta boxes › shows post-locked modal when meta boxes disable collaboration (3.5s)
  ✓  10 …s/editor/collaboration/collaboration-metabox-lock.spec.ts:131:7 › Collaboration with meta boxes › RTC-compatible meta boxes › does not disable collaboration when all meta boxes are RTC-compatible (2.8s)
  ✓  11 [chromium] › specs/editor/collaboration/collaboration-multibyte.spec.ts:13:6 › Collaboration - Multi-byte character encoding › syncs emoji between two users without corruption (2.8s)
  ✓  12 [chromium] › specs/editor/collaboration/collaboration-multibyte.spec.ts:47:6 › Collaboration - Multi-byte character encoding › syncs multiple emoji between users (2.9s)
  ✓  13 [chromium] › specs/editor/collaboration/collaboration-multibyte.spec.ts:79:6 › Collaboration - Multi-byte character encoding › syncs emoji inserted by a collaborator (2.8s)
  ✓  14 [chromium] › specs/editor/collaboration/collaboration-multibyte.spec.ts:120:6 › Collaboration - Multi-byte character encoding › syncs CJK Extension B characters (rare kanji) between users (2.8s)
  ✓  15 [chromium] › specs/editor/collaboration/collaboration-multibyte.spec.ts:154:6 › Collaboration - Multi-byte character encoding › syncs mathematical symbols from supplementary plane between users (2.8s)
  ✓  16 [chromium] › specs/editor/collaboration/collaboration-notes.spec.ts:11:6 › Collaboration - Notes Sync › User A adds a note, User B sees it (3.4s)
  ✓  17 [chromium] › specs/editor/collaboration/collaboration-notes.spec.ts:75:6 › Collaboration - Notes Sync › User B adds a note, User A sees it (3.5s)
  ✓  18 [chromium] › specs/editor/collaboration/collaboration-notes.spec.ts:146:6 › Collaboration - Notes Sync › Note with reply syncs between users (3.6s)
  ✘  19 [chromium] › specs/editor/collaboration/collaboration-persistence.spec.ts:7:6 › Collaboration - CRDT persistence › persists CRDT document when loading existing post without one (1.5s)
  ✓  20 [chromium] › specs/editor/collaboration/collaboration-persistence.spec.ts:51:6 › Collaboration - CRDT persistence › does not save CRDT document for auto-draft posts (1.5s)
  ✓  21 [chromium] › specs/editor/collaboration/collaboration-persistence.spec.ts:80:6 › Collaboration - CRDT persistence › persisted CRDT document matches content after save and reload (2.2s)
  ✓  22 [chromium] › specs/editor/collaboration/collaboration-presence.spec.ts:7:6 › Collaboration - Presence › Collaborator avatars appear when two users are editing (2.8s)
  ✓  23 [chromium] › specs/editor/collaboration/collaboration-presence.spec.ts:26:6 › Collaboration - Presence › Collaborator name shows in the popover list (2.8s)
  ✓  24 [chromium] › specs/editor/collaboration/collaboration-refresh.spec.ts:28:6 › Collaboration - Refresh › User A edits are synced to User B after User A refreshes (4.2s)
  ✓  25 [chromium] › specs/editor/collaboration/collaboration-selection.spec.ts:8:6 › Collaboration - Selection Rendering › Text selection is visible to other users (2.9s)
  ✓  26 [chromium] › specs/editor/collaboration/collaboration-selection.spec.ts:74:6 › Collaboration - Selection Rendering › Text selection across two blocks renders selections in both blocks (3.0s)
  ✓  27 [chromium] › specs/editor/collaboration/collaboration-selection.spec.ts:150:6 › Collaboration - Selection Rendering › Clearing a selection removes highlight rectangles (3.1s)
  ✓  28 [chromium] › specs/editor/collaboration/collaboration-self-presence.spec.ts:7:6 › Collaboration - self presence › Self user always appears in collaborators list with "You" label (2.8s)
  ✓  29 [chromium] › specs/editor/collaboration/collaboration-self-presence.spec.ts:34:6 › Collaboration - self presence › Self user remains in collaborators list when cursor preference is disabled (2.8s)
  ✘  30 [chromium] › specs/editor/collaboration/collaboration-stress.spec.ts:362:6 › Collaboration - Stress Test › three users concurrently edit a large post with diverse blocks (15.3s)
  ✘  31 [chromium] › specs/editor/collaboration/collaboration-stress.spec.ts:570:6 › Collaboration - Stress Test › two users concurrently move list items (13.5s)
  ✘  32 [chromium] › specs/editor/collaboration/collaboration-sync-error-filter.spec.ts:43:6 › Sync connection error filter › plugin can replace the default modal for connection-limit-exceeded (37.3s)
  ✓  33 [chromium] › specs/editor/collaboration/collaboration-sync.spec.ts:7:6 › Collaboration - Sync › User A adds a paragraph block, User B sees it (3.3s)
  ✓  34 [chromium] › specs/editor/collaboration/collaboration-sync.spec.ts:38:6 › Collaboration - Sync › User B adds a paragraph block, User A sees it (2.8s)
  ✓  35 [chromium] › specs/editor/collaboration/collaboration-sync.spec.ts:71:6 › Collaboration - Sync › Both users add blocks simultaneously, both changes appear (2.9s)
  ✓  36 [chromium] › specs/editor/collaboration/collaboration-sync.spec.ts:115:6 › Collaboration - Sync › Title changes sync between users (2.7s)
  ✓  37 [chromium] › specs/editor/collaboration/collaboration-undo-redo.spec.ts:70:6 › Collaboration - Undo/Redo › User A undo only affects their own changes, not User B changes (2.8s)
  ✓  38 [chromium] › specs/editor/collaboration/collaboration-undo-redo.spec.ts:148:6 › Collaboration - Undo/Redo › Redo restores the undone change (2.8s)
  ✓  39 [chromium] › specs/editor/collaboration/collaboration-undo-redo.spec.ts:196:6 › Collaboration - Undo/Redo › Undo restores the post selection when another synced entity is loaded (2.0s)

  5 failed
    [chromium] › specs/editor/collaboration/collaboration-document-size-lock.spec.ts:10:6 › Collaboration with large documents › shows post-locked modal when document size limit is exceeded 
    [chromium] › specs/editor/collaboration/collaboration-persistence.spec.ts:7:6 › Collaboration - CRDT persistence › persists CRDT document when loading existing post without one 
    [chromium] › specs/editor/collaboration/collaboration-stress.spec.ts:362:6 › Collaboration - Stress Test › three users concurrently edit a large post with diverse blocks 
    [chromium] › specs/editor/collaboration/collaboration-stress.spec.ts:570:6 › Collaboration - Stress Test › two users concurrently move list items 
    [chromium] › specs/editor/collaboration/collaboration-sync-error-filter.spec.ts:43:6 › Sync connection error filter › plugin can replace the default modal for connection-limit-exceeded 
  34 passed (3.7m)

Overall, the test performance is roughly the same, with one removed test in this PR and one additional failure of three users concurrently edit a large post with diverse blocks in collaboration-stress.spec.ts.

Given the results, #77924 is still likely to address valid bugs and we may have uncovered another one.

Use of AI Tools

AI assistance: Yes
Tool(s): Claude Code
Used for: Migration to Yjs packages, PR draft.

@alecgeatches alecgeatches self-assigned this May 11, 2026
@github-actions

github-actions Bot commented May 11, 2026

Copy link
Copy Markdown

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Co-authored-by: danluu <danluu@git.wordpress.org>
Co-authored-by: alecgeatches <alecgeatches@git.wordpress.org>
Co-authored-by: maxschmeling <maxschmeling@git.wordpress.org>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

@alecgeatches alecgeatches added [Feature] Real-time Collaboration Phase 3 of the Gutenberg roadmap around real-time collaboration [Type] Automated Testing Testing infrastructure changes impacting the execution of end-to-end (E2E) and/or unit tests. labels May 11, 2026
@github-actions

github-actions Bot commented May 11, 2026

Copy link
Copy Markdown

Size Change: 0 B

Total Size: 7.93 MB

ℹ️ View Unchanged
Filename Size
build/modules/a11y/index.min.js 355 B
build/modules/abilities/index.min.js 42.3 kB
build/modules/block-editor/utils/fit-text-frontend.min.js 617 B
build/modules/block-library/accordion/view.min.js 595 B
build/modules/block-library/file/view.min.js 346 B
build/modules/block-library/form/view.min.js 528 B
build/modules/block-library/image/view.min.js 2.64 kB
build/modules/block-library/navigation/view.min.js 1.14 kB
build/modules/block-library/playlist/view.min.js 10.9 kB
build/modules/block-library/query/view.min.js 518 B
build/modules/block-library/search/view.min.js 498 B
build/modules/block-library/tabs/view.min.js 946 B
build/modules/boot/index.min.js 19.2 kB
build/modules/connectors/index.min.js 2.05 kB
build/modules/content-types/index.min.js 136 kB
build/modules/core-abilities/index.min.js 907 B
build/modules/edit-site-init/index.min.js 1.4 kB
build/modules/interactivity-router/full-page.min.js 451 B
build/modules/interactivity-router/index.min.js 11.6 kB
build/modules/interactivity/index.min.js 15.3 kB
build/modules/latex-to-mathml/index.min.js 56.5 kB
build/modules/latex-to-mathml/loader.min.js 131 B
build/modules/lazy-editor/index.min.js 14.1 kB
build/modules/route/index.min.js 25.2 kB
build/modules/vips/loader.min.js 127 B
build/modules/vips/worker.min.js 4.56 MB
build/modules/workflow/index.min.js 19.9 kB
build/scripts/a11y/index.min.js 1.06 kB
build/scripts/annotations/index.min.js 2.49 kB
build/scripts/api-fetch/index.min.js 2.83 kB
build/scripts/autop/index.min.js 2.18 kB
build/scripts/base-styles/index.min.js 98 B
build/scripts/blob/index.min.js 631 B
build/scripts/block-directory/index.min.js 10.3 kB
build/scripts/block-editor/index.min.js 343 kB
build/scripts/block-library/index.min.js 319 kB
build/scripts/block-serialization-default-parser/index.min.js 1.16 kB
build/scripts/block-serialization-spec-parser/index.min.js 3.08 kB
build/scripts/blocks/index.min.js 57 kB
build/scripts/commands/index.min.js 21 kB
build/scripts/components/index.min.js 266 kB
build/scripts/compose/index.min.js 11.1 kB
build/scripts/core-commands/index.min.js 4.33 kB
build/scripts/core-data/index.min.js 31 kB
build/scripts/customize-widgets/index.min.js 14.6 kB
build/scripts/data-controls/index.min.js 795 B
build/scripts/data/index.min.js 9.66 kB
build/scripts/date/index.min.js 23.6 kB
build/scripts/deprecated/index.min.js 756 B
build/scripts/dom-ready/index.min.js 476 B
build/scripts/dom/index.min.js 5 kB
build/scripts/edit-post/index.min.js 18.7 kB
build/scripts/edit-site/index.min.js 265 kB
build/scripts/edit-widgets/index.min.js 22.2 kB
build/scripts/editor/index.min.js 428 kB
build/scripts/element/index.min.js 5.17 kB
build/scripts/escape-html/index.min.js 587 B
build/scripts/format-library/index.min.js 13.1 kB
build/scripts/hooks/index.min.js 1.83 kB
build/scripts/html-entities/index.min.js 494 B
build/scripts/i18n/index.min.js 2.47 kB
build/scripts/is-shallow-equal/index.min.js 572 B
build/scripts/keyboard-shortcuts/index.min.js 1.61 kB
build/scripts/keycodes/index.min.js 1.56 kB
build/scripts/list-reusable-blocks/index.min.js 2.49 kB
build/scripts/media-utils/index.min.js 79.9 kB
build/scripts/notices/index.min.js 1.85 kB
build/scripts/nux/index.min.js 1.89 kB
build/scripts/patterns/index.min.js 7.96 kB
build/scripts/plugins/index.min.js 2.15 kB
build/scripts/preferences-persistence/index.min.js 2.15 kB
build/scripts/preferences/index.min.js 3.3 kB
build/scripts/primitives/index.min.js 1.01 kB
build/scripts/priority-queue/index.min.js 1.62 kB
build/scripts/private-apis/index.min.js 1.11 kB
build/scripts/react-i18n/index.min.js 833 B
build/scripts/redux-routine/index.min.js 3.37 kB
build/scripts/reusable-blocks/index.min.js 3.1 kB
build/scripts/rich-text/index.min.js 14 kB
build/scripts/router/index.min.js 5.96 kB
build/scripts/server-side-render/index.min.js 1.91 kB
build/scripts/shortcode/index.min.js 1.59 kB
build/scripts/style-engine/index.min.js 2.42 kB
build/scripts/sync/index.min.js 38.8 kB
build/scripts/theme/index.min.js 22.3 kB
build/scripts/token-list/index.min.js 739 B
build/scripts/undo-manager/index.min.js 918 B
build/scripts/upload-media/index.min.js 11.2 kB
build/scripts/url/index.min.js 3.98 kB
build/scripts/vendors/react-dom.min.js 43.3 kB
build/scripts/vendors/react-jsx-runtime.min.js 667 B
build/scripts/vendors/react.min.js 2.77 kB
build/scripts/viewport/index.min.js 1.22 kB
build/scripts/warning/index.min.js 454 B
build/scripts/widgets/index.min.js 7.8 kB
build/scripts/wordcount/index.min.js 1.04 kB
build/styles/base-styles/admin-schemes-rtl.css 1.71 kB
build/styles/base-styles/admin-schemes-rtl.min.css 775 B
build/styles/base-styles/admin-schemes.css 1.71 kB
build/styles/base-styles/admin-schemes.min.css 775 B
build/styles/block-directory/style-rtl.css 1.97 kB
build/styles/block-directory/style-rtl.min.css 1.06 kB
build/styles/block-directory/style.css 1.98 kB
build/styles/block-directory/style.min.css 1.06 kB
build/styles/block-editor/content-rtl.css 5.44 kB
build/styles/block-editor/content-rtl.min.css 4.01 kB
build/styles/block-editor/content.css 5.44 kB
build/styles/block-editor/content.min.css 4.01 kB
build/styles/block-editor/default-editor-styles-rtl.css 697 B
build/styles/block-editor/default-editor-styles-rtl.min.css 224 B
build/styles/block-editor/default-editor-styles.css 697 B
build/styles/block-editor/default-editor-styles.min.css 224 B
build/styles/block-editor/style-rtl.css 18.7 kB
build/styles/block-editor/style-rtl.min.css 15.9 kB
build/styles/block-editor/style.css 18.7 kB
build/styles/block-editor/style.min.css 15.9 kB
build/styles/block-library/accordion-heading/style-rtl.css 346 B
build/styles/block-library/accordion-heading/style-rtl.min.css 325 B
build/styles/block-library/accordion-heading/style.css 346 B
build/styles/block-library/accordion-heading/style.min.css 325 B
build/styles/block-library/accordion-item/style-rtl.css 239 B
build/styles/block-library/accordion-item/style-rtl.min.css 180 B
build/styles/block-library/accordion-item/style.css 238 B
build/styles/block-library/accordion-item/style.min.css 180 B
build/styles/block-library/accordion-panel/style-rtl.css 110 B
build/styles/block-library/accordion-panel/style-rtl.min.css 99 B
build/styles/block-library/accordion-panel/style.css 110 B
build/styles/block-library/accordion-panel/style.min.css 99 B
build/styles/block-library/accordion/style-rtl.css 69 B
build/styles/block-library/accordion/style-rtl.min.css 62 B
build/styles/block-library/accordion/style.css 69 B
build/styles/block-library/accordion/style.min.css 62 B
build/styles/block-library/archives/style-rtl.css 101 B
build/styles/block-library/archives/style-rtl.min.css 90 B
build/styles/block-library/archives/style.css 101 B
build/styles/block-library/archives/style.min.css 90 B
build/styles/block-library/audio/editor-rtl.css 166 B
build/styles/block-library/audio/editor-rtl.min.css 149 B
build/styles/block-library/audio/editor.css 166 B
build/styles/block-library/audio/editor.min.css 151 B
build/styles/block-library/audio/style-rtl.css 945 B
build/styles/block-library/audio/style-rtl.min.css 132 B
build/styles/block-library/audio/style.css 945 B
build/styles/block-library/audio/style.min.css 132 B
build/styles/block-library/audio/theme-rtl.css 967 B
build/styles/block-library/audio/theme-rtl.min.css 134 B
build/styles/block-library/audio/theme.css 967 B
build/styles/block-library/audio/theme.min.css 134 B
build/styles/block-library/avatar/editor-rtl.css 127 B
build/styles/block-library/avatar/editor-rtl.min.css 115 B
build/styles/block-library/avatar/editor.css 127 B
build/styles/block-library/avatar/editor.min.css 115 B
build/styles/block-library/avatar/style-rtl.css 117 B
build/styles/block-library/avatar/style-rtl.min.css 104 B
build/styles/block-library/avatar/style.css 117 B
build/styles/block-library/avatar/style.min.css 104 B
build/styles/block-library/breadcrumbs/style-rtl.css 233 B
build/styles/block-library/breadcrumbs/style-rtl.min.css 203 B
build/styles/block-library/breadcrumbs/style.css 233 B
build/styles/block-library/breadcrumbs/style.min.css 203 B
build/styles/block-library/button/editor-rtl.css 306 B
build/styles/block-library/button/editor-rtl.min.css 265 B
build/styles/block-library/button/editor.css 317 B
build/styles/block-library/button/editor.min.css 265 B
build/styles/block-library/button/style-rtl.css 651 B
build/styles/block-library/button/style-rtl.min.css 596 B
build/styles/block-library/button/style.css 662 B
build/styles/block-library/button/style.min.css 596 B
build/styles/block-library/buttons/editor-rtl.css 391 B
build/styles/block-library/buttons/editor-rtl.min.css 291 B
build/styles/block-library/buttons/editor.css 391 B
build/styles/block-library/buttons/editor.min.css 291 B
build/styles/block-library/buttons/style-rtl.css 452 B
build/styles/block-library/buttons/style-rtl.min.css 349 B
build/styles/block-library/buttons/style.css 453 B
build/styles/block-library/buttons/style.min.css 349 B
build/styles/block-library/calendar/style-rtl.css 271 B
build/styles/block-library/calendar/style-rtl.min.css 239 B
build/styles/block-library/calendar/style.css 271 B
build/styles/block-library/calendar/style.min.css 239 B
build/styles/block-library/categories/editor-rtl.css 171 B
build/styles/block-library/categories/editor-rtl.min.css 132 B
build/styles/block-library/categories/editor.css 170 B
build/styles/block-library/categories/editor.min.css 131 B
build/styles/block-library/categories/style-rtl.css 226 B
build/styles/block-library/categories/style-rtl.min.css 169 B
build/styles/block-library/categories/style.css 235 B
build/styles/block-library/categories/style.min.css 169 B
build/styles/block-library/classic-rtl.css 402 B
build/styles/block-library/classic-rtl.min.css 358 B
build/styles/block-library/classic.css 402 B
build/styles/block-library/classic.min.css 358 B
build/styles/block-library/code/editor-rtl.css 59 B
build/styles/block-library/code/editor-rtl.min.css 53 B
build/styles/block-library/code/editor.css 59 B
build/styles/block-library/code/editor.min.css 53 B
build/styles/block-library/code/style-rtl.css 158 B
build/styles/block-library/code/style-rtl.min.css 140 B
build/styles/block-library/code/style.css 178 B
build/styles/block-library/code/style.min.css 140 B
build/styles/block-library/code/theme-rtl.css 135 B
build/styles/block-library/code/theme-rtl.min.css 122 B
build/styles/block-library/code/theme.css 135 B
build/styles/block-library/code/theme.min.css 122 B
build/styles/block-library/columns/editor-rtl.css 119 B
build/styles/block-library/columns/editor-rtl.min.css 108 B
build/styles/block-library/columns/editor.css 119 B
build/styles/block-library/columns/editor.min.css 108 B
build/styles/block-library/columns/style-rtl.css 1.3 kB
build/styles/block-library/columns/style-rtl.min.css 421 B
build/styles/block-library/columns/style.css 1.3 kB
build/styles/block-library/columns/style.min.css 421 B
build/styles/block-library/comment-author-avatar/editor-rtl.css 136 B
build/styles/block-library/comment-author-avatar/editor-rtl.min.css 124 B
build/styles/block-library/comment-author-avatar/editor.css 136 B
build/styles/block-library/comment-author-avatar/editor.min.css 124 B
build/styles/block-library/comment-author-name/style-rtl.css 79 B
build/styles/block-library/comment-author-name/style-rtl.min.css 72 B
build/styles/block-library/comment-author-name/style.css 79 B
build/styles/block-library/comment-author-name/style.min.css 72 B
build/styles/block-library/comment-content/style-rtl.css 137 B
build/styles/block-library/comment-content/style-rtl.min.css 120 B
build/styles/block-library/comment-content/style.css 137 B
build/styles/block-library/comment-content/style.min.css 120 B
build/styles/block-library/comment-date/style-rtl.css 72 B
build/styles/block-library/comment-date/style-rtl.min.css 65 B
build/styles/block-library/comment-date/style.css 72 B
build/styles/block-library/comment-date/style.min.css 65 B
build/styles/block-library/comment-edit-link/style-rtl.css 77 B
build/styles/block-library/comment-edit-link/style-rtl.min.css 70 B
build/styles/block-library/comment-edit-link/style.css 77 B
build/styles/block-library/comment-edit-link/style.min.css 70 B
build/styles/block-library/comment-reply-link/style-rtl.css 78 B
build/styles/block-library/comment-reply-link/style-rtl.min.css 71 B
build/styles/block-library/comment-reply-link/style.css 78 B
build/styles/block-library/comment-reply-link/style.min.css 71 B
build/styles/block-library/comment-template/style-rtl.css 213 B
build/styles/block-library/comment-template/style-rtl.min.css 191 B
build/styles/block-library/comment-template/style.css 213 B
build/styles/block-library/comment-template/style.min.css 191 B
build/styles/block-library/comments-pagination-numbers/editor-rtl.css 135 B
build/styles/block-library/comments-pagination-numbers/editor-rtl.min.css 122 B
build/styles/block-library/comments-pagination-numbers/editor.css 144 B
build/styles/block-library/comments-pagination-numbers/editor.min.css 121 B
build/styles/block-library/comments-pagination/editor-rtl.css 184 B
build/styles/block-library/comments-pagination/editor-rtl.min.css 168 B
build/styles/block-library/comments-pagination/editor.css 184 B
build/styles/block-library/comments-pagination/editor.min.css 168 B
build/styles/block-library/comments-pagination/style-rtl.css 224 B
build/styles/block-library/comments-pagination/style-rtl.min.css 201 B
build/styles/block-library/comments-pagination/style.css 236 B
build/styles/block-library/comments-pagination/style.min.css 201 B
build/styles/block-library/comments-title/editor-rtl.css 83 B
build/styles/block-library/comments-title/editor-rtl.min.css 75 B
build/styles/block-library/comments-title/editor.css 83 B
build/styles/block-library/comments-title/editor.min.css 75 B
build/styles/block-library/comments/editor-rtl.css 968 B
build/styles/block-library/comments/editor-rtl.min.css 842 B
build/styles/block-library/comments/editor.css 968 B
build/styles/block-library/comments/editor.min.css 842 B
build/styles/block-library/comments/style-rtl.css 754 B
build/styles/block-library/comments/style-rtl.min.css 637 B
build/styles/block-library/comments/style.css 752 B
build/styles/block-library/comments/style.min.css 637 B
build/styles/block-library/common-rtl.css 2.48 kB
build/styles/block-library/common-rtl.min.css 1.12 kB
build/styles/block-library/common.css 2.5 kB
build/styles/block-library/common.min.css 1.12 kB
build/styles/block-library/cover/editor-rtl.css 1.05 kB
build/styles/block-library/cover/editor-rtl.min.css 631 B
build/styles/block-library/cover/editor.css 1.05 kB
build/styles/block-library/cover/editor.min.css 631 B
build/styles/block-library/cover/style-rtl.css 2.5 kB
build/styles/block-library/cover/style-rtl.min.css 1.82 kB
build/styles/block-library/cover/style.css 2.51 kB
build/styles/block-library/cover/style.min.css 1.81 kB
build/styles/block-library/details/editor-rtl.css 72 B
build/styles/block-library/details/editor-rtl.min.css 65 B
build/styles/block-library/details/editor.css 72 B
build/styles/block-library/details/editor.min.css 65 B
build/styles/block-library/details/style-rtl.css 97 B
build/styles/block-library/details/style-rtl.min.css 86 B
build/styles/block-library/details/style.css 97 B
build/styles/block-library/details/style.min.css 86 B
build/styles/block-library/editor-elements-rtl.css 117 B
build/styles/block-library/editor-elements-rtl.min.css 75 B
build/styles/block-library/editor-elements.css 117 B
build/styles/block-library/editor-elements.min.css 75 B
build/styles/block-library/editor-rtl.css 12.5 kB
build/styles/block-library/editor-rtl.min.css 10.3 kB
build/styles/block-library/editor.css 12.5 kB
build/styles/block-library/editor.min.css 10.3 kB
build/styles/block-library/elements-rtl.css 84 B
build/styles/block-library/elements-rtl.min.css 54 B
build/styles/block-library/elements.css 84 B
build/styles/block-library/elements.min.css 54 B
build/styles/block-library/embed/editor-rtl.css 391 B
build/styles/block-library/embed/editor-rtl.min.css 331 B
build/styles/block-library/embed/editor.css 390 B
build/styles/block-library/embed/editor.min.css 331 B
build/styles/block-library/embed/style-rtl.css 1.29 kB
build/styles/block-library/embed/style-rtl.min.css 448 B
build/styles/block-library/embed/style.css 1.29 kB
build/styles/block-library/embed/style.min.css 448 B
build/styles/block-library/embed/theme-rtl.css 967 B
build/styles/block-library/embed/theme-rtl.min.css 133 B
build/styles/block-library/embed/theme.css 967 B
build/styles/block-library/embed/theme.min.css 133 B
build/styles/block-library/file/editor-rtl.css 352 B
build/styles/block-library/file/editor-rtl.min.css 324 B
build/styles/block-library/file/editor.css 353 B
build/styles/block-library/file/editor.min.css 324 B
build/styles/block-library/file/style-rtl.css 318 B
build/styles/block-library/file/style-rtl.min.css 278 B
build/styles/block-library/file/style.css 331 B
build/styles/block-library/file/style.min.css 278 B
build/styles/block-library/footnotes/style-rtl.css 220 B
build/styles/block-library/footnotes/style-rtl.min.css 198 B
build/styles/block-library/footnotes/style.css 219 B
build/styles/block-library/footnotes/style.min.css 197 B
build/styles/block-library/form-input/editor-rtl.css 286 B
build/styles/block-library/form-input/editor-rtl.min.css 265 B
build/styles/block-library/form-input/editor.css 285 B
build/styles/block-library/form-input/editor.min.css 264 B
build/styles/block-library/form-input/style-rtl.css 467 B
build/styles/block-library/form-input/style-rtl.min.css 366 B
build/styles/block-library/form-input/style.css 467 B
build/styles/block-library/form-input/style.min.css 366 B
build/styles/block-library/form-submission-notification/editor-rtl.css 368 B
build/styles/block-library/form-submission-notification/editor-rtl.min.css 344 B
build/styles/block-library/form-submission-notification/editor.css 368 B
build/styles/block-library/form-submission-notification/editor.min.css 341 B
build/styles/block-library/form-submit-button/style-rtl.css 77 B
build/styles/block-library/form-submit-button/style-rtl.min.css 69 B
build/styles/block-library/form-submit-button/style.css 77 B
build/styles/block-library/form-submit-button/style.min.css 69 B
build/styles/block-library/freeform/editor-rtl.css 1.12 kB
build/styles/block-library/freeform/editor-rtl.min.css 288 B
build/styles/block-library/freeform/editor.css 1.12 kB
build/styles/block-library/freeform/editor.min.css 288 B
build/styles/block-library/gallery/editor-rtl.css 1.52 kB
build/styles/block-library/gallery/editor-rtl.min.css 615 B
build/styles/block-library/gallery/editor.css 1.52 kB
build/styles/block-library/gallery/editor.min.css 616 B
build/styles/block-library/gallery/style-rtl.css 2.84 kB
build/styles/block-library/gallery/style-rtl.min.css 1.84 kB
build/styles/block-library/gallery/style.css 2.84 kB
build/styles/block-library/gallery/style.min.css 1.84 kB
build/styles/block-library/gallery/theme-rtl.css 941 B
build/styles/block-library/gallery/theme-rtl.min.css 108 B
build/styles/block-library/gallery/theme.css 941 B
build/styles/block-library/gallery/theme.min.css 108 B
build/styles/block-library/group/editor-rtl.css 772 B
build/styles/block-library/group/editor-rtl.min.css 335 B
build/styles/block-library/group/editor.css 772 B
build/styles/block-library/group/editor.min.css 335 B
build/styles/block-library/group/style-rtl.css 120 B
build/styles/block-library/group/style-rtl.min.css 103 B
build/styles/block-library/group/style.css 120 B
build/styles/block-library/group/style.min.css 103 B
build/styles/block-library/group/theme-rtl.css 468 B
build/styles/block-library/group/theme-rtl.min.css 79 B
build/styles/block-library/group/theme.css 468 B
build/styles/block-library/group/theme.min.css 79 B
build/styles/block-library/heading/style-rtl.css 604 B
build/styles/block-library/heading/style-rtl.min.css 205 B
build/styles/block-library/heading/style.css 604 B
build/styles/block-library/heading/style.min.css 205 B
build/styles/block-library/html/editor-rtl.css 1.29 kB
build/styles/block-library/html/editor-rtl.min.css 464 B
build/styles/block-library/html/editor.css 1.3 kB
build/styles/block-library/html/editor.min.css 464 B
build/styles/block-library/icon/editor-rtl.css 776 B
build/styles/block-library/icon/editor-rtl.min.css 377 B
build/styles/block-library/icon/editor.css 776 B
build/styles/block-library/icon/editor.min.css 377 B
build/styles/block-library/icon/style-rtl.css 218 B
build/styles/block-library/icon/style-rtl.min.css 154 B
build/styles/block-library/icon/style.css 218 B
build/styles/block-library/icon/style.min.css 154 B
build/styles/block-library/image/editor-rtl.css 1.64 kB
build/styles/block-library/image/editor-rtl.min.css 782 B
build/styles/block-library/image/editor.css 1.64 kB
build/styles/block-library/image/editor.min.css 780 B
build/styles/block-library/image/style-rtl.css 2.92 kB
build/styles/block-library/image/style-rtl.min.css 1.86 kB
build/styles/block-library/image/style.css 2.92 kB
build/styles/block-library/image/style.min.css 1.85 kB
build/styles/block-library/image/theme-rtl.css 971 B
build/styles/block-library/image/theme-rtl.min.css 137 B
build/styles/block-library/image/theme.css 971 B
build/styles/block-library/image/theme.min.css 137 B
build/styles/block-library/latest-comments/style-rtl.css 392 B
build/styles/block-library/latest-comments/style-rtl.min.css 352 B
build/styles/block-library/latest-comments/style.css 390 B
build/styles/block-library/latest-comments/style.min.css 352 B
build/styles/block-library/latest-posts/editor-rtl.css 154 B
build/styles/block-library/latest-posts/editor-rtl.min.css 139 B
build/styles/block-library/latest-posts/editor.css 153 B
build/styles/block-library/latest-posts/editor.min.css 138 B
build/styles/block-library/latest-posts/style-rtl.css 1.36 kB
build/styles/block-library/latest-posts/style-rtl.min.css 520 B
build/styles/block-library/latest-posts/style.css 1.37 kB
build/styles/block-library/latest-posts/style.min.css 520 B
build/styles/block-library/list/style-rtl.css 498 B
build/styles/block-library/list/style-rtl.min.css 107 B
build/styles/block-library/list/style.css 498 B
build/styles/block-library/list/style.min.css 107 B
build/styles/block-library/loginout/style-rtl.css 68 B
build/styles/block-library/loginout/style-rtl.min.css 61 B
build/styles/block-library/loginout/style.css 68 B
build/styles/block-library/loginout/style.min.css 61 B
build/styles/block-library/math/editor-rtl.css 491 B
build/styles/block-library/math/editor-rtl.min.css 105 B
build/styles/block-library/math/editor.css 502 B
build/styles/block-library/math/editor.min.css 105 B
build/styles/block-library/math/style-rtl.css 70 B
build/styles/block-library/math/style-rtl.min.css 61 B
build/styles/block-library/math/style.css 70 B
build/styles/block-library/math/style.min.css 61 B
build/styles/block-library/media-text/editor-rtl.css 389 B
build/styles/block-library/media-text/editor-rtl.min.css 321 B
build/styles/block-library/media-text/editor.css 389 B
build/styles/block-library/media-text/editor.min.css 320 B
build/styles/block-library/media-text/style-rtl.css 873 B
build/styles/block-library/media-text/style-rtl.min.css 552 B
build/styles/block-library/media-text/style.css 901 B
build/styles/block-library/media-text/style.min.css 550 B
build/styles/block-library/more/editor-rtl.css 796 B
build/styles/block-library/more/editor-rtl.min.css 393 B
build/styles/block-library/more/editor.css 798 B
build/styles/block-library/more/editor.min.css 393 B
build/styles/block-library/navigation-link/editor-rtl.css 1.28 kB
build/styles/block-library/navigation-link/editor-rtl.min.css 710 B
build/styles/block-library/navigation-link/editor.css 1.27 kB
build/styles/block-library/navigation-link/editor.min.css 713 B
build/styles/block-library/navigation-link/style-rtl.css 579 B
build/styles/block-library/navigation-link/style-rtl.min.css 190 B
build/styles/block-library/navigation-link/style.css 579 B
build/styles/block-library/navigation-link/style.min.css 188 B
build/styles/block-library/navigation-overlay-close/style-rtl.css 260 B
build/styles/block-library/navigation-overlay-close/style-rtl.min.css 237 B
build/styles/block-library/navigation-overlay-close/style.css 260 B
build/styles/block-library/navigation-overlay-close/style.min.css 237 B
build/styles/block-library/navigation-submenu/editor-rtl.css 1.12 kB
build/styles/block-library/navigation-submenu/editor-rtl.min.css 295 B
build/styles/block-library/navigation-submenu/editor.css 1.12 kB
build/styles/block-library/navigation-submenu/editor.min.css 294 B
build/styles/block-library/navigation/editor-rtl.css 3.28 kB
build/styles/block-library/navigation/editor-rtl.min.css 2.28 kB
build/styles/block-library/navigation/editor.css 3.29 kB
build/styles/block-library/navigation/editor.min.css 2.28 kB
build/styles/block-library/navigation/style-rtl.css 3.59 kB
build/styles/block-library/navigation/style-rtl.min.css 2.52 kB
build/styles/block-library/navigation/style.css 3.59 kB
build/styles/block-library/navigation/style.min.css 2.5 kB
build/styles/block-library/nextpage/editor-rtl.css 799 B
build/styles/block-library/nextpage/editor-rtl.min.css 392 B
build/styles/block-library/nextpage/editor.css 800 B
build/styles/block-library/nextpage/editor.min.css 392 B
build/styles/block-library/page-list/editor-rtl.css 1.18 kB
build/styles/block-library/page-list/editor-rtl.min.css 356 B
build/styles/block-library/page-list/editor.css 1.18 kB
build/styles/block-library/page-list/editor.min.css 356 B
build/styles/block-library/page-list/style-rtl.css 207 B
build/styles/block-library/page-list/style-rtl.min.css 192 B
build/styles/block-library/page-list/style.css 207 B
build/styles/block-library/page-list/style.min.css 192 B
build/styles/block-library/paragraph/editor-rtl.css 315 B
build/styles/block-library/paragraph/editor-rtl.min.css 292 B
build/styles/block-library/paragraph/editor.css 314 B
build/styles/block-library/paragraph/editor.min.css 292 B
build/styles/block-library/paragraph/style-rtl.css 746 B
build/styles/block-library/paragraph/style-rtl.min.css 341 B
build/styles/block-library/paragraph/style.css 752 B
build/styles/block-library/paragraph/style.min.css 340 B
build/styles/block-library/playlist-track/style-rtl.css 453 B
build/styles/block-library/playlist-track/style-rtl.min.css 420 B
build/styles/block-library/playlist-track/style.css 453 B
build/styles/block-library/playlist-track/style.min.css 420 B
build/styles/block-library/playlist/editor-rtl.css 120 B
build/styles/block-library/playlist/editor-rtl.min.css 112 B
build/styles/block-library/playlist/editor.css 120 B
build/styles/block-library/playlist/editor.min.css 112 B
build/styles/block-library/playlist/style-rtl.css 1.52 kB
build/styles/block-library/playlist/style-rtl.min.css 1.42 kB
build/styles/block-library/playlist/style.css 1.52 kB
build/styles/block-library/playlist/style.min.css 1.42 kB
build/styles/block-library/post-author-biography/style-rtl.css 96 B
build/styles/block-library/post-author-biography/style-rtl.min.css 86 B
build/styles/block-library/post-author-biography/style.css 96 B
build/styles/block-library/post-author-biography/style.min.css 86 B
build/styles/block-library/post-author-name/style-rtl.css 76 B
build/styles/block-library/post-author-name/style-rtl.min.css 69 B
build/styles/block-library/post-author-name/style.css 76 B
build/styles/block-library/post-author-name/style.min.css 69 B
build/styles/block-library/post-author/editor-rtl.css 490 B
build/styles/block-library/post-author/editor-rtl.min.css 104 B
build/styles/block-library/post-author/editor.css 490 B
build/styles/block-library/post-author/editor.min.css 104 B
build/styles/block-library/post-author/style-rtl.css 213 B
build/styles/block-library/post-author/style-rtl.min.css 188 B
build/styles/block-library/post-author/style.css 214 B
build/styles/block-library/post-author/style.min.css 189 B
build/styles/block-library/post-comments-count/style-rtl.css 79 B
build/styles/block-library/post-comments-count/style-rtl.min.css 72 B
build/styles/block-library/post-comments-count/style.css 79 B
build/styles/block-library/post-comments-count/style.min.css 72 B
build/styles/block-library/post-comments-form/editor-rtl.css 104 B
build/styles/block-library/post-comments-form/editor-rtl.min.css 96 B
build/styles/block-library/post-comments-form/editor.css 104 B
build/styles/block-library/post-comments-form/editor.min.css 96 B
build/styles/block-library/post-comments-form/style-rtl.css 585 B
build/styles/block-library/post-comments-form/style-rtl.min.css 525 B
build/styles/block-library/post-comments-form/style.css 584 B
build/styles/block-library/post-comments-form/style.min.css 525 B
build/styles/block-library/post-comments-link/style-rtl.css 78 B
build/styles/block-library/post-comments-link/style-rtl.min.css 71 B
build/styles/block-library/post-comments-link/style.css 78 B
build/styles/block-library/post-comments-link/style.min.css 71 B
build/styles/block-library/post-content/style-rtl.css 68 B
build/styles/block-library/post-content/style-rtl.min.css 61 B
build/styles/block-library/post-content/style.css 68 B
build/styles/block-library/post-content/style.min.css 61 B
build/styles/block-library/post-date/style-rtl.css 69 B
build/styles/block-library/post-date/style-rtl.min.css 62 B
build/styles/block-library/post-date/style.css 69 B
build/styles/block-library/post-date/style.min.css 62 B
build/styles/block-library/post-excerpt/editor-rtl.css 78 B
build/styles/block-library/post-excerpt/editor-rtl.min.css 71 B
build/styles/block-library/post-excerpt/editor.css 78 B
build/styles/block-library/post-excerpt/editor.min.css 71 B
build/styles/block-library/post-excerpt/style-rtl.css 171 B
build/styles/block-library/post-excerpt/style-rtl.min.css 155 B
build/styles/block-library/post-excerpt/style.css 171 B
build/styles/block-library/post-excerpt/style.min.css 155 B
build/styles/block-library/post-featured-image/editor-rtl.css 1.14 kB
build/styles/block-library/post-featured-image/editor-rtl.min.css 719 B
build/styles/block-library/post-featured-image/editor.css 1.14 kB
build/styles/block-library/post-featured-image/editor.min.css 717 B
build/styles/block-library/post-featured-image/style-rtl.css 392 B
build/styles/block-library/post-featured-image/style-rtl.min.css 347 B
build/styles/block-library/post-featured-image/style.css 392 B
build/styles/block-library/post-featured-image/style.min.css 347 B
build/styles/block-library/post-navigation-link/style-rtl.css 234 B
build/styles/block-library/post-navigation-link/style-rtl.min.css 215 B
build/styles/block-library/post-navigation-link/style.css 245 B
build/styles/block-library/post-navigation-link/style.min.css 214 B
build/styles/block-library/post-template/style-rtl.css 1.27 kB
build/styles/block-library/post-template/style-rtl.min.css 441 B
build/styles/block-library/post-template/style.css 1.27 kB
build/styles/block-library/post-template/style.min.css 441 B
build/styles/block-library/post-terms/style-rtl.css 108 B
build/styles/block-library/post-terms/style-rtl.min.css 96 B
build/styles/block-library/post-terms/style.css 108 B
build/styles/block-library/post-terms/style.min.css 96 B
build/styles/block-library/post-time-to-read/style-rtl.css 77 B
build/styles/block-library/post-time-to-read/style-rtl.min.css 70 B
build/styles/block-library/post-time-to-read/style.css 77 B
build/styles/block-library/post-time-to-read/style.min.css 70 B
build/styles/block-library/post-title/style-rtl.css 175 B
build/styles/block-library/post-title/style-rtl.min.css 162 B
build/styles/block-library/post-title/style.css 175 B
build/styles/block-library/post-title/style.min.css 162 B
build/styles/block-library/preformatted/style-rtl.css 511 B
build/styles/block-library/preformatted/style-rtl.min.css 125 B
build/styles/block-library/preformatted/style.css 511 B
build/styles/block-library/preformatted/style.min.css 125 B
build/styles/block-library/pullquote/editor-rtl.css 146 B
build/styles/block-library/pullquote/editor-rtl.min.css 133 B
build/styles/block-library/pullquote/editor.css 146 B
build/styles/block-library/pullquote/editor.min.css 133 B
build/styles/block-library/pullquote/style-rtl.css 765 B
build/styles/block-library/pullquote/style-rtl.min.css 365 B
build/styles/block-library/pullquote/style.css 764 B
build/styles/block-library/pullquote/style.min.css 365 B
build/styles/block-library/pullquote/theme-rtl.css 195 B
build/styles/block-library/pullquote/theme-rtl.min.css 176 B
build/styles/block-library/pullquote/theme.css 195 B
build/styles/block-library/pullquote/theme.min.css 176 B
build/styles/block-library/query-pagination-numbers/editor-rtl.css 134 B
build/styles/block-library/query-pagination-numbers/editor-rtl.min.css 121 B
build/styles/block-library/query-pagination-numbers/editor.css 144 B
build/styles/block-library/query-pagination-numbers/editor.min.css 118 B
build/styles/block-library/query-pagination/editor-rtl.css 168 B
build/styles/block-library/query-pagination/editor-rtl.min.css 154 B
build/styles/block-library/query-pagination/editor.css 168 B
build/styles/block-library/query-pagination/editor.min.css 154 B
build/styles/block-library/query-pagination/style-rtl.css 254 B
build/styles/block-library/query-pagination/style-rtl.min.css 237 B
build/styles/block-library/query-pagination/style.css 265 B
build/styles/block-library/query-pagination/style.min.css 237 B
build/styles/block-library/query-title/style-rtl.css 71 B
build/styles/block-library/query-title/style-rtl.min.css 64 B
build/styles/block-library/query-title/style.css 71 B
build/styles/block-library/query-title/style.min.css 64 B
build/styles/block-library/query-total/style-rtl.css 71 B
build/styles/block-library/query-total/style-rtl.min.css 64 B
build/styles/block-library/query-total/style.css 71 B
build/styles/block-library/query-total/style.min.css 64 B
build/styles/block-library/query/editor-rtl.css 1.28 kB
build/styles/block-library/query/editor-rtl.min.css 438 B
build/styles/block-library/query/editor.css 1.28 kB
build/styles/block-library/query/editor.min.css 438 B
build/styles/block-library/quote/style-rtl.css 255 B
build/styles/block-library/quote/style-rtl.min.css 238 B
build/styles/block-library/quote/style.css 256 B
build/styles/block-library/quote/style.min.css 238 B
build/styles/block-library/quote/theme-rtl.css 253 B
build/styles/block-library/quote/theme-rtl.min.css 233 B
build/styles/block-library/quote/theme.css 254 B
build/styles/block-library/quote/theme.min.css 236 B
build/styles/block-library/read-more/style-rtl.css 146 B
build/styles/block-library/read-more/style-rtl.min.css 131 B
build/styles/block-library/read-more/style.css 146 B
build/styles/block-library/read-more/style.min.css 131 B
build/styles/block-library/reset-rtl.css 936 B
build/styles/block-library/reset-rtl.min.css 467 B
build/styles/block-library/reset.css 936 B
build/styles/block-library/reset.min.css 467 B
build/styles/block-library/rss/editor-rtl.css 144 B
build/styles/block-library/rss/editor-rtl.min.css 126 B
build/styles/block-library/rss/editor.css 144 B
build/styles/block-library/rss/editor.min.css 126 B
build/styles/block-library/rss/style-rtl.css 1.11 kB
build/styles/block-library/rss/style-rtl.min.css 284 B
build/styles/block-library/rss/style.css 1.12 kB
build/styles/block-library/rss/style.min.css 283 B
build/styles/block-library/search/editor-rtl.css 217 B
build/styles/block-library/search/editor-rtl.min.css 199 B
build/styles/block-library/search/editor.css 217 B
build/styles/block-library/search/editor.min.css 199 B
build/styles/block-library/search/style-rtl.css 1.1 kB
build/styles/block-library/search/style-rtl.min.css 665 B
build/styles/block-library/search/style.css 1.1 kB
build/styles/block-library/search/style.min.css 666 B
build/styles/block-library/search/theme-rtl.css 130 B
build/styles/block-library/search/theme-rtl.min.css 113 B
build/styles/block-library/search/theme.css 130 B
build/styles/block-library/search/theme.min.css 113 B
build/styles/block-library/separator/editor-rtl.css 106 B
build/styles/block-library/separator/editor-rtl.min.css 100 B
build/styles/block-library/separator/editor.css 106 B
build/styles/block-library/separator/editor.min.css 100 B
build/styles/block-library/separator/style-rtl.css 284 B
build/styles/block-library/separator/style-rtl.min.css 248 B
build/styles/block-library/separator/style.css 297 B
build/styles/block-library/separator/style.min.css 248 B
build/styles/block-library/separator/theme-rtl.css 226 B
build/styles/block-library/separator/theme-rtl.min.css 195 B
build/styles/block-library/separator/theme.css 226 B
build/styles/block-library/separator/theme.min.css 195 B
build/styles/block-library/shortcode/editor-rtl.css 1.1 kB
build/styles/block-library/shortcode/editor-rtl.min.css 286 B
build/styles/block-library/shortcode/editor.css 1.1 kB
build/styles/block-library/shortcode/editor.min.css 286 B
build/styles/block-library/site-logo/editor-rtl.css 1.12 kB
build/styles/block-library/site-logo/editor-rtl.min.css 696 B
build/styles/block-library/site-logo/editor.css 1.12 kB
build/styles/block-library/site-logo/editor.min.css 692 B
build/styles/block-library/site-logo/style-rtl.css 239 B
build/styles/block-library/site-logo/style-rtl.min.css 218 B
build/styles/block-library/site-logo/style.css 238 B
build/styles/block-library/site-logo/style.min.css 218 B
build/styles/block-library/site-tagline/editor-rtl.css 94 B
build/styles/block-library/site-tagline/editor-rtl.min.css 87 B
build/styles/block-library/site-tagline/editor.css 94 B
build/styles/block-library/site-tagline/editor.min.css 87 B
build/styles/block-library/site-tagline/style-rtl.css 72 B
build/styles/block-library/site-tagline/style-rtl.min.css 65 B
build/styles/block-library/site-tagline/style.css 72 B
build/styles/block-library/site-tagline/style.min.css 65 B
build/styles/block-library/site-title/editor-rtl.css 93 B
build/styles/block-library/site-title/editor-rtl.min.css 85 B
build/styles/block-library/site-title/editor.css 93 B
build/styles/block-library/site-title/editor.min.css 85 B
build/styles/block-library/site-title/style-rtl.css 153 B
build/styles/block-library/site-title/style-rtl.min.css 143 B
build/styles/block-library/site-title/style.css 153 B
build/styles/block-library/site-title/style.min.css 143 B
build/styles/block-library/social-link/editor-rtl.css 346 B
build/styles/block-library/social-link/editor-rtl.min.css 314 B
build/styles/block-library/social-link/editor.css 348 B
build/styles/block-library/social-link/editor.min.css 314 B
build/styles/block-library/social-links/editor-rtl.css 737 B
build/styles/block-library/social-links/editor-rtl.min.css 339 B
build/styles/block-library/social-links/editor.css 738 B
build/styles/block-library/social-links/editor.min.css 338 B
build/styles/block-library/social-links/style-rtl.css 1.57 kB
build/styles/block-library/social-links/style-rtl.min.css 1.51 kB
build/styles/block-library/social-links/style.css 1.57 kB
build/styles/block-library/social-links/style.min.css 1.51 kB
build/styles/block-library/spacer/editor-rtl.css 774 B
build/styles/block-library/spacer/editor-rtl.min.css 346 B
build/styles/block-library/spacer/editor.css 774 B
build/styles/block-library/spacer/editor.min.css 346 B
build/styles/block-library/spacer/style-rtl.css 55 B
build/styles/block-library/spacer/style-rtl.min.css 48 B
build/styles/block-library/spacer/style.css 55 B
build/styles/block-library/spacer/style.min.css 48 B
build/styles/block-library/style-rtl.css 21.5 kB
build/styles/block-library/style-rtl.min.css 18 kB
build/styles/block-library/style.css 21.6 kB
build/styles/block-library/style.min.css 18 kB
build/styles/block-library/tab-list/editor-rtl.css 107 B
build/styles/block-library/tab-list/editor-rtl.min.css 97 B
build/styles/block-library/tab-list/editor.css 107 B
build/styles/block-library/tab-list/editor.min.css 97 B
build/styles/block-library/tab-panel/style-rtl.css 238 B
build/styles/block-library/tab-panel/style-rtl.min.css 215 B
build/styles/block-library/tab-panel/style.css 238 B
build/styles/block-library/tab-panel/style.min.css 215 B
build/styles/block-library/tab-panels/style-rtl.css 76 B
build/styles/block-library/tab-panels/style-rtl.min.css 65 B
build/styles/block-library/tab-panels/style.css 76 B
build/styles/block-library/tab-panels/style.min.css 65 B
build/styles/block-library/tab/editor-rtl.css 160 B
build/styles/block-library/tab/editor-rtl.min.css 148 B
build/styles/block-library/tab/editor.css 160 B
build/styles/block-library/tab/editor.min.css 148 B
build/styles/block-library/tab/style-rtl.css 397 B
build/styles/block-library/tab/style-rtl.min.css 352 B
build/styles/block-library/tab/style.css 398 B
build/styles/block-library/tab/style.min.css 356 B
build/styles/block-library/table-of-contents/style-rtl.css 89 B
build/styles/block-library/table-of-contents/style-rtl.min.css 83 B
build/styles/block-library/table-of-contents/style.css 89 B
build/styles/block-library/table-of-contents/style.min.css 83 B
build/styles/block-library/table/editor-rtl.css 1.25 kB
build/styles/block-library/table/editor-rtl.min.css 394 B
build/styles/block-library/table/editor.css 1.25 kB
build/styles/block-library/table/editor.min.css 394 B
build/styles/block-library/table/style-rtl.css 1.06 kB
build/styles/block-library/table/style-rtl.min.css 641 B
build/styles/block-library/table/style.css 1.06 kB
build/styles/block-library/table/style.min.css 640 B
build/styles/block-library/table/theme-rtl.css 985 B
build/styles/block-library/table/theme-rtl.min.css 152 B
build/styles/block-library/table/theme.css 985 B
build/styles/block-library/table/theme.min.css 152 B
build/styles/block-library/tabs/style-rtl.css 64 B
build/styles/block-library/tabs/style-rtl.min.css 57 B
build/styles/block-library/tabs/style.css 64 B
build/styles/block-library/tabs/style.min.css 57 B
build/styles/block-library/tag-cloud/style-rtl.css 283 B
build/styles/block-library/tag-cloud/style-rtl.min.css 248 B
build/styles/block-library/tag-cloud/style.css 283 B
build/styles/block-library/tag-cloud/style.min.css 248 B
build/styles/block-library/template-part/editor-rtl.css 1.2 kB
build/styles/block-library/template-part/editor-rtl.min.css 368 B
build/styles/block-library/template-part/editor.css 1.2 kB
build/styles/block-library/template-part/editor.min.css 368 B
build/styles/block-library/template-part/theme-rtl.css 492 B
build/styles/block-library/template-part/theme-rtl.min.css 113 B
build/styles/block-library/template-part/theme.css 492 B
build/styles/block-library/template-part/theme.min.css 113 B
build/styles/block-library/term-count/style-rtl.css 70 B
build/styles/block-library/term-count/style-rtl.min.css 63 B
build/styles/block-library/term-count/style.css 70 B
build/styles/block-library/term-count/style.min.css 63 B
build/styles/block-library/term-description/style-rtl.css 138 B
build/styles/block-library/term-description/style-rtl.min.css 126 B
build/styles/block-library/term-description/style.css 138 B
build/styles/block-library/term-description/style.min.css 126 B
build/styles/block-library/term-name/style-rtl.css 69 B
build/styles/block-library/term-name/style-rtl.min.css 62 B
build/styles/block-library/term-name/style.css 69 B
build/styles/block-library/term-name/style.min.css 62 B
build/styles/block-library/term-template/editor-rtl.css 267 B
build/styles/block-library/term-template/editor-rtl.min.css 225 B
build/styles/block-library/term-template/editor.css 267 B
build/styles/block-library/term-template/editor.min.css 225 B
build/styles/block-library/term-template/style-rtl.css 124 B
build/styles/block-library/term-template/style-rtl.min.css 114 B
build/styles/block-library/term-template/style.css 124 B
build/styles/block-library/term-template/style.min.css 114 B
build/styles/block-library/text-columns/editor-rtl.css 481 B
build/styles/block-library/text-columns/editor-rtl.min.css 95 B
build/styles/block-library/text-columns/editor.css 481 B
build/styles/block-library/text-columns/editor.min.css 95 B
build/styles/block-library/text-columns/style-rtl.css 177 B
build/styles/block-library/text-columns/style-rtl.min.css 165 B
build/styles/block-library/text-columns/style.css 177 B
build/styles/block-library/text-columns/style.min.css 165 B
build/styles/block-library/theme-rtl.css 1.59 kB
build/styles/block-library/theme-rtl.min.css 715 B
build/styles/block-library/theme.css 1.6 kB
build/styles/block-library/theme.min.css 719 B
build/styles/block-library/verse/style-rtl.css 155 B
build/styles/block-library/verse/style-rtl.min.css 137 B
build/styles/block-library/verse/style.css 155 B
build/styles/block-library/verse/style.min.css 137 B
build/styles/block-library/video/editor-rtl.css 839 B
build/styles/block-library/video/editor-rtl.min.css 428 B
build/styles/block-library/video/editor.css 840 B
build/styles/block-library/video/editor.min.css 428 B
build/styles/block-library/video/style-rtl.css 1.02 kB
build/styles/block-library/video/style-rtl.min.css 202 B
build/styles/block-library/video/style.css 1.02 kB
build/styles/block-library/video/style.min.css 202 B
build/styles/block-library/video/theme-rtl.css 967 B
build/styles/block-library/video/theme-rtl.min.css 134 B
build/styles/block-library/video/theme.css 967 B
build/styles/block-library/video/theme.min.css 134 B
build/styles/commands/style-rtl.css 2.07 kB
build/styles/commands/style-rtl.min.css 1.17 kB
build/styles/commands/style.css 2.06 kB
build/styles/commands/style.min.css 1.17 kB
build/styles/components/style-rtl.css 17.6 kB
build/styles/components/style-rtl.min.css 14.4 kB
build/styles/components/style.css 17.7 kB
build/styles/components/style.min.css 14.4 kB
build/styles/customize-widgets/style-rtl.css 2.35 kB
build/styles/customize-widgets/style-rtl.min.css 1.44 kB
build/styles/customize-widgets/style.css 2.35 kB
build/styles/customize-widgets/style.min.css 1.44 kB
build/styles/edit-post/classic-rtl.css 1.29 kB
build/styles/edit-post/classic-rtl.min.css 425 B
build/styles/edit-post/classic.css 1.31 kB
build/styles/edit-post/classic.min.css 428 B
build/styles/edit-post/style-rtl.css 3.51 kB
build/styles/edit-post/style-rtl.min.css 2.21 kB
build/styles/edit-post/style.css 3.51 kB
build/styles/edit-post/style.min.css 2.21 kB
build/styles/edit-site/style-rtl.css 20.3 kB
build/styles/edit-site/style-rtl.min.css 16.5 kB
build/styles/edit-site/style.css 20.3 kB
build/styles/edit-site/style.min.css 16.5 kB
build/styles/edit-widgets/style-rtl.css 4.85 kB
build/styles/edit-widgets/style-rtl.min.css 3.52 kB
build/styles/edit-widgets/style.css 4.85 kB
build/styles/edit-widgets/style.min.css 3.52 kB
build/styles/editor/style-rtl.css 28.4 kB
build/styles/editor/style-rtl.min.css 24 kB
build/styles/editor/style.css 28.4 kB
build/styles/editor/style.min.css 24 kB
build/styles/format-library/style-rtl.css 735 B
build/styles/format-library/style-rtl.min.css 326 B
build/styles/format-library/style.css 746 B
build/styles/format-library/style.min.css 326 B
build/styles/list-reusable-blocks/style-rtl.css 1.07 kB
build/styles/list-reusable-blocks/style-rtl.min.css 250 B
build/styles/list-reusable-blocks/style.css 1.07 kB
build/styles/list-reusable-blocks/style.min.css 249 B
build/styles/media-utils/style-rtl.css 2.08 kB
build/styles/media-utils/style-rtl.min.css 1.17 kB
build/styles/media-utils/style.css 2.08 kB
build/styles/media-utils/style.min.css 1.17 kB
build/styles/nux/style-rtl.css 1.48 kB
build/styles/nux/style-rtl.min.css 622 B
build/styles/nux/style.css 1.5 kB
build/styles/nux/style.min.css 618 B
build/styles/patterns/style-rtl.css 1.46 kB
build/styles/patterns/style-rtl.min.css 611 B
build/styles/patterns/style.css 1.46 kB
build/styles/patterns/style.min.css 611 B
build/styles/preferences/style-rtl.css 1.26 kB
build/styles/preferences/style-rtl.min.css 415 B
build/styles/preferences/style.css 1.26 kB
build/styles/preferences/style.min.css 415 B
build/styles/reusable-blocks/style-rtl.css 1.11 kB
build/styles/reusable-blocks/style-rtl.min.css 275 B
build/styles/reusable-blocks/style.css 1.11 kB
build/styles/reusable-blocks/style.min.css 275 B
build/styles/widgets/style-rtl.css 2.05 kB
build/styles/widgets/style-rtl.min.css 1.16 kB
build/styles/widgets/style.css 2.06 kB
build/styles/widgets/style.min.css 1.16 kB

compressed-size-action

Comment thread test/e2e/specs/editor/collaboration/fixtures/collaboration-utils.ts Outdated
@github-actions

github-actions Bot commented May 11, 2026

Copy link
Copy Markdown

Flaky tests detected in b936e57.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/25698802191
📝 Reported issues:

@danluu

danluu commented May 11, 2026

Copy link
Copy Markdown
Contributor

Just following up on your ping with the caveat that I'm not familiar with Gutenberg or RTC, I asked my AI fuzzing harness to evaluate this vs. the other PR. Of course this PR is the right way way to go overall, but it flagged a few things that are useful for fuzzing surface area that are in the hacky/low quality AI fuzzing PR I submitted that this is missing (which could go into another PR):

  • delayNextMessage()
  • closeNextSocket()
  • controls
  • pendingMessages visibility/control
  • explicit sentMessages
  • explicit receivedMessages
  • custom message handling visibility for snapshot, update, awareness, remove-awareness
  • the hand-rolled server’s room model: clients, awareness, and updates log

Controls is maybe a bit funny when presented in a list without context, but it means this thing that's passed in that's a way to send some flags to the WS provider to get it to do custom stuff for testing/fuzzing.

It also flagged this:

The RTC WebSocket port override is broken. In /tmp/gutenberg-pr78179/test/e2e/playwright.rtc-websocket.config.ts:17, the test command honors GUTENBERG_RTC_TEST_WS_PORT and starts the WebSocket server on that port, but /tmp/gutenberg-pr78179/packages/e2e-tests/plugins/rtc-websocket-provider.php:15 reads GUTENBERG_RTC_TEST_WS_URL/PORT from PHP/container env. Those env vars are not present inside wp-env, so the browser-side provider falls back to ws://127.0.0.1:18991.

The default npm run test:e2e:rtc-websocket should still line up on 18991 if that port is free. A pragmatic fix is to have global-setup.ts write the resolved WS URL into a mounted plugin config file, then have the PHP plugin read that file instead of relying on getenv() inside wp-env.

For the fuzzing setup, it has a bunch of machinery to try to reject false positives which isn't applicable and wasn't applied here, so this is more raw than the normal output of the fuzzer.

A 2nd pass flagged these things (again, with the caveat that the normal false positive rejection machinery isn't set up for this); (2) is the same as the above:

  1. Blocking: WS readiness is not sync readiness.
    In src/index.js, the test provider records status and awarenessCount, but not provider.synced / the sync event. In collaboration-utils.ts, the WS branch of waitForSyncCycle() returns when status ===
    'connected', or when any room is connected if no room is passed. y-websocket distinguishes socket connection from sync completion, so tests can begin assertions before the target room’s document
    state has actually synced.
    Fix: expose per-room synced / sync-event state in __gutenbergTestWebSocketSync; require the exact target room; remove the any-room fallback; use real convergence checks for post-edit propagation.
  2. Blocking: WS endpoint is not single-sourced.
    playwright.rtc-websocket.config.ts starts the server from Node-side GUTENBERG_RTC_TEST_WS_PORT/URL, while rtc-websocket-provider.php reads PHP/wp-env getenv() and defaults to 18991. Default local
    runs may line up, but non-default ports, stale default listeners, reuse, or parallel runs can silently point the browser at a different server than Playwright started.
    Fix: write/pass one resolved WS URL into the browser-visible plugin config, then assert from the page that the URL matches the server Playwright started. Add a non-default-port smoke test.
  3. Provider-contract mismatch: some tests are HTTP-provider-specific.
    collaboration-document-size-lock.spec.ts explicitly asserts polling-manager behavior: MAX_UPDATE_SIZE_IN_BYTES, document-size-limit-exceeded, room unregistering, and wp-sync responses. collaboration-
    sync-error-filter.spec.ts expects default connection-limit behavior and connection-limit-exceeded. A plain y-websocket harness does not obviously implement those semantics.
    Fix: partition these by provider capability, or intentionally implement equivalent WS shim behavior. Do not interpret those failures as product regressions until the provider contract is explicit.
  4. Follow-up: /reset is not a quiescent isolation barrier.
    The test server closes clients and immediately docs.clear()s. That is probably not a default-run blocker, but it is risky for REUSE_SERVER, fuzzing, stale clients, and repeated reset/reconnect tests.
    Fix later: stop accepting during reset, await/terminate clients, clear docs after close, add epoch/room generation, and expose client/doc counts in /health.

@alecgeatches

alecgeatches commented May 11, 2026

Copy link
Copy Markdown
Contributor Author

Just following up on your ping with the caveat that I'm not familiar with Gutenberg or RTC, I asked my AI fuzzing harness to evaluate this vs. the other PR. Of course this PR is the right way way to go overall, but it flagged a few things that are useful for fuzzing surface area that are in the hacky/low quality AI fuzzing PR I submitted that this is missing (which could go into another PR):

  • delayNextMessage()
  • closeNextSocket()
  • controls
  • pendingMessages visibility/control
  • explicit sentMessages
  • explicit receivedMessages
  • custom message handling visibility for snapshot, update, awareness, remove-awareness
  • the hand-rolled server’s room model: clients, awareness, and updates log

Controls is maybe a bit funny when presented in a list without context, but it means this thing that's passed in that's a way to send some flags to the WS provider to get it to do custom stuff for testing/fuzzing.

Thanks for testing the fuzzer against this PR! Agreed those are useful for fuzzing surface area, I hadn't considered that. I think a follow-up PR might be the right home for this, or in the fuzzer-specific harness. I think #77920 is doing two jobs: behavior testing for CI (in the near future), and fuzzer instrumentation. This PR pulls behavior testing onto the real y-websocket protocol so CI catches bugs against the same format production uses, and tries to keep the surface narrow.

Also, many of the listed items don't have a direct analogue in y-websocket anyhow, like the JSON message handlers, the updates log, and pendingMessages. Counters like sentMessages / receivedMessages are an implementation-coupled sync behavior, and some of these like awarenessCount and status are also on the debug shim. For other data the fuzzer needs (per-room clients, awareness, doc state), @y/websocket-server exposes the docs Map directly, so the fuzzer should be able to read that data without us needing to mirror the hand-rolled server's API.

If the fuzzer wants its own provider with whatever controls help it triage, I'd probably prefer a second sync.providers filter registration in a fuzzer-only plugin, with final testing against the server we run here. Playwright-level APIs could also be used in testing for things like delayNextMessage() or closeNextSocket() if needed in testing. For now I think we should keep the WS transport used in CI as true to the real thing as possible.

Does that all sound reasonable to you?


I'll address the other correctness bullet points separately, and probably push up some more commits for those.

@alecgeatches

Copy link
Copy Markdown
Contributor Author

@danluu I've implemented most of your review results above, excluding this one:

Follow-up: /reset is not a quiescent isolation barrier.
The test server closes clients and immediately docs.clear()s. That is probably not a default-run blocker, but it is risky for REUSE_SERVER, fuzzing, stale clients, and repeated reset/reconnect tests.
Fix later: stop accepting during reset, await/terminate clients, clear docs after close, add epoch/room generation, and expose client/doc counts in /health.

A full reset is a good idea, but between the two suggestions in there there's a big chunk of code would need changing. This is recommended as a "Follow-up", and I'll leave it out for now.

@danluu

danluu commented May 11, 2026

Copy link
Copy Markdown
Contributor

If the fuzzer wants its own provider with whatever controls help it triage, I'd probably prefer a second sync.providers filter registration in a fuzzer-only plugin, with final testing against the server we run here. Playwright-level APIs could also be used in testing for things like delayNextMessage() or closeNextSocket() if needed in testing. For now I think we should keep the WS transport used in CI as true to the real thing as possible.

Does that all sound reasonable to you?

Yeah, that all sounds reasonable and good to me!

@alecgeatches alecgeatches merged commit 939b0ff into trunk May 11, 2026
40 checks passed
Comment on lines +10 to +11
// eslint-disable-next-line import/no-extraneous-dependencies -- declared in test/e2e/package.json, only loaded by the WS e2e harness.
import { WebsocketProvider } from 'y-websocket';

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It wouldn't have hurt to add y-websocket to devDependencies in packages/e2e-tests/package.json

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[Feature] Real-time Collaboration Phase 3 of the Gutenberg roadmap around real-time collaboration [Type] Automated Testing Testing infrastructure changes impacting the execution of end-to-end (E2E) and/or unit tests.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants