export const activeEditorLine = () => { // wait for the selection to be in the editor content DOM cy.window().then(win => { cy.get('.cm-content').should($el => { const contentNode = $el.get(0) const range = win.getSelection()?.getRangeAt(0) expect(range?.intersectsNode(contentNode)).to.be.true }) }) // find the closest line block ancestor of the selection return cy.window().then(win => { const activeNode = win.getSelection()?.focusNode if (!activeNode) { return cy.wrap(null) } // use the parent element if this is a node, e.g. text const activeElement = ( 'closest' in activeNode ? activeNode : activeNode.parentElement ) as HTMLElement | undefined return cy.wrap(activeElement?.closest('.cm-line')) }) }