import { oneLineTrim, stripIndent } from 'common-tags'; import '../utils/dismiss-local-backup'; describe('Markdown widget', () => { before(() => { Cypress.config('defaultCommandTimeout', 4000); cy.task('setupBackend', { backend: 'test' }); cy.loginAndNewPost(); }); beforeEach(() => { cy.clearMarkdownEditorContent(); }); after(() => { cy.task('teardownBackend', { backend: 'test' }); }); describe('code block', () => { it('outputs code', () => { cy.insertCodeBlock() .type('foo') .enter() .type('bar') .confirmMarkdownEditorContent(` ${codeBlock(` foo bar `)} `) .clickModeToggle() .confirmMarkdownEditorContent(` ${codeBlockRaw(` foo bar `)} `) }) }) }) function codeBlockRaw(content) { return ['```', ...stripIndent(content).split('\n'), '```'].map(line => oneLineTrim` <div> <span> <span> <span>${line}</span> </span> </span> </div> `).join(''); } function codeBlock(content) { const lines = stripIndent(content).split('\n').map((line, idx) => ` <div> <div> <div>${idx + 1}</div> </div> <pre><span>${line}</span></pre> </div> `).join(''); return oneLineTrim` <div> <div><span><span><span><span></span><span></span></span></span></span></div> <div> <div> <div></div> <div> <div><label>Code Block </label> <div><button><span><svg> <path></path> </svg></span></button> <div> <div> <div><textarea></textarea></div> <div> <div></div> </div> <div> <div></div> </div> <div></div> <div></div> <div> <div> <div> <div> <div> <div> <pre><span>xxxxxxxxxx</span></pre> </div> <div></div> <div></div> <div> <div> </div> </div> <div> ${lines} </div> </div> </div> </div> </div> <div></div> <div> <div></div> </div> </div> </div> </div> </div> </div> </div> <div></div> </div> </div> </div> `; }