diff --git a/packages/app/src/components/Header/index.tsx b/packages/app/src/components/Header/index.tsx index acfc1028a..2c2eef848 100644 --- a/packages/app/src/components/Header/index.tsx +++ b/packages/app/src/components/Header/index.tsx @@ -117,6 +117,7 @@ export const Header = () => { /> { contactModalHandler(true); }} diff --git a/packages/app/src/components/contact-modal/index.tsx b/packages/app/src/components/contact-modal/index.tsx index 4ca23a4d0..d504db88f 100644 --- a/packages/app/src/components/contact-modal/index.tsx +++ b/packages/app/src/components/contact-modal/index.tsx @@ -76,7 +76,7 @@ type TransitionsModalProps = { export const ContactModal = ({ open, onClose }: TransitionsModalProps) => { return ( - + diff --git a/packages/app/src/components/editor-mode-switch/index.tsx b/packages/app/src/components/editor-mode-switch/index.tsx index 5154dbacb..d3d6777c9 100644 --- a/packages/app/src/components/editor-mode-switch/index.tsx +++ b/packages/app/src/components/editor-mode-switch/index.tsx @@ -51,7 +51,7 @@ const AnimateRadioItem = ({ ); return ( - + {isLeft ? icon : null} {label} @@ -95,7 +95,11 @@ export const EditorModeSwitch = ({ }, [isHover, mode]); return ( - + { { setShowContent(false); @@ -45,6 +46,7 @@ export const FAQ = () => { { setShowContent(false); @@ -58,7 +60,10 @@ export const FAQ = () => {
- + diff --git a/packages/app/src/components/shortcuts-modal/index.tsx b/packages/app/src/components/shortcuts-modal/index.tsx index 42559480f..752746ef2 100644 --- a/packages/app/src/components/shortcuts-modal/index.tsx +++ b/packages/app/src/components/shortcuts-modal/index.tsx @@ -34,7 +34,7 @@ export const ShortcutsModal = ({ open, onClose }: ModalProps) => { : windowsKeyboardShortcuts; return createPortal( - + <> diff --git a/playwright.config.ts b/playwright.config.ts index 8c2058205..b7338d528 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -31,6 +31,7 @@ const config: PlaywrightTestConfig = { workers: process.env.CI ? 1 : undefined, /* Reporter to use. See https://playwright.dev/docs/test-reporters */ reporter: 'list', + // reporter: 'html', /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ use: { /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */ diff --git a/tests/change-page-mode.spec.ts b/tests/change-page-mode.spec.ts new file mode 100644 index 000000000..3f05f7df5 --- /dev/null +++ b/tests/change-page-mode.spec.ts @@ -0,0 +1,38 @@ +import { test, expect } from '@playwright/test'; +import { loadPage } from './libs/load-page'; + +loadPage(); + +test.describe('Change page mode(Paper or Edgeless)', () => { + test('Switch to edgeless', async ({ page }) => { + const switcher = page.locator('[data-testid=editor-mode-switcher]'); + const box = await switcher.boundingBox(); + await expect(box?.x).not.toBeUndefined(); + + // mouse hover trigger animation for showing full switcher + await page.mouse.move((box?.x ?? 0) + 5, (box?.y ?? 0) + 5); + + const edgelessButton = page.locator( + '[data-testid=editor-mode-switcher] [title=Edgeless]' + ); + await edgelessButton.click(); + + // // mouse move to edgeless button + // await page.mouse.move( + // (box?.x ?? 0) + (box?.width ?? 0) - 5, + // (box?.y ?? 0) + 5 + // ); + + // await page.waitForTimeout(1000); + + // // click switcher + // await page.mouse.click( + // (box?.x ?? 0) + (box?.width ?? 0) - 5, + // (box?.y ?? 0) + 5 + // ); + + const edgelessDom = page.locator('edgeless-page-block'); + + await expect(await edgelessDom.isVisible()).toBe(true); + }); +}); diff --git a/tests/contact-us.spec.ts b/tests/contact-us.spec.ts new file mode 100644 index 000000000..531ee5d46 --- /dev/null +++ b/tests/contact-us.spec.ts @@ -0,0 +1,35 @@ +import { test, expect, type Page } from '@playwright/test'; +import { loadPage } from './libs/load-page'; + +loadPage(); + +test.describe('Open contact us', () => { + test('Click left-top corner Logo', async ({ page }) => { + const leftTopCorner = page.locator('[data-testid=left-top-corner-logo]'); + await leftTopCorner.click(); + + const contactUsModal = page.locator( + '[data-testid=contact-us-modal-content]' + ); + await expect(contactUsModal).toContainText('Join our community.'); + }); + + test('Click right-bottom corner contact icon', async ({ page }) => { + const faqIcon = page.locator('[data-testid=faq-icon]'); + const box = await faqIcon.boundingBox(); + await expect(box?.x).not.toBeUndefined(); + await page.mouse.move((box?.x ?? 0) + 5, (box?.y ?? 0) + 5); + + const rightBottomContactUs = page.locator( + '[data-testid=right-bottom-contact-us-icon]' + ); + await expect(await rightBottomContactUs.isVisible()).toEqual(true); + + await rightBottomContactUs.click(); + + const contactUsModal = page.locator( + '[data-testid=contact-us-modal-content]' + ); + await expect(contactUsModal).toContainText('Join our community.'); + }); +}); diff --git a/tests/libs/load-page.ts b/tests/libs/load-page.ts new file mode 100644 index 000000000..400e7a000 --- /dev/null +++ b/tests/libs/load-page.ts @@ -0,0 +1,9 @@ +import { test } from '@playwright/test'; + +export function loadPage() { + test.beforeEach(async ({ page }) => { + await page.goto('http://localhost:3000'); + // waiting for page loading end + await page.waitForTimeout(1000); + }); +} diff --git a/tests/shortcuts.spec.ts b/tests/shortcuts.spec.ts new file mode 100644 index 000000000..e6f353f89 --- /dev/null +++ b/tests/shortcuts.spec.ts @@ -0,0 +1,21 @@ +import { test, expect } from '@playwright/test'; +import { loadPage } from './libs/load-page'; + +loadPage(); + +test.describe('Shortcuts Modal', () => { + test('Open shortcuts modal', async ({ page }) => { + const faqIcon = page.locator('[data-testid=faq-icon]'); + const box = await faqIcon.boundingBox(); + await expect(box?.x).not.toBeUndefined(); + await page.mouse.move((box?.x ?? 0) + 5, (box?.y ?? 0) + 5); + + const shortcutsIcon = page.locator('[data-testid=shortcuts-icon]'); + await expect(await shortcutsIcon.isVisible()).toEqual(true); + + await shortcutsIcon.click(); + + const shortcutsModal = page.locator('[data-testid=shortcuts-modal]'); + await expect(shortcutsModal).toContainText('Keyboard Shortcuts'); + }); +}); diff --git a/tests/theme.spec.ts b/tests/theme.spec.ts index c2a5b1332..3b6cb6cd7 100644 --- a/tests/theme.spec.ts +++ b/tests/theme.spec.ts @@ -1,8 +1,7 @@ import { test, expect, type Page } from '@playwright/test'; +import { loadPage } from './libs/load-page'; -test.beforeEach(async ({ page }) => { - await page.goto('http://localhost:3000'); -}); +loadPage(); test.describe('Change Theme', () => { test('default white', async ({ page }) => { @@ -28,7 +27,7 @@ test.describe('Change Theme', () => { await expect(box?.x).not.toBeUndefined(); await page.mouse.move((box?.x ?? 0) + 5, (box?.y ?? 0) + 5); - await page.waitForTimeout(3000); + await page.waitForTimeout(1000); const darkButton = page.locator('[data-testid=change-theme-dark]'); const darkButtonPositionTop = await darkButton.evaluate(