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('')).toBeTruthy();
@@ -109,36 +114,20 @@ test.describe('ino-markdown-editor', () => {
HTML_TEXT_TAGS.forEach((tag) => expect(htmlValue).toContain(tag));
});
- test('should emit a valueChange on textarea blur', async ({ page }) => {
- await setupEditor(ViewMode.MARKDOWN);
+ test('should enter text in markdown mode', async ({ page }) => {
+ const { inoMarkdownEditor, textArea } = getDefaultLocators(page);
+ await setupEditor(inoMarkdownEditor,ViewMode.MARKDOWN);
const dummyText = '# Hallo Welt';
- const valueChangePromise = interceptCustomEvent(
- page,
- 'valueChange',
- );
-
await textArea.fill(dummyText);
await textArea.blur();
- expect(await valueChangePromise).toBe(dummyText);
- });
-
- test('should emit a valueChange on editor blur', async ({ page }) => {
- await setupEditor(ViewMode.PREVIEW);
- const dummyText = '# Hallo Welt';
- const valueChangePromise = interceptCustomEvent(
- page,
- 'valueChange',
- );
-
- await tipTapEditor.pressSequentially(dummyText);
- await tipTapEditor.blur();
- expect(await valueChangePromise).toBe(dummyText);
+ await expect(inoMarkdownEditor).toHaveText(dummyText);
});
- test('should change initial value', async () => {
+ test('should change initial value', async ({ page }) => {
const initialText = '# Hello World';
- await setupEditor(ViewMode.MARKDOWN, initialText);
+ const { inoMarkdownEditor, textArea } = getDefaultLocators(page);
+ await setupEditor(inoMarkdownEditor, ViewMode.MARKDOWN, initialText);
await expect(textArea).toHaveValue(initialText);
const newInitialText = '# Hello New Welt';
diff --git a/packages/storybook/src/stories/test-utils.ts b/packages/storybook/src/stories/test-utils.ts
index d3597c46f9..a588515caf 100644
--- a/packages/storybook/src/stories/test-utils.ts
+++ b/packages/storybook/src/stories/test-utils.ts
@@ -32,15 +32,3 @@ export async function setProperty(
value,
});
}
-
-export function interceptCustomEvent(page: Page, eventName: string) {
- return page.evaluate((eventName) => {
- return new Promise((resolve) => {
- const listener = (data: CustomEvent) => {
- document.removeEventListener(eventName, listener);
- resolve(data.detail);
- };
- document.addEventListener(eventName, listener);
- });
- }, eventName);
-}