import { describe, expect, it } from 'vitest' import { keyboard } from 'vitest-browser-commands/playwright' import { setupTest } from '../testing/index.ts' describe('defineHeadingKeymap', () => { it('should toggle heading', async () => { const { editor, n } = setupTest() const doc = n.doc(n.p('Foo'), n.p('Bar')) const docH1 = n.doc(n.h1('Foo'), n.p('Bar')) const docH3 = n.doc(n.h3('Foo'), n.p('Bar')) editor.set(doc) expect(editor.state.doc.toJSON()).toEqual(doc.toJSON()) await keyboard.press('ControlOrMeta+Alt+1') expect(editor.state.doc.toJSON()).toEqual(docH1.toJSON()) await keyboard.press('ControlOrMeta+Alt+1') expect(editor.state.doc.toJSON()).toEqual(doc.toJSON()) await keyboard.press('ControlOrMeta+Alt+3') expect(editor.state.doc.toJSON()).toEqual(docH3.toJSON()) await keyboard.press('ControlOrMeta+Alt+1') expect(editor.state.doc.toJSON()).toEqual(docH1.toJSON()) }) it('should unset heading by pressing Backspace', async () => { const { editor, n } = setupTest() const doc1 = n.doc(n.h1('')) const doc2 = n.doc(n.p('')) editor.set(doc1) expect(editor.state.doc.toJSON()).toEqual(doc1.toJSON()) await keyboard.press('Backspace') expect(editor.state.doc.toJSON()).toEqual(doc2.toJSON()) }) it('should unset heading by pressing Backspace around text', async () => { const { editor, n } = setupTest() const doc1 = n.doc(n.h1('Foo'), n.h1('Bar')) const doc2 = n.doc(n.h1('Foo'), n.p('Bar')) editor.set(doc1) expect(editor.state.doc.toJSON()).toEqual(doc1.toJSON()) await keyboard.press('Backspace') expect(editor.state.doc.toJSON()).toEqual(doc2.toJSON()) }) })