// in cypress/support/index.d.ts // load type definitions that come with Cypress module /// import type { EditorConfig, OutputData } from './../../../types/index'; import type EditorJS from '../../../types/index' declare global { namespace Cypress { interface Chainable { /** * Custom command to select DOM element by data-cy attribute. * @param editorConfig - config to pass to the editor * @example cy.createEditor({}) */ createEditor(editorConfig: EditorConfig): Chainable /** * Paste command to dispatch paste event * * @usage * cy.get('div').paste({'text/plain': 'Text', 'text/html': 'Text'}) * * @param data - map with MIME type as a key and data as value */ paste(data: {[type: string]: string}): Chainable /** * Copy command to dispatch copy event on subject * * @usage * cy.get('div').copy().then(data => {}) */ copy(): Chainable; /** * Cut command to dispatch cut event on subject * * @usage * cy.get('div').cut().then(data => {}) */ cut(): Chainable; /** * Calls EditorJS API render method * * @param data — data to render */ render(data: OutputData): Chainable; /** * Select passed text in element * Note. Previous subject should have 'textNode' as firstChild * * Usage * cy.get('[data-cy=editorjs]') * .find('.ce-paragraph') * .selectText('block te') * * @param text - text to select */ selectText(text: string): Chainable; } interface ApplicationWindow { EditorJS: typeof EditorJS } } /** * Chai plugins */ namespace Chai { interface Assertion { /** * "containSubset" object properties matcher */ containSubset(subset: any): Assertion; } } }