}
async function value(selector: string) {
- return await page.$eval(selector, (node: any) => node.value)
+ return await page.$eval(selector, (node: HTMLInputElement) => node.value)
+ }
+
+ async function html(selector: string) {
+ return await page.$eval(selector, node => node.innerHTML)
}
async function classList(selector: string) {
}
async function isChecked(selector: string) {
- return await page.$eval(selector, (node: any) => node.checked)
+ return await page.$eval(selector, (node: HTMLInputElement) => node.checked)
}
async function isFocused(selector: string) {
async function enterValue(selector: string, value: string) {
const el = (await page.$(selector))!
- await el.evaluate((node: any) => (node.value = ''))
+ await el.evaluate((node: HTMLInputElement) => (node.value = ''))
await el.type(value)
await el.press('Enter')
}
async function clearValue(selector: string) {
- return await page.$eval(selector, (node: any) => (node.value = ''))
+ return await page.$eval(
+ selector,
+ (node: HTMLInputElement) => (node.value = '')
+ )
}
return {
count,
text,
value,
+ html,
classList,
children,
isVisible,
--- /dev/null
+import path from 'path'
+import { setupPuppeteer } from './e2eUtils'
+
+describe('e2e: markdown', () => {
+ const { page, isVisible, value, html } = setupPuppeteer()
+
+ async function testMarkdown(apiType: 'classic' | 'composition') {
+ const baseUrl = `file://${path.resolve(
+ __dirname,
+ `../${apiType}/markdown.html`
+ )}`
+
+ await page().goto(baseUrl)
+ expect(await isVisible('#editor')).toBe(true)
+ expect(await value('textarea')).toBe('# hello')
+ expect(await html('#editor div')).toBe('<h1 id="hello">hello</h1>\n')
+
+ await page().type('textarea', '\n## foo\n\n- bar\n- baz')
+ // assert the output is not updated yet because of debounce
+ expect(await html('#editor div')).toBe('<h1 id="hello">hello</h1>\n')
+ await page().waitFor(500)
+ expect(await html('#editor div')).toBe(
+ '<h1 id="hello">hello</h1>\n' +
+ '<h2 id="foo">foo</h2>\n' +
+ '<ul>\n<li>bar</li>\n<li>baz</li>\n</ul>\n'
+ )
+ }
+
+ test('classic', async () => {
+ await testMarkdown('classic')
+ })
+
+ test('composition', async () => {
+ await testMarkdown('composition')
+ })
+})