From c1a2ce823135955d4854528ccc9ce09bb49427d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arnau=20G=C3=B3mez=20Farell?= Date: Mon, 1 Jun 2026 17:02:01 +0200 Subject: [PATCH 1/4] fix(pm): bump prosemirror-tables for findTable --- ...2026-06-01-prosemirror-tables-findtable.md | 5 + demos/package.json | 12 +- packages/pm/package.json | 12 +- pnpm-lock.yaml | 271 +++++++++--------- 4 files changed, 153 insertions(+), 147 deletions(-) create mode 100644 .changeset/2026-06-01-prosemirror-tables-findtable.md diff --git a/.changeset/2026-06-01-prosemirror-tables-findtable.md b/.changeset/2026-06-01-prosemirror-tables-findtable.md new file mode 100644 index 0000000000..cbaca56cca --- /dev/null +++ b/.changeset/2026-06-01-prosemirror-tables-findtable.md @@ -0,0 +1,5 @@ +--- +'@tiptap/pm': patch +--- + +Bump `prosemirror-tables` to `^1.8.0` so `findTable` is available from `@tiptap/pm`, and align the related ProseMirror dependencies with the versions required by `prosemirror-tables`. diff --git a/demos/package.json b/demos/package.json index e7a548ac27..19288e75a8 100644 --- a/demos/package.json +++ b/demos/package.json @@ -31,17 +31,17 @@ "prosemirror-gapcursor": "^1.3.2", "prosemirror-history": "^1.4.1", "prosemirror-inputrules": "^1.4.0", - "prosemirror-keymap": "^1.2.2", + "prosemirror-keymap": "^1.2.3", "prosemirror-markdown": "^1.13.1", "prosemirror-menu": "^1.2.4", - "prosemirror-model": "^1.24.1", + "prosemirror-model": "^1.25.7", "prosemirror-schema-basic": "^1.2.3", "prosemirror-schema-list": "^1.5.0", - "prosemirror-state": "^1.4.3", - "prosemirror-tables": "^1.6.2", + "prosemirror-state": "^1.4.4", + "prosemirror-tables": "^1.8.0", "prosemirror-trailing-node": "^3.0.0", - "prosemirror-transform": "^1.10.2", - "prosemirror-view": "^1.38.1", + "prosemirror-transform": "^1.12.0", + "prosemirror-view": "^1.41.8", "remixicon": "^2.5.0", "shiki": "^1.25.1", "y-webrtc": "10.3.0", diff --git a/packages/pm/package.json b/packages/pm/package.json index f8538be323..70d18d6c4f 100644 --- a/packages/pm/package.json +++ b/packages/pm/package.json @@ -152,12 +152,12 @@ "prosemirror-gapcursor": "^1.3.2", "prosemirror-history": "^1.4.1", "prosemirror-inputrules": "^1.4.0", - "prosemirror-keymap": "^1.2.2", - "prosemirror-model": "^1.24.1", + "prosemirror-keymap": "^1.2.3", + "prosemirror-model": "^1.25.7", "prosemirror-schema-list": "^1.5.0", - "prosemirror-state": "^1.4.3", - "prosemirror-tables": "^1.6.4", - "prosemirror-transform": "^1.10.2", - "prosemirror-view": "^1.38.1" + "prosemirror-state": "^1.4.4", + "prosemirror-tables": "^1.8.0", + "prosemirror-transform": "^1.12.0", + "prosemirror-view": "^1.41.8" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 992515f891..bbd5193127 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -147,7 +147,7 @@ importers: version: 2.15.0(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23) '@hocuspocus/transformer': specifier: ^2.15.0 - version: 2.15.2(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)(y-prosemirror@1.3.5(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.38.1)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23))(yjs@13.6.23) + version: 2.15.2(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(y-prosemirror@1.3.5(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23))(yjs@13.6.23) '@lexical/react': specifier: ^0.36.2 version: 0.36.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(yjs@13.6.23) @@ -159,7 +159,7 @@ importers: version: 1.10.3 '@tiptap/y-tiptap': specifier: ^3.0.0 - version: 3.0.0(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.38.1)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23) + version: 3.0.0(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23) d3: specifier: ^7.9.0 version: 7.9.0 @@ -203,8 +203,8 @@ importers: specifier: ^1.4.0 version: 1.4.0 prosemirror-keymap: - specifier: ^1.2.2 - version: 1.2.2 + specifier: ^1.2.3 + version: 1.2.3 prosemirror-markdown: specifier: ^1.13.1 version: 1.13.1 @@ -212,8 +212,8 @@ importers: specifier: ^1.2.4 version: 1.2.4 prosemirror-model: - specifier: ^1.24.1 - version: 1.24.1 + specifier: ^1.25.7 + version: 1.25.7 prosemirror-schema-basic: specifier: ^1.2.3 version: 1.2.3 @@ -221,20 +221,20 @@ importers: specifier: ^1.5.0 version: 1.5.0 prosemirror-state: - specifier: ^1.4.3 - version: 1.4.3 + specifier: ^1.4.4 + version: 1.4.4 prosemirror-tables: - specifier: ^1.6.2 - version: 1.6.2 + specifier: ^1.8.0 + version: 1.8.5 prosemirror-trailing-node: specifier: ^3.0.0 - version: 3.0.0(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.38.1) + version: 3.0.0(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8) prosemirror-transform: - specifier: ^1.10.2 - version: 1.10.2 + specifier: ^1.12.0 + version: 1.12.0 prosemirror-view: - specifier: ^1.38.1 - version: 1.38.1 + specifier: ^1.41.8 + version: 1.41.8 remixicon: specifier: ^2.5.0 version: 2.5.0 @@ -478,7 +478,7 @@ importers: version: link:../pm '@tiptap/y-tiptap': specifier: ^3.0.4 - version: 3.0.4(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.38.1)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23) + version: 3.0.4(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23) packages/extension-collaboration-caret: devDependencies: @@ -514,7 +514,7 @@ importers: version: link:../pm '@tiptap/y-tiptap': specifier: ^3.0.2 - version: 3.0.2(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.38.1)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23) + version: 3.0.2(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23) yjs: specifier: ^13.6.23 version: 13.6.23 @@ -563,7 +563,7 @@ importers: version: link:../pm '@tiptap/y-tiptap': specifier: ^3.0.2 - version: 3.0.2(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.38.1)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23) + version: 3.0.2(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23) packages/extension-drag-handle-react: devDependencies: @@ -964,26 +964,26 @@ importers: specifier: ^1.4.0 version: 1.4.0 prosemirror-keymap: - specifier: ^1.2.2 - version: 1.2.2 + specifier: ^1.2.3 + version: 1.2.3 prosemirror-model: - specifier: ^1.24.1 - version: 1.24.1 + specifier: ^1.25.7 + version: 1.25.7 prosemirror-schema-list: specifier: ^1.5.0 version: 1.5.0 prosemirror-state: - specifier: ^1.4.3 - version: 1.4.3 + specifier: ^1.4.4 + version: 1.4.4 prosemirror-tables: - specifier: ^1.6.4 - version: 1.6.4 + specifier: ^1.8.0 + version: 1.8.5 prosemirror-transform: - specifier: ^1.10.2 - version: 1.10.2 + specifier: ^1.12.0 + version: 1.12.0 prosemirror-view: - specifier: ^1.38.1 - version: 1.38.1 + specifier: ^1.41.8 + version: 1.41.8 packages/react: dependencies: @@ -3189,10 +3189,10 @@ packages: peerDependencies: '@tiptap/pm': ^2.7.0 - '@tiptap/core@3.23.6': - resolution: {integrity: sha512-MRB3pHz4Oxqmcawh0cQ5iOGdY5xtNYp/1CoK7hdTLzw5K0C6/gTC2VvanB1R4INaB6EpBkxG/GiWkVirDRnuXw==} + '@tiptap/core@3.24.0': + resolution: {integrity: sha512-GTAsXAI32p4hEZgPzvUv2RPrObxamy9AFhmhG10fXSvN/cDUs8naEYVIqDV3Sh99jMwQEbTFKW1E1mcspsY6ow==} peerDependencies: - '@tiptap/pm': 3.23.6 + '@tiptap/pm': 3.24.0 '@tiptap/extension-blockquote@2.14.0': resolution: {integrity: sha512-AwqPP0jLYNioKxakiVw0vlfH/ceGFbV+SGoqBbPSGFPRdSbHhxHDNBlTtiThmT3N2PiVwXAD9xislJV+WY4GUA==} @@ -3297,8 +3297,8 @@ packages: '@tiptap/pm@2.14.0': resolution: {integrity: sha512-cnsfaIlvTFCDtLP/A2Fd3LmpttgY0O/tuTM2fC71vetONz83wUTYT+aD9uvxdX0GkSocoh840b0TsEazbBxhpA==} - '@tiptap/pm@3.23.6': - resolution: {integrity: sha512-in5CaMaWlJcH2A1q6GJKFtrodE8WLS3M9tIi/f89jPmIVHJShpodC0KZDNyJkrVBQomYk0DEh86Utm6ASXzQww==} + '@tiptap/pm@3.24.0': + resolution: {integrity: sha512-QQP/78ryOZDN99gNBV7dgh69/8AYaOYQYFklq/iR+ZRFaaL3+qqHFvPVJapGkzPdymBgNJ34xjFM8n5pJ4QmMg==} '@tiptap/starter-kit@2.14.0': resolution: {integrity: sha512-Z1bKAfHl14quRI3McmdU+bs675jp6/iexEQTI9M9oHa6l3McFF38g9N3xRpPPX02MX83DghsUPupndUW/yJvEQ==} @@ -5585,8 +5585,8 @@ packages: prosemirror-inputrules@1.4.0: resolution: {integrity: sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==} - prosemirror-keymap@1.2.2: - resolution: {integrity: sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==} + prosemirror-keymap@1.2.3: + resolution: {integrity: sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==} prosemirror-markdown@1.13.1: resolution: {integrity: sha512-Sl+oMfMtAjWtlcZoj/5L/Q39MpEnVZ840Xo330WJWUvgyhNmLBLN7MsHn07s53nG/KImevWHSE6fEj4q/GihHw==} @@ -5594,8 +5594,8 @@ packages: prosemirror-menu@1.2.4: resolution: {integrity: sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==} - prosemirror-model@1.24.1: - resolution: {integrity: sha512-YM053N+vTThzlWJ/AtPtF1j0ebO36nvbmDy4U7qA2XQB8JVaQp1FmB9Jhrps8s+z+uxhhVTny4m20ptUvhk0Mg==} + prosemirror-model@1.25.7: + resolution: {integrity: sha512-A79aN8QEFUwI6cax8Yq4Rpcx1TJZ3Kagn+ii7qLo4/V8H3mMiHrhFyhTyHHvpSnOgMPpWiDGSwM3etwrxE50ug==} prosemirror-schema-basic@1.2.3: resolution: {integrity: sha512-h+H0OQwZVqMon1PNn0AG9cTfx513zgIG2DY00eJ00Yvgb3UD+GQ/VlWW5rcaxacpCGT1Yx8nuhwXk4+QbXUfJA==} @@ -5603,15 +5603,15 @@ packages: prosemirror-schema-list@1.5.0: resolution: {integrity: sha512-gg1tAfH1sqpECdhIHOA/aLg2VH3ROKBWQ4m8Qp9mBKrOxQRW61zc+gMCI8nh22gnBzd1t2u1/NPLmO3nAa3ssg==} - prosemirror-state@1.4.3: - resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==} - - prosemirror-tables@1.6.2: - resolution: {integrity: sha512-97dKocVLrEVTQjZ4GBLdrrMw7Gv3no8H8yMwf5IRM9OoHrzbWpcH5jJxYgNQIRCtdIqwDctT1HdMHrGTiwp1dQ==} + prosemirror-state@1.4.4: + resolution: {integrity: sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==} prosemirror-tables@1.6.4: resolution: {integrity: sha512-TkDY3Gw52gRFRfRn2f4wJv5WOgAOXLJA2CQJYIJ5+kdFbfj3acR4JUW6LX2e1hiEBiUwvEhzH5a3cZ5YSztpIA==} + prosemirror-tables@1.8.5: + resolution: {integrity: sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw==} + prosemirror-trailing-node@3.0.0: resolution: {integrity: sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==} peerDependencies: @@ -5619,11 +5619,11 @@ packages: prosemirror-state: ^1.4.2 prosemirror-view: ^1.33.8 - prosemirror-transform@1.10.2: - resolution: {integrity: sha512-2iUq0wv2iRoJO/zj5mv8uDUriOHWzXRnOTVgCzSXnktS/2iQRa3UUQwVlkBlYZFtygw6Nh1+X4mGqoYBINn5KQ==} + prosemirror-transform@1.12.0: + resolution: {integrity: sha512-GxboyN4AMIsoHNtz5uf2r2Ru551i5hWeCMD6E2Ib4Eogqoub0NflniaBPVQ4MrGE5yZ8JV9tUHg9qcZTTrcN4w==} - prosemirror-view@1.38.1: - resolution: {integrity: sha512-4FH/uM1A4PNyrxXbD+RAbAsf0d/mM0D/wAKSVVWK7o0A9Q/oOXJBrw786mBf2Vnrs/Edly6dH6Z2gsb7zWwaUw==} + prosemirror-view@1.41.8: + resolution: {integrity: sha512-TnKDdohEatgyZNGCDWIdccOHXhYloJwbwU+phw/a23KBvJIR9lWQWW7WHHK3vBdOLDNuF7TaX98GObUZOWkOnA==} punycode.js@2.3.1: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} @@ -8182,12 +8182,12 @@ snapshots: - bufferutil - utf-8-validate - '@hocuspocus/transformer@2.15.2(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)(y-prosemirror@1.3.5(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.38.1)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23))(yjs@13.6.23)': + '@hocuspocus/transformer@2.15.2(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(y-prosemirror@1.3.5(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23))(yjs@13.6.23)': dependencies: - '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6) - '@tiptap/pm': 3.23.6 + '@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) + '@tiptap/pm': 3.24.0 '@tiptap/starter-kit': 2.14.0 - y-prosemirror: 1.3.5(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.38.1)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23) + y-prosemirror: 1.3.5(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23) yjs: 13.6.23 '@isaacs/cliui@8.0.2': @@ -8850,9 +8850,9 @@ snapshots: dependencies: '@tiptap/pm': 2.14.0 - '@tiptap/core@3.23.6(@tiptap/pm@3.23.6)': + '@tiptap/core@3.24.0(@tiptap/pm@3.24.0)': dependencies: - '@tiptap/pm': 3.23.6 + '@tiptap/pm': 3.24.0 '@tiptap/extension-blockquote@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.14.0))': dependencies: @@ -8944,32 +8944,33 @@ snapshots: prosemirror-gapcursor: 1.3.2 prosemirror-history: 1.4.1 prosemirror-inputrules: 1.4.0 - prosemirror-keymap: 1.2.2 + prosemirror-keymap: 1.2.3 prosemirror-markdown: 1.13.1 prosemirror-menu: 1.2.4 - prosemirror-model: 1.24.1 + prosemirror-model: 1.25.7 prosemirror-schema-basic: 1.2.3 prosemirror-schema-list: 1.5.0 - prosemirror-state: 1.4.3 + prosemirror-state: 1.4.4 prosemirror-tables: 1.6.4 - prosemirror-trailing-node: 3.0.0(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.38.1) - prosemirror-transform: 1.10.2 - prosemirror-view: 1.38.1 + prosemirror-trailing-node: 3.0.0(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8) + prosemirror-transform: 1.12.0 + prosemirror-view: 1.41.8 - '@tiptap/pm@3.23.6': + '@tiptap/pm@3.24.0': dependencies: prosemirror-changeset: 2.3.0 prosemirror-commands: 1.6.2 prosemirror-dropcursor: 1.8.1 prosemirror-gapcursor: 1.3.2 prosemirror-history: 1.4.1 - prosemirror-keymap: 1.2.2 - prosemirror-model: 1.24.1 + prosemirror-inputrules: 1.4.0 + prosemirror-keymap: 1.2.3 + prosemirror-model: 1.25.7 prosemirror-schema-list: 1.5.0 - prosemirror-state: 1.4.3 - prosemirror-tables: 1.6.4 - prosemirror-transform: 1.10.2 - prosemirror-view: 1.38.1 + prosemirror-state: 1.4.4 + prosemirror-tables: 1.8.5 + prosemirror-transform: 1.12.0 + prosemirror-view: 1.41.8 '@tiptap/starter-kit@2.14.0': dependencies: @@ -8995,30 +8996,30 @@ snapshots: '@tiptap/extension-text-style': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.14.0)) '@tiptap/pm': 2.14.0 - '@tiptap/y-tiptap@3.0.0(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.38.1)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23)': + '@tiptap/y-tiptap@3.0.0(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23)': dependencies: lib0: 0.2.104 - prosemirror-model: 1.24.1 - prosemirror-state: 1.4.3 - prosemirror-view: 1.38.1 + prosemirror-model: 1.25.7 + prosemirror-state: 1.4.4 + prosemirror-view: 1.41.8 y-protocols: 1.0.6(yjs@13.6.23) yjs: 13.6.23 - '@tiptap/y-tiptap@3.0.2(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.38.1)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23)': + '@tiptap/y-tiptap@3.0.2(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23)': dependencies: lib0: 0.2.117 - prosemirror-model: 1.24.1 - prosemirror-state: 1.4.3 - prosemirror-view: 1.38.1 + prosemirror-model: 1.25.7 + prosemirror-state: 1.4.4 + prosemirror-view: 1.41.8 y-protocols: 1.0.6(yjs@13.6.23) yjs: 13.6.23 - '@tiptap/y-tiptap@3.0.4(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.38.1)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23)': + '@tiptap/y-tiptap@3.0.4(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23)': dependencies: lib0: 0.2.117 - prosemirror-model: 1.24.1 - prosemirror-state: 1.4.3 - prosemirror-view: 1.38.1 + prosemirror-model: 1.25.7 + prosemirror-state: 1.4.4 + prosemirror-view: 1.41.8 y-protocols: 1.0.6(yjs@13.6.23) yjs: 13.6.23 @@ -11271,114 +11272,114 @@ snapshots: prosemirror-changeset@2.3.0: dependencies: - prosemirror-transform: 1.10.2 + prosemirror-transform: 1.12.0 prosemirror-collab@1.3.1: dependencies: - prosemirror-state: 1.4.3 + prosemirror-state: 1.4.4 prosemirror-commands@1.6.2: dependencies: - prosemirror-model: 1.24.1 - prosemirror-state: 1.4.3 - prosemirror-transform: 1.10.2 + prosemirror-model: 1.25.7 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.0 prosemirror-dropcursor@1.8.1: dependencies: - prosemirror-state: 1.4.3 - prosemirror-transform: 1.10.2 - prosemirror-view: 1.38.1 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.0 + prosemirror-view: 1.41.8 prosemirror-gapcursor@1.3.2: dependencies: - prosemirror-keymap: 1.2.2 - prosemirror-model: 1.24.1 - prosemirror-state: 1.4.3 - prosemirror-view: 1.38.1 + prosemirror-keymap: 1.2.3 + prosemirror-model: 1.25.7 + prosemirror-state: 1.4.4 + prosemirror-view: 1.41.8 prosemirror-history@1.4.1: dependencies: - prosemirror-state: 1.4.3 - prosemirror-transform: 1.10.2 - prosemirror-view: 1.38.1 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.0 + prosemirror-view: 1.41.8 rope-sequence: 1.3.4 prosemirror-inputrules@1.4.0: dependencies: - prosemirror-state: 1.4.3 - prosemirror-transform: 1.10.2 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.0 - prosemirror-keymap@1.2.2: + prosemirror-keymap@1.2.3: dependencies: - prosemirror-state: 1.4.3 + prosemirror-state: 1.4.4 w3c-keyname: 2.2.8 prosemirror-markdown@1.13.1: dependencies: '@types/markdown-it': 14.1.2 markdown-it: 14.1.0 - prosemirror-model: 1.24.1 + prosemirror-model: 1.25.7 prosemirror-menu@1.2.4: dependencies: crelt: 1.0.6 prosemirror-commands: 1.6.2 prosemirror-history: 1.4.1 - prosemirror-state: 1.4.3 + prosemirror-state: 1.4.4 - prosemirror-model@1.24.1: + prosemirror-model@1.25.7: dependencies: orderedmap: 2.1.1 prosemirror-schema-basic@1.2.3: dependencies: - prosemirror-model: 1.24.1 + prosemirror-model: 1.25.7 prosemirror-schema-list@1.5.0: dependencies: - prosemirror-model: 1.24.1 - prosemirror-state: 1.4.3 - prosemirror-transform: 1.10.2 + prosemirror-model: 1.25.7 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.0 - prosemirror-state@1.4.3: + prosemirror-state@1.4.4: dependencies: - prosemirror-model: 1.24.1 - prosemirror-transform: 1.10.2 - prosemirror-view: 1.38.1 + prosemirror-model: 1.25.7 + prosemirror-transform: 1.12.0 + prosemirror-view: 1.41.8 - prosemirror-tables@1.6.2: + prosemirror-tables@1.6.4: dependencies: - prosemirror-keymap: 1.2.2 - prosemirror-model: 1.24.1 - prosemirror-state: 1.4.3 - prosemirror-transform: 1.10.2 - prosemirror-view: 1.38.1 + prosemirror-keymap: 1.2.3 + prosemirror-model: 1.25.7 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.0 + prosemirror-view: 1.41.8 - prosemirror-tables@1.6.4: + prosemirror-tables@1.8.5: dependencies: - prosemirror-keymap: 1.2.2 - prosemirror-model: 1.24.1 - prosemirror-state: 1.4.3 - prosemirror-transform: 1.10.2 - prosemirror-view: 1.38.1 + prosemirror-keymap: 1.2.3 + prosemirror-model: 1.25.7 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.0 + prosemirror-view: 1.41.8 - prosemirror-trailing-node@3.0.0(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.38.1): + prosemirror-trailing-node@3.0.0(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8): dependencies: '@remirror/core-constants': 3.0.0 escape-string-regexp: 4.0.0 - prosemirror-model: 1.24.1 - prosemirror-state: 1.4.3 - prosemirror-view: 1.38.1 + prosemirror-model: 1.25.7 + prosemirror-state: 1.4.4 + prosemirror-view: 1.41.8 - prosemirror-transform@1.10.2: + prosemirror-transform@1.12.0: dependencies: - prosemirror-model: 1.24.1 + prosemirror-model: 1.25.7 - prosemirror-view@1.38.1: + prosemirror-view@1.41.8: dependencies: - prosemirror-model: 1.24.1 - prosemirror-state: 1.4.3 - prosemirror-transform: 1.10.2 + prosemirror-model: 1.25.7 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.0 punycode.js@2.3.1: {} @@ -12427,12 +12428,12 @@ snapshots: ws@8.20.0: {} - y-prosemirror@1.3.5(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.38.1)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23): + y-prosemirror@1.3.5(prosemirror-model@1.25.7)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23): dependencies: lib0: 0.2.117 - prosemirror-model: 1.24.1 - prosemirror-state: 1.4.3 - prosemirror-view: 1.38.1 + prosemirror-model: 1.25.7 + prosemirror-state: 1.4.4 + prosemirror-view: 1.41.8 y-protocols: 1.0.6(yjs@13.6.23) yjs: 13.6.23 From 89ade8708fa557b6596238cdc01bef507c38d9dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arnau=20G=C3=B3mez=20Farell?= Date: Tue, 2 Jun 2026 10:17:42 +0200 Subject: [PATCH 2/4] fix(tests): update serialization expectations --- demos/src/Extensions/TextAlign/index.spec.ts | 4 ++-- packages/core/__tests__/insertContent.spec.ts | 2 +- .../__tests__/tableCommands.spec.ts | 4 ++-- .../background-color-commands.spec.ts | 2 +- .../__tests__/color-commands.spec.ts | 2 +- .../__tests__/font-family-commands.spec.ts | 8 +++---- .../__tests__/font-size-commands.spec.ts | 4 ++-- .../__tests__/line-height-commands.spec.ts | 8 +++---- .../__tests__/text-style-merge.spec.ts | 22 +++++++++---------- 9 files changed, 28 insertions(+), 28 deletions(-) diff --git a/demos/src/Extensions/TextAlign/index.spec.ts b/demos/src/Extensions/TextAlign/index.spec.ts index dea88168c6..cc620637ee 100644 --- a/demos/src/Extensions/TextAlign/index.spec.ts +++ b/demos/src/Extensions/TextAlign/index.spec.ts @@ -34,7 +34,7 @@ test.describe(`${demoPath}/${demoName}`, () => { el.editor.commands.setContent(`

Example Text

`) return el.editor.getHTML() }, alignment) - expect(html).toBe(`

Example Text

`) + expect(html).toBe(`

Example Text

`) }) }) @@ -59,7 +59,7 @@ test.describe(`${demoPath}/${demoName}`, () => { const expected: string[] = [] alignments.forEach(alignment => { headings.forEach(level => { - expected.push(`Example Text`) + expected.push(`Example Text`) }) }) expect(result).toEqual(expected) diff --git a/packages/core/__tests__/insertContent.spec.ts b/packages/core/__tests__/insertContent.spec.ts index 479a3ecc11..3a502520cc 100644 --- a/packages/core/__tests__/insertContent.spec.ts +++ b/packages/core/__tests__/insertContent.spec.ts @@ -158,7 +158,7 @@ And more lines`) it('respects editor.options.parseOptions if defined to be `true`', () => { editor.options.parseOptions = { preserveWhitespace: true } editor.commands.insertContent('

Tiptap

Hello\n World\n

') - expect(editor.getHTML()).toContain('

Tiptap

Hello World

') + expect(editor.getHTML()).toContain('

Tiptap

Hello
World

') }) }) diff --git a/packages/extension-table/__tests__/tableCommands.spec.ts b/packages/extension-table/__tests__/tableCommands.spec.ts index c492ab77f8..261e9bcb50 100644 --- a/packages/extension-table/__tests__/tableCommands.spec.ts +++ b/packages/extension-table/__tests__/tableCommands.spec.ts @@ -158,7 +158,7 @@ describe('Table commands', () => { editor.commands.clearContent() editor.commands.insertTable({ cols: 1, rows: 1, withHeaderRow: false }) expect(editor.getHTML()).toBe( - '

', + '

', ) }) @@ -166,7 +166,7 @@ describe('Table commands', () => { editor.commands.clearContent() editor.commands.insertTable({ cols: 1, rows: 1, withHeaderRow: true }) expect(editor.getHTML()).toBe( - '

', + '

', ) }) diff --git a/packages/extension-text-style/__tests__/background-color-commands.spec.ts b/packages/extension-text-style/__tests__/background-color-commands.spec.ts index 73049f816b..e2f3285219 100644 --- a/packages/extension-text-style/__tests__/background-color-commands.spec.ts +++ b/packages/extension-text-style/__tests__/background-color-commands.spec.ts @@ -28,7 +28,7 @@ describe('BackgroundColor commands', () => { editor.commands.setBackgroundColor('#958DF1') expect(editor.isActive('textStyle', { backgroundColor: '#958DF1' })).toBe(true) expect(editor.getHTML()).toContain( - 'Example Text', + 'Example Text', ) }) diff --git a/packages/extension-text-style/__tests__/color-commands.spec.ts b/packages/extension-text-style/__tests__/color-commands.spec.ts index 04677a5ef3..080d6854d3 100644 --- a/packages/extension-text-style/__tests__/color-commands.spec.ts +++ b/packages/extension-text-style/__tests__/color-commands.spec.ts @@ -27,7 +27,7 @@ describe('Color commands', () => { expect(editor.isActive('textStyle', { color: '#958DF1' })).toBe(false) editor.commands.setColor('#958DF1') expect(editor.isActive('textStyle', { color: '#958DF1' })).toBe(true) - expect(editor.getHTML()).toContain('Example Text') + expect(editor.getHTML()).toContain('Example Text') }) it('removes the color of the selected text', () => { diff --git a/packages/extension-text-style/__tests__/font-family-commands.spec.ts b/packages/extension-text-style/__tests__/font-family-commands.spec.ts index 38857b951e..75ed524121 100644 --- a/packages/extension-text-style/__tests__/font-family-commands.spec.ts +++ b/packages/extension-text-style/__tests__/font-family-commands.spec.ts @@ -27,7 +27,7 @@ describe('FontFamily commands', () => { expect(editor.isActive('textStyle', { fontFamily: 'monospace' })).toBe(false) editor.commands.setFontFamily('monospace') expect(editor.isActive('textStyle', { fontFamily: 'monospace' })).toBe(true) - expect(editor.getHTML()).toContain('Example Text') + expect(editor.getHTML()).toContain('Example Text') }) it('removes the font-family of the selected text', () => { @@ -41,21 +41,21 @@ describe('FontFamily commands', () => { it('allows CSS variables as a font-family', () => { editor.commands.setFontFamily('var(--title-font-family)') expect(editor.getHTML()).toContain( - 'Example Text', + 'Example Text', ) }) it('allows fonts containing multiple font families', () => { editor.commands.setFontFamily('"Comic Sans MS", "Comic Sans"') expect(editor.getHTML()).toContain( - 'Example Text', + 'Example Text', ) }) it('allows fonts containing a space and number as a font-family', () => { editor.commands.setFontFamily('"Exo 2"') expect(editor.getHTML()).toContain( - 'Example Text', + 'Example Text', ) }) }) diff --git a/packages/extension-text-style/__tests__/font-size-commands.spec.ts b/packages/extension-text-style/__tests__/font-size-commands.spec.ts index d2925cbef6..6f5fe507e9 100644 --- a/packages/extension-text-style/__tests__/font-size-commands.spec.ts +++ b/packages/extension-text-style/__tests__/font-size-commands.spec.ts @@ -27,12 +27,12 @@ describe('FontSize commands', () => { expect(editor.isActive('textStyle', { fontSize: '28px' })).toBe(false) editor.commands.setFontSize('28px') expect(editor.isActive('textStyle', { fontSize: '28px' })).toBe(true) - expect(editor.getHTML()).toContain('Example Text') + expect(editor.getHTML()).toContain('Example Text') }) it('removes the font-size of the selected text', () => { editor.commands.setFontSize('28px') - expect(editor.getHTML()).toContain('') + expect(editor.getHTML()).toContain('') editor.commands.unsetFontSize() expect(editor.getHTML()).not.toContain(' { }) const cases = [ - { value: '1.5', style: 'line-height: 1.5' }, - { value: '2.0', style: 'line-height: 2.0' }, - { value: '4.0', style: 'line-height: 4.0' }, + { value: '1.5', style: 'line-height: 1.5;' }, + { value: '2.0', style: 'line-height: 2;' }, + { value: '4.0', style: 'line-height: 4;' }, ] cases.forEach(({ value, style }) => { @@ -40,7 +40,7 @@ describe('LineHeight commands', () => { it('removes the line-height of the selected text', () => { editor.commands.toggleTextStyle({ lineHeight: '1.5' }) - expect(editor.getHTML()).toContain('') + expect(editor.getHTML()).toContain('') editor.commands.unsetLineHeight() expect(editor.getHTML()).not.toContain(' { const spans = editor.view.dom.querySelectorAll('p:nth-child(4) > span') expect(spans.length).toBe(1) expect(spans[0].textContent?.trim()).toBe('red serif') - expect(spans[0].getAttribute('style')).toBe('color: #FF0000; font-family: serif') + expect(spans[0].getAttribute('style')).toBe('color: #FF0000; font-family: serif;') }) it('merges styles of multiple nested spans into the innermost descendant', () => { const spans = editor.view.dom.querySelectorAll('p:nth-child(5) > span') expect(spans.length).toBe(1) expect(spans[0].textContent?.trim()).toBe('blue serif') - expect(spans[0].getAttribute('style')).toBe('color: #0000FF; font-family: serif') + expect(spans[0].getAttribute('style')).toBe('color: #0000FF; font-family: serif;') }) it('merges parent styles into each sibling descendant span', () => { const spans = editor.view.dom.querySelectorAll('p:nth-child(6) > span') expect(spans.length).toBe(2) expect(spans[0].textContent?.trim()).toBe('green serif') - expect(spans[0].getAttribute('style')).toBe('color: #00FF00; font-family: serif') + expect(spans[0].getAttribute('style')).toBe('color: #00FF00; font-family: serif;') expect(spans[1].textContent?.trim()).toBe('red serif') - expect(spans[1].getAttribute('style')).toBe('color: #FF0000; font-family: serif') + expect(spans[1].getAttribute('style')).toBe('color: #FF0000; font-family: serif;') }) it('keeps descendant spans intact when the parent span has no style', () => { const spans = editor.view.dom.querySelectorAll('p:nth-child(7) > span') expect(spans.length).toBe(4) expect(spans[0].textContent?.trim()).toBe('blue') - expect(spans[0].getAttribute('style')).toBe('color: #0000FF') + expect(spans[0].getAttribute('style')).toBe('color: #0000FF;') expect(spans[1].textContent?.trim()).toBe('green') - expect(spans[1].getAttribute('style')).toBe('color: #00FF00') + expect(spans[1].getAttribute('style')).toBe('color: #00FF00;') expect(spans[2].textContent?.trim()).toBe('green serif') - expect(spans[2].getAttribute('style')).toBe('color: #00FF00; font-family: serif') + expect(spans[2].getAttribute('style')).toBe('color: #00FF00; font-family: serif;') }) it('merges parent styles into descendants while preserving root text spans', () => { const spans = editor.view.dom.querySelectorAll('p:nth-child(8) > span') expect(spans.length).toBe(4) expect(spans[0].textContent?.trim()).toBe('blue') - expect(spans[0].getAttribute('style')).toBe('color: #0000FF') + expect(spans[0].getAttribute('style')).toBe('color: #0000FF;') expect(spans[1].textContent?.trim()).toBe('green') - expect(spans[1].getAttribute('style')).toBe('color: #00FF00') + expect(spans[1].getAttribute('style')).toBe('color: #00FF00;') expect(spans[2].textContent?.trim()).toBe('green serif') - expect(spans[2].getAttribute('style')).toBe('color: #00FF00; font-family: serif') + expect(spans[2].getAttribute('style')).toBe('color: #00FF00; font-family: serif;') expect(spans[3].textContent?.trim()).toBe('blue serif') - expect(spans[3].getAttribute('style')).toBe('color: #0000FF; font-family: serif') + expect(spans[3].getAttribute('style')).toBe('color: #0000FF; font-family: serif;') }) }) From a9d58c5fd33bb769618714006d1a1a6480ca1f00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arnau=20G=C3=B3mez=20Farell?= Date: Tue, 2 Jun 2026 10:49:18 +0200 Subject: [PATCH 3/4] fix(tests): stabilize custom document typing --- demos/src/Examples/CustomDocument/index.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/demos/src/Examples/CustomDocument/index.spec.ts b/demos/src/Examples/CustomDocument/index.spec.ts index 4fd33e212b..03ef6f8384 100644 --- a/demos/src/Examples/CustomDocument/index.spec.ts +++ b/demos/src/Examples/CustomDocument/index.spec.ts @@ -67,7 +67,7 @@ test.describe(`${demoPath}/${demoName}`, () => { await editor.evaluate((el: any) => { el.editor.chain().focus().clearContent().insertContent('Hello world').run() }) - await editor.click() + await page.locator('.tiptap h1').click() await page.keyboard.press('End') await page.keyboard.press('Enter') @@ -77,7 +77,7 @@ test.describe(`${demoPath}/${demoName}`, () => { 'Can you add some further context?', ) - await editor.type('This is a paragraph for this test document') + await page.keyboard.type('This is a paragraph for this test document') await expect(page.locator('.tiptap p').first()).toHaveText( 'This is a paragraph for this test document', ) From 4025cfa1b0f0a51a3079e6cb48fa9fde3e2bdde5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arnau=20G=C3=B3mez=20Farell?= Date: Tue, 2 Jun 2026 11:42:51 +0200 Subject: [PATCH 4/4] refactor: re-write affected tests so they don't break when HTML formatting changes --- demos/src/Extensions/TextAlign/index.spec.ts | 53 ++++++++++--------- .../background-color-commands.spec.ts | 6 +-- .../__tests__/color-commands.spec.ts | 4 +- .../__tests__/font-family-commands.spec.ts | 19 ++++--- .../__tests__/font-size-commands.spec.ts | 6 ++- .../__tests__/line-height-commands.spec.ts | 12 +++-- 6 files changed, 55 insertions(+), 45 deletions(-) diff --git a/demos/src/Extensions/TextAlign/index.spec.ts b/demos/src/Extensions/TextAlign/index.spec.ts index cc620637ee..0a51069abd 100644 --- a/demos/src/Extensions/TextAlign/index.spec.ts +++ b/demos/src/Extensions/TextAlign/index.spec.ts @@ -30,39 +30,44 @@ test.describe(`${demoPath}/${demoName}`, () => { ;['left', 'center', 'right', 'justify'].forEach(alignment => { test(`parses ${alignment} align text correctly`, async ({ page }) => { const editor = await getEditor(page) - const html = await editor.evaluate((el: any, a: string) => { + await editor.evaluate((el: any, a: string) => { el.editor.commands.setContent(`

Example Text

`) - return el.editor.getHTML() }, alignment) - expect(html).toBe(`

Example Text

`) + await expect(page.locator('.tiptap p').filter({ hasText: 'Example Text' })).toHaveCSS( + 'text-align', + alignment, + ) }) }) test('keeps the text aligned when toggling headings', async ({ page }) => { const editor = await getEditor(page) - const result = await editor.evaluate((el: any) => { - const alignments = ['center', 'right', 'justify'] - const headings = [1, 2] - const out: string[] = [] - alignments.forEach(alignment => { - headings.forEach(level => { - el.editor.commands.setContent(`

Example Text

`) - el.editor.commands.toggleHeading({ level }) - out.push(el.editor.getHTML()) - }) - }) - return out - }) - const alignments = ['center', 'right', 'justify'] const headings = [1, 2] - const expected: string[] = [] - alignments.forEach(alignment => { - headings.forEach(level => { - expected.push(`Example Text`) - }) - }) - expect(result).toEqual(expected) + + for (const alignment of alignments) { + for (const level of headings) { + await editor.evaluate( + ( + el: any, + { + currentAlignment, + currentLevel, + }: { currentAlignment: string; currentLevel: number }, + ) => { + el.editor.commands.setContent( + `

Example Text

`, + ) + el.editor.commands.toggleHeading({ level: currentLevel }) + }, + { currentAlignment: alignment, currentLevel: level }, + ) + + await expect( + page.locator(`.tiptap h${level}`).filter({ hasText: 'Example Text' }), + ).toHaveCSS('text-align', alignment) + } + } }) test('aligns the text left on the 1st button', async ({ page }) => { diff --git a/packages/extension-text-style/__tests__/background-color-commands.spec.ts b/packages/extension-text-style/__tests__/background-color-commands.spec.ts index e2f3285219..1c26dac97f 100644 --- a/packages/extension-text-style/__tests__/background-color-commands.spec.ts +++ b/packages/extension-text-style/__tests__/background-color-commands.spec.ts @@ -27,9 +27,9 @@ describe('BackgroundColor commands', () => { expect(editor.isActive('textStyle', { backgroundColor: '#958DF1' })).toBe(false) editor.commands.setBackgroundColor('#958DF1') expect(editor.isActive('textStyle', { backgroundColor: '#958DF1' })).toBe(true) - expect(editor.getHTML()).toContain( - 'Example Text', - ) + const span = editor.view.dom.querySelector('span') + expect(span?.textContent).toBe('Example Text') + expect(span?.style.backgroundColor).toBe('#958DF1') }) it('removes the background color of the selected text', () => { diff --git a/packages/extension-text-style/__tests__/color-commands.spec.ts b/packages/extension-text-style/__tests__/color-commands.spec.ts index 080d6854d3..405d520b33 100644 --- a/packages/extension-text-style/__tests__/color-commands.spec.ts +++ b/packages/extension-text-style/__tests__/color-commands.spec.ts @@ -27,7 +27,9 @@ describe('Color commands', () => { expect(editor.isActive('textStyle', { color: '#958DF1' })).toBe(false) editor.commands.setColor('#958DF1') expect(editor.isActive('textStyle', { color: '#958DF1' })).toBe(true) - expect(editor.getHTML()).toContain('Example Text') + const span = editor.view.dom.querySelector('span') + expect(span?.textContent).toBe('Example Text') + expect(span?.style.color).toBe('#958DF1') }) it('removes the color of the selected text', () => { diff --git a/packages/extension-text-style/__tests__/font-family-commands.spec.ts b/packages/extension-text-style/__tests__/font-family-commands.spec.ts index 75ed524121..a1eefa58b6 100644 --- a/packages/extension-text-style/__tests__/font-family-commands.spec.ts +++ b/packages/extension-text-style/__tests__/font-family-commands.spec.ts @@ -27,7 +27,9 @@ describe('FontFamily commands', () => { expect(editor.isActive('textStyle', { fontFamily: 'monospace' })).toBe(false) editor.commands.setFontFamily('monospace') expect(editor.isActive('textStyle', { fontFamily: 'monospace' })).toBe(true) - expect(editor.getHTML()).toContain('Example Text') + const span = editor.view.dom.querySelector('span') + expect(span?.textContent).toBe('Example Text') + expect((span as HTMLSpanElement | null)?.style.fontFamily).toBe('monospace') }) it('removes the font-family of the selected text', () => { @@ -40,22 +42,19 @@ describe('FontFamily commands', () => { it('allows CSS variables as a font-family', () => { editor.commands.setFontFamily('var(--title-font-family)') - expect(editor.getHTML()).toContain( - 'Example Text', - ) + const span = editor.view.dom.querySelector('span') + expect(span?.style.fontFamily).toBe('var(--title-font-family)') }) it('allows fonts containing multiple font families', () => { editor.commands.setFontFamily('"Comic Sans MS", "Comic Sans"') - expect(editor.getHTML()).toContain( - 'Example Text', - ) + const span = editor.view.dom.querySelector('span') + expect(span?.style.fontFamily).toBe('"Comic Sans MS", "Comic Sans"') }) it('allows fonts containing a space and number as a font-family', () => { editor.commands.setFontFamily('"Exo 2"') - expect(editor.getHTML()).toContain( - 'Example Text', - ) + const span = editor.view.dom.querySelector('span') + expect(span?.style.fontFamily).toBe('"Exo 2"') }) }) diff --git a/packages/extension-text-style/__tests__/font-size-commands.spec.ts b/packages/extension-text-style/__tests__/font-size-commands.spec.ts index 6f5fe507e9..e4c6b00e97 100644 --- a/packages/extension-text-style/__tests__/font-size-commands.spec.ts +++ b/packages/extension-text-style/__tests__/font-size-commands.spec.ts @@ -27,12 +27,14 @@ describe('FontSize commands', () => { expect(editor.isActive('textStyle', { fontSize: '28px' })).toBe(false) editor.commands.setFontSize('28px') expect(editor.isActive('textStyle', { fontSize: '28px' })).toBe(true) - expect(editor.getHTML()).toContain('Example Text') + const span = editor.view.dom.querySelector('span') + expect(span?.textContent).toBe('Example Text') + expect(span?.style.fontSize).toBe('28px') }) it('removes the font-size of the selected text', () => { editor.commands.setFontSize('28px') - expect(editor.getHTML()).toContain('') + expect(editor.view.dom.querySelector('span')?.style.fontSize).toBe('28px') editor.commands.unsetFontSize() expect(editor.getHTML()).not.toContain(' { }) const cases = [ - { value: '1.5', style: 'line-height: 1.5;' }, - { value: '2.0', style: 'line-height: 2;' }, - { value: '4.0', style: 'line-height: 4;' }, + { value: '1.5', style: '1.5' }, + { value: '2.0', style: '2' }, + { value: '4.0', style: '4' }, ] cases.forEach(({ value, style }) => { @@ -34,13 +34,15 @@ describe('LineHeight commands', () => { expect(editor.isActive('textStyle', { lineHeight: value })).toBe(false) editor.commands.toggleTextStyle({ lineHeight: value }) expect(editor.isActive('textStyle', { lineHeight: value })).toBe(true) - expect(editor.getHTML()).toContain(`Example Text`) + const span = editor.view.dom.querySelector('span') + expect(span?.textContent).toBe('Example Text') + expect(span?.style.lineHeight).toBe(style) }) }) it('removes the line-height of the selected text', () => { editor.commands.toggleTextStyle({ lineHeight: '1.5' }) - expect(editor.getHTML()).toContain('') + expect(editor.view.dom.querySelector('span')?.style.lineHeight).toBe('1.5') editor.commands.unsetLineHeight() expect(editor.getHTML()).not.toContain('