diff --git a/docs/src/demos/Extensions/Blockquote/index.spec.js b/docs/src/demos/Extensions/Blockquote/index.spec.js index f84b971a..e1847704 100644 --- a/docs/src/demos/Extensions/Blockquote/index.spec.js +++ b/docs/src/demos/Extensions/Blockquote/index.spec.js @@ -28,17 +28,17 @@ context('/api/extensions/blockquote', () => { }) it('the keyboard shortcut should make the selected line a blockquote', () => { - cy.get('.ProseMirror').trigger('keydown', { shiftKey: true, metaKey: true, key: '9' }) + cy.get('.ProseMirror').trigger('keydown', { shiftKey: true, modKey: true, key: '9' }) cy.get('.ProseMirror').find('blockquote').should('contain', 'Example Text') }) it('the keyboard shortcut should toggle the blockquote', () => { cy.get('.ProseMirror blockquote').should('not.exist') - cy.get('.ProseMirror').trigger('keydown', { shiftKey: true, metaKey: true, key: '9' }) + cy.get('.ProseMirror').trigger('keydown', { shiftKey: true, modKey: true, key: '9' }) cy.get('.ProseMirror').find('blockquote').should('contain', 'Example Text') cy.get('.ProseMirror').type('{selectall}', { force: true }) - cy.get('.ProseMirror').trigger('keydown', { shiftKey: true, metaKey: true, key: '9' }) + cy.get('.ProseMirror').trigger('keydown', { shiftKey: true, modKey: true, key: '9' }) cy.get('.ProseMirror blockquote').should('not.exist') }) diff --git a/docs/src/demos/Extensions/Bold/index.spec.js b/docs/src/demos/Extensions/Bold/index.spec.js index e2181999..5b644176 100644 --- a/docs/src/demos/Extensions/Bold/index.spec.js +++ b/docs/src/demos/Extensions/Bold/index.spec.js @@ -25,19 +25,19 @@ context('/api/extensions/bold', () => { it('the keyboard shortcut should make the selected text bold', () => { cy.get('.ProseMirror') - .trigger('keydown', { metaKey: true, key: 'b' }) + .trigger('keydown', { modKey: true, key: 'b' }) .find('strong') .should('contain', 'Example Text') }) it('the keyboard shortcut should toggle the selected text bold', () => { cy.get('.ProseMirror') - .trigger('keydown', { metaKey: true, key: 'b' }) + .trigger('keydown', { modKey: true, key: 'b' }) .find('strong') .should('contain', 'Example Text') cy.get('.ProseMirror') - .trigger('keydown', { metaKey: true, key: 'b' }) + .trigger('keydown', { modKey: true, key: 'b' }) cy.get('.ProseMirror strong').should('not.exist') }) diff --git a/docs/src/demos/Extensions/HardBreak/index.spec.js b/docs/src/demos/Extensions/HardBreak/index.spec.js index d1f9ffe3..9d7dcabb 100644 --- a/docs/src/demos/Extensions/HardBreak/index.spec.js +++ b/docs/src/demos/Extensions/HardBreak/index.spec.js @@ -18,13 +18,13 @@ context('/api/extensions/hard-break', () => { it('the default keyboard shortcut should add a line break', () => { cy.get('.ProseMirror br').should('not.exist') - cy.get('.ProseMirror').trigger('keydown', { metaKey: true, shiftKey: true, key: 'Enter' }) + cy.get('.ProseMirror').trigger('keydown', { shiftKey: true, key: 'Enter' }) cy.get('.ProseMirror br').should('exist') }) it('the alternative keyboard shortcut should add a line break', () => { cy.get('.ProseMirror br').should('not.exist') - cy.get('.ProseMirror').trigger('keydown', { metaKey: true, key: 'Enter' }) + cy.get('.ProseMirror').trigger('keydown', { modKey: true, key: 'Enter' }) cy.get('.ProseMirror br').should('exist') }) }) \ No newline at end of file diff --git a/docs/src/demos/Extensions/History/index.spec.js b/docs/src/demos/Extensions/History/index.spec.js index 454fdb19..af6fb5a5 100644 --- a/docs/src/demos/Extensions/History/index.spec.js +++ b/docs/src/demos/Extensions/History/index.spec.js @@ -17,7 +17,7 @@ context('/api/extensions/history', () => { }) it('the keyboard shortcut should make the last change undone', () => { - cy.get('.ProseMirror').trigger('keydown', { metaKey: true, key: 'z' }) + cy.get('.ProseMirror').trigger('keydown', { modKey: true, key: 'z' }) cy.get('.ProseMirror').should('not.contain', 'Mistake') }) @@ -30,10 +30,10 @@ context('/api/extensions/history', () => { }) it.skip('the keyboard shortcut should apply the last undone change again', () => { - cy.get('.ProseMirror').trigger('keydown', { metaKey: true, key: 'z' }) + cy.get('.ProseMirror').trigger('keydown', { modKey: true, key: 'z' }) cy.get('.ProseMirror').should('not.contain', 'Mistake') - cy.get('.ProseMirror').trigger('keydown', { metaKey: true, shiftKey: true, key: 'z' }) + cy.get('.ProseMirror').trigger('keydown', { modKey: true, shiftKey: true, key: 'z' }) cy.get('.ProseMirror').should('contain', 'Mistake') }) }) diff --git a/docs/src/demos/Extensions/Italic/index.spec.js b/docs/src/demos/Extensions/Italic/index.spec.js index c5ff4dfa..5665d3e1 100644 --- a/docs/src/demos/Extensions/Italic/index.spec.js +++ b/docs/src/demos/Extensions/Italic/index.spec.js @@ -24,13 +24,13 @@ context('/api/extensions/italic', () => { }) it('the keyboard shortcut should make the selected text italic', () => { - cy.get('.ProseMirror').trigger('keydown', { metaKey: true, key: 'i' }) + cy.get('.ProseMirror').trigger('keydown', { modKey: true, key: 'i' }) cy.get('.ProseMirror').find('em').should('contain', 'Example Text') }) it('the keyboard shortcut should toggle the selected text italic', () => { - cy.get('.ProseMirror').trigger('keydown', { metaKey: true, key: 'i' }) - cy.get('.ProseMirror').trigger('keydown', { metaKey: true, key: 'i' }) + cy.get('.ProseMirror').trigger('keydown', { modKey: true, key: 'i' }) + cy.get('.ProseMirror').trigger('keydown', { modKey: true, key: 'i' }) cy.get('.ProseMirror em').should('not.exist') }) }) \ No newline at end of file diff --git a/docs/src/demos/Extensions/Strike/index.spec.js b/docs/src/demos/Extensions/Strike/index.spec.js index 2c88f656..c55d8bb0 100644 --- a/docs/src/demos/Extensions/Strike/index.spec.js +++ b/docs/src/demos/Extensions/Strike/index.spec.js @@ -24,13 +24,13 @@ context('/api/extensions/strike', () => { }) it('the keyboard shortcut should strike the selected text', () => { - cy.get('.ProseMirror').trigger('keydown', { metaKey: true, key: 'd' }) + cy.get('.ProseMirror').trigger('keydown', { modKey: true, key: 'd' }) cy.get('.ProseMirror').find('s').should('contain', 'Example Text') }) it('the keyboard shortcut should toggle the selected text striked', () => { - cy.get('.ProseMirror').trigger('keydown', { metaKey: true, key: 'd' }) - cy.get('.ProseMirror').trigger('keydown', { metaKey: true, key: 'd' }) + cy.get('.ProseMirror').trigger('keydown', { modKey: true, key: 'd' }) + cy.get('.ProseMirror').trigger('keydown', { modKey: true, key: 'd' }) cy.get('.ProseMirror s').should('not.exist') }) diff --git a/docs/src/demos/Extensions/Underline/index.spec.js b/docs/src/demos/Extensions/Underline/index.spec.js index 308c87bd..6b3eca4a 100644 --- a/docs/src/demos/Extensions/Underline/index.spec.js +++ b/docs/src/demos/Extensions/Underline/index.spec.js @@ -24,13 +24,13 @@ context('/api/extensions/underline', () => { }) it('the keyboard shortcut should underline the selected text', () => { - cy.get('.ProseMirror').trigger('keydown', { metaKey: true, key: 'u' }) + cy.get('.ProseMirror').trigger('keydown', { modKey: true, key: 'u' }) cy.get('.ProseMirror').find('u').should('contain', 'Example Text') }) it('the keyboard shortcut should toggle the selected text underline', () => { - cy.get('.ProseMirror').trigger('keydown', { metaKey: true, key: 'u' }) - cy.get('.ProseMirror').trigger('keydown', { metaKey: true, key: 'u' }) + cy.get('.ProseMirror').trigger('keydown', { modKey: true, key: 'u' }) + cy.get('.ProseMirror').trigger('keydown', { modKey: true, key: 'u' }) cy.get('.ProseMirror u').should('not.exist') }) }) \ No newline at end of file diff --git a/tests/cypress/support/commands.js b/tests/cypress/support/commands.js index ca4d256f..75dc3582 100644 --- a/tests/cypress/support/commands.js +++ b/tests/cypress/support/commands.js @@ -23,3 +23,21 @@ // // -- This will overwrite an existing command -- // Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... }) + +Cypress.Commands.overwrite('trigger', (originalFn, element, text, options) => { + if (text === 'keydown') { + const isMac = Cypress.platform === 'darwin' + const { modKey, ...rest } = options + + if (modKey) { + const newOptions = { + ...rest, + ...(isMac ? { metaKey: modKey } : { ctrlKey: modKey }), + } + + return originalFn(element, text, newOptions) + } + } + + return originalFn(element, text, options) +}) \ No newline at end of file