diff --git a/packages/elements/setupJest.ts b/packages/elements/setupJest.ts deleted file mode 100644 index c416cfa7d1..0000000000 --- a/packages/elements/setupJest.ts +++ /dev/null @@ -1,9 +0,0 @@ -jest.mock('@material/textfield'); - -(global as any).ClipboardEvent = jest.fn(); -(global as any).DragEvent = jest.fn(); -(global as any).MutationObserver = class { - constructor() {} - disconnect() {} - observe() {} -}; diff --git a/packages/elements/src/components/ino-markdown-editor/ino-markdown-editor.spec.ts b/packages/elements/src/components/ino-markdown-editor/ino-markdown-editor.spec.ts deleted file mode 100644 index ba94f82048..0000000000 --- a/packages/elements/src/components/ino-markdown-editor/ino-markdown-editor.spec.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { newSpecPage, SpecPage } from '@stencil/core/testing'; -import { MarkdownEditor } from './ino-markdown-editor'; -import { ViewMode } from '../types'; -import { Textarea } from '../ino-textarea/ino-textarea'; -import { Label } from '../ino-label/ino-label'; -import { listenForEvent } from '../../util/test-utils'; - -describe('InoMarkdownEditor', () => { - let page: SpecPage; - let inoMarkdownEditor: HTMLInoMarkdownEditorElement; - let textArea: HTMLTextAreaElement; - - beforeEach(async () => { - page = await newSpecPage({ - components: [MarkdownEditor, Textarea, Label], - html: '' - }); - - inoMarkdownEditor = page.body.querySelector('ino-markdown-editor'); - textArea = inoMarkdownEditor.querySelector('textarea'); - }); - - test('should emit a valueChange on textarea blur', async () => { - const dummyText = '# Hallo Welt'; - const { eventSpy, assertEventDetails} = listenForEvent(page, 'valueChange'); - - inoMarkdownEditor.setAttribute('view-mode', ViewMode.MARKDOWN); - await page.waitForChanges(); - - textArea.setAttribute('value', dummyText); - textArea.blur(); - await page.waitForChanges(); - - expect(eventSpy).toHaveBeenCalled(); - assertEventDetails(dummyText); - }); -}) diff --git a/packages/elements/stencil.config.ts b/packages/elements/stencil.config.ts index 408cf752f8..216adf3765 100644 --- a/packages/elements/stencil.config.ts +++ b/packages/elements/stencil.config.ts @@ -47,7 +47,4 @@ export const config: Config = { setupFilesAfterEnv: ['./setupSpecTests.ts'], }, preamble: 'Crafted with ❤ by inovex GmbH', - testing: { - setupFilesAfterEnv: ['./setupJest.ts'] - }, }; diff --git a/packages/storybook/src/stories/ino-markdown-editor/ino-markdown-editor.spec.ts b/packages/storybook/src/stories/ino-markdown-editor/ino-markdown-editor.spec.ts index cea809ca51..d794a953e2 100644 --- a/packages/storybook/src/stories/ino-markdown-editor/ino-markdown-editor.spec.ts +++ b/packages/storybook/src/stories/ino-markdown-editor/ino-markdown-editor.spec.ts @@ -1,5 +1,5 @@ -import { expect, Locator, test } from '@playwright/test'; -import { interceptCustomEvent, goToStory } from '../test-utils'; +import { expect, Locator, Page, test } from '@playwright/test'; +import { goToStory } from '../test-utils'; enum ViewMode { MARKDOWN = 'markdown', @@ -39,12 +39,7 @@ const HTML_TEXT_TAGS = [ ]; test.describe('ino-markdown-editor', () => { - let inoMarkdownEditor: Locator; - let textArea: Locator; - let tipTapEditor: Locator; - let textFormatToolbar: Locator; - - const setupEditor = (viewMode: ViewMode, text?: string) => + const setupEditor = (inoMarkdownEditor: Locator, viewMode: ViewMode, text?: string) => inoMarkdownEditor.evaluate( (editor, { viewMode, text }) => { editor.setAttribute('view-mode', viewMode); @@ -55,53 +50,63 @@ test.describe('ino-markdown-editor', () => { { viewMode, text }, ); + const getDefaultLocators = (page: Page) => { + const inoMarkdownEditor = page.locator('ino-markdown-editor'); + return { + inoMarkdownEditor, + textArea: inoMarkdownEditor.locator('textarea'), + tipTapEditor: inoMarkdownEditor.locator('.ProseMirror'), + textFormatToolbar: inoMarkdownEditor.locator('.toolbar__text-format'), + } + } + test.beforeEach(async ({ page }) => { await goToStory(page, ['Input', 'ino-markdown-editor', 'default']); - inoMarkdownEditor = page.locator('ino-markdown-editor'); - textArea = inoMarkdownEditor.locator('textarea'); - tipTapEditor = inoMarkdownEditor.locator('.ProseMirror'); - textFormatToolbar = inoMarkdownEditor.locator('.toolbar__text-format'); }); - test('should show preview mode correctly', async () => { - await setupEditor(ViewMode.PREVIEW); + test('should show preview mode correctly', async ({ page }) => { + const { inoMarkdownEditor, textArea, tipTapEditor, textFormatToolbar } = getDefaultLocators(page); + await setupEditor(inoMarkdownEditor, ViewMode.PREVIEW); await expect(textArea).not.toBeInViewport(); await expect(tipTapEditor).toBeInViewport(); await expect(textFormatToolbar).toBeInViewport(); }); - test('should show markdown mode correctly', async () => { - await setupEditor(ViewMode.MARKDOWN); + test('should show markdown mode correctly', async ({ page }) => { + const { inoMarkdownEditor, textArea, tipTapEditor, textFormatToolbar } = getDefaultLocators(page); + await setupEditor(inoMarkdownEditor, ViewMode.MARKDOWN); await expect(textArea).toBeInViewport(); await expect(tipTapEditor).not.toBeInViewport(); await expect(textFormatToolbar).not.toBeInViewport(); }); - test('should emit view mode change', async ({ page }) => { - await setupEditor(ViewMode.PREVIEW); + test('should change view mode', async ({ page }) => { + const { inoMarkdownEditor, textArea, tipTapEditor, textFormatToolbar } = getDefaultLocators(page); + await setupEditor(inoMarkdownEditor, ViewMode.MARKDOWN); const viewModeToolbar = inoMarkdownEditor.locator('.toolbar__view-mode'); await expect(viewModeToolbar).toHaveCount(2); - const getInterceptor = () => - interceptCustomEvent(page, 'viewModeChange'); - - const previewPromise = getInterceptor(); await (await viewModeToolbar.all())[0].click(); - expect(await previewPromise).toBe(ViewMode.PREVIEW); + await expect(textArea).not.toBeInViewport(); + await expect(tipTapEditor).toBeInViewport(); + await expect(textFormatToolbar).toBeInViewport(); - const markdownPromise = getInterceptor(); await (await viewModeToolbar.all())[1].click(); - expect(await markdownPromise).toBe(ViewMode.MARKDOWN); + await expect(textArea).toBeInViewport(); + await expect(tipTapEditor).not.toBeInViewport(); + await expect(textFormatToolbar).not.toBeInViewport(); }); - test('should display all text format buttons', async () => { - await setupEditor(ViewMode.PREVIEW); + test('should display all text format buttons', async ({ page }) => { + const { inoMarkdownEditor, textFormatToolbar } = getDefaultLocators(page); + await setupEditor(inoMarkdownEditor, ViewMode.PREVIEW); const buttons = textFormatToolbar.locator('.toolbar__action-button'); await expect(buttons).toHaveCount(11); }); - test('should show preview as html when set initial value property', async () => { - await setupEditor(ViewMode.MARKDOWN, MARKDOWN_TEXT); + test('should show preview as html when set initial value property', async ({ page }) => { + const { inoMarkdownEditor, tipTapEditor } = getDefaultLocators(page); + await setupEditor(inoMarkdownEditor,ViewMode.MARKDOWN, MARKDOWN_TEXT); const htmlValue = await tipTapEditor.innerHTML(); expect(htmlValue.includes('