Merge pull request #16 from ueberdosis/feature/add-typescript-support-to-cypress

add typescript support to cypress to enable unit testing
This commit is contained in:
Philipp Kühn
2020-09-30 19:37:38 +02:00
committed by GitHub
8 changed files with 56 additions and 8 deletions

View File

@@ -12,6 +12,7 @@ export { default as nodeInputRule } from './src/inputRules/nodeInputRule'
export { default as markInputRule } from './src/inputRules/markInputRule' export { default as markInputRule } from './src/inputRules/markInputRule'
export { default as markPasteRule } from './src/pasteRules/markPasteRule' export { default as markPasteRule } from './src/pasteRules/markPasteRule'
export { default as capitalize } from './src/utils/capitalize'
export { default as getSchema } from './src/utils/getSchema' export { default as getSchema } from './src/utils/getSchema'
export { default as generateHtml } from './src/utils/generateHtml' export { default as generateHtml } from './src/utils/generateHtml'
export { default as getHtmlFromFragment } from './src/utils/getHtmlFromFragment' export { default as getHtmlFromFragment } from './src/utils/getHtmlFromFragment'

View File

@@ -10,6 +10,7 @@ import getMarkAttrs from './utils/getMarkAttrs'
import removeElement from './utils/removeElement' import removeElement from './utils/removeElement'
import getSchemaTypeByName from './utils/getSchemaTypeByName' import getSchemaTypeByName from './utils/getSchemaTypeByName'
import getHtmlFromFragment from './utils/getHtmlFromFragment' import getHtmlFromFragment from './utils/getHtmlFromFragment'
import createStyleTag from './utils/createStyleTag'
import CommandManager from './CommandManager' import CommandManager from './CommandManager'
import ExtensionManager from './ExtensionManager' import ExtensionManager from './ExtensionManager'
import EventEmitter from './EventEmitter' import EventEmitter from './EventEmitter'
@@ -18,6 +19,7 @@ import Node from './Node'
import Mark from './Mark' import Mark from './Mark'
import defaultPlugins from './plugins' import defaultPlugins from './plugins'
import * as coreCommands from './commands' import * as coreCommands from './commands'
import style from './style'
export type Command = (props: { export type Command = (props: {
editor: Editor, editor: Editor,
@@ -118,10 +120,7 @@ export class Editor extends EventEmitter {
this.extensionManager.resolveConfigs() this.extensionManager.resolveConfigs()
this.createView() this.createView()
this.registerCommands(coreCommands) this.registerCommands(coreCommands)
this.injectCSS()
if (this.options.injectCSS) {
require('./style.css')
}
this.proxy.focus(this.options.autoFocus) this.proxy.focus(this.options.autoFocus)
} }
@@ -143,6 +142,15 @@ export class Editor extends EventEmitter {
return this.commandManager.createChain() return this.commandManager.createChain()
} }
/**
* Inject CSS styles.
*/
private injectCSS() {
if (this.options.injectCSS && document) {
this.css = createStyleTag(style)
}
}
/** /**
* Update editor options. * Update editor options.
* *

View File

@@ -1,4 +1,4 @@
.ProseMirror { const style = `.ProseMirror {
position: relative; position: relative;
} }
@@ -49,4 +49,6 @@
.ProseMirror-focused .ProseMirror-gapcursor { .ProseMirror-focused .ProseMirror-gapcursor {
display: block; display: block;
} }`
export default style

View File

@@ -0,0 +1,8 @@
export default function createStyleTag(style: string): HTMLStyleElement {
const styleNode = document.createElement('style')
styleNode.innerHTML = style
document.getElementsByTagName('head')[0].appendChild(styleNode)
return styleNode
}

View File

@@ -1,7 +1,7 @@
{ {
"baseUrl": "http://localhost:3000", "baseUrl": "http://localhost:3000",
"integrationFolder": "../docs/src/", "integrationFolder": "../",
"testFiles": "**/*.spec.js", "testFiles": "{docs,tests}/**/*.spec.{js,ts}",
"viewportWidth": 1280, "viewportWidth": 1280,
"viewportHeight": 1280 "viewportHeight": 1280
} }

View File

@@ -0,0 +1,11 @@
/// <reference types="cypress" />
import { capitalize } from '@tiptap/core'
describe('capitalize test', () => {
it('capitalize a word', () => {
const capitalized = capitalize('test')
expect(capitalized).to.eq('Test')
})
})

View File

@@ -0,0 +1,5 @@
describe('example test', () => {
it('should work', () => {
expect('<p>Example Text</p>').to.eq('<p>Example Text</p>')
})
})

View File

@@ -0,0 +1,13 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"noEmit": false,
"sourceMap": false,
"types": [
"cypress",
],
},
"include": [
"./*/*.ts"
]
}