diff --git a/tests/change-page-mode.spec.ts b/tests/change-page-mode.spec.ts index dabb50a54a..381d4ecab0 100644 --- a/tests/change-page-mode.spec.ts +++ b/tests/change-page-mode.spec.ts @@ -7,7 +7,7 @@ test.describe('Change page mode(Paper or Edgeless)', () => { test('Switch to edgeless by switch edgeless item', async ({ page }) => { const switcher = page.locator('[data-testid=editor-mode-switcher]'); const box = await switcher.boundingBox(); - await expect(box?.x).not.toBeUndefined(); + 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); @@ -15,7 +15,6 @@ test.describe('Change page mode(Paper or Edgeless)', () => { // await page.waitForTimeout(1000); const edgelessButton = page.getByTestId('switch-edgeless-item'); // page.getByText('Edgeless').click() - await edgelessButton.click(); // // mouse move to edgeless button @@ -32,9 +31,8 @@ test.describe('Change page mode(Paper or Edgeless)', () => { // (box?.y ?? 0) + 5 // ); - const edgelessDom = page.locator('affine-edgeless-page'); - - await expect(await edgelessDom.isVisible()).toBe(true); + const edgeless = page.locator('affine-edgeless-page'); + expect(await edgeless.isVisible()).toBe(true); }); test('Convert to edgeless by editor header items', async ({ page }) => { @@ -44,11 +42,9 @@ test.describe('Change page mode(Paper or Edgeless)', () => { .nth(2) .click(); const menusEdgelessItem = page.getByTestId('editor-option-menu-edgeless'); - await menusEdgelessItem.click(); - const edgelessDom = page.locator('affine-edgeless-page'); - - await expect(await edgelessDom.isVisible()).toBe(true); + const edgeless = page.locator('affine-edgeless-page'); + expect(await edgeless.isVisible()).toBe(true); }); }); diff --git a/tests/contact-us.spec.ts b/tests/contact-us.spec.ts index 2b865a1d2c..9afa5f3a40 100644 --- a/tests/contact-us.spec.ts +++ b/tests/contact-us.spec.ts @@ -1,4 +1,4 @@ -import { test, expect, type Page } from '@playwright/test'; +import { test, expect } from '@playwright/test'; import { loadPage } from './libs/load-page'; loadPage(); @@ -7,9 +7,8 @@ test.describe('Open contact us', () => { test('Click about us', async ({ page }) => { const currentWorkspace = page.getByTestId('current-workspace'); await currentWorkspace.click(); - page.waitForTimeout(1000); + // await page.waitForTimeout(1000); await page.getByText('About AFFiNE').click(); - const contactUsModal = page.locator( '[data-testid=contact-us-modal-content]' ); @@ -18,16 +17,16 @@ test.describe('Open contact us', () => { 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) + 10, (box?.y ?? 0) + 10); + expect(box?.x).not.toBeUndefined(); + await page.mouse.move((box?.x ?? 0) + 10, (box?.y ?? 0) + 10); + 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); + expect(await rightBottomContactUs.isVisible()).toEqual(true); await rightBottomContactUs.click(); - const contactUsModal = page.locator( '[data-testid=contact-us-modal-content]' ); diff --git a/tests/exception-page.spec.ts b/tests/exception-page.spec.ts index d8bdf10a41..5cf5ea9f4e 100644 --- a/tests/exception-page.spec.ts +++ b/tests/exception-page.spec.ts @@ -8,8 +8,7 @@ test.describe('exception page', () => { test('visit 404 page', async ({ page }) => { await page.goto('http://localhost:8080/404'); await page.waitForTimeout(1000); - const notFoundTipDom = await page.getByText('404 - Page Not Found'); - - await expect(await notFoundTipDom.isVisible()).toBe(true); + const notFoundTip = page.getByText('404 - Page Not Found'); + expect(await notFoundTip.isVisible()).toBe(true); }); }); diff --git a/tests/invite-code-page.spec.ts b/tests/invite-code-page.spec.ts index 73ab9b32fd..9cb7ba09ac 100644 --- a/tests/invite-code-page.spec.ts +++ b/tests/invite-code-page.spec.ts @@ -8,9 +8,6 @@ test.describe('invite code page', () => { test('the link has expired', async ({ page }) => { await page.goto('http://localhost:8080//invite/abc'); await page.waitForTimeout(1000); - - await expect( - await page.getByText('The link has expired') - ).not.toBeUndefined(); + expect(page.getByText('The link has expired')).not.toBeUndefined(); }); }); diff --git a/tests/layout.spec.ts b/tests/layout.spec.ts index 2c8db3cb02..5b5b804d7f 100644 --- a/tests/layout.spec.ts +++ b/tests/layout.spec.ts @@ -1,4 +1,4 @@ -import { test, expect, type Page } from '@playwright/test'; +import { test, expect } from '@playwright/test'; import { loadPage } from './libs/load-page'; loadPage(); @@ -6,25 +6,20 @@ loadPage(); test.describe('Layout ui', () => { test('Collapse Sidebar', async ({ page }) => { await page.getByTestId('sliderBar-arrowButton').click(); - - const sliderBarArea = await page.getByText( + const sliderBarArea = page.getByText( 'Quick search All pagesFavouritesNo item Import Trash New Page' ); - await expect(sliderBarArea).not.toBeVisible(); }); test('Expand Sidebar', async ({ page }) => { await page.getByTestId('sliderBar-arrowButton').click(); - - const sliderBarArea = await page.getByText( + const sliderBarArea = page.getByText( 'Quick search All pagesFavouritesNo item Import Trash New Page' ); - await expect(sliderBarArea).not.toBeVisible(); await page.getByTestId('sliderBar-arrowButton').click(); - await expect(sliderBarArea).toBeVisible(); }); }); diff --git a/tests/libs/keyboard.ts b/tests/libs/keyboard.ts index 0c7e94a576..8da69c9818 100644 --- a/tests/libs/keyboard.ts +++ b/tests/libs/keyboard.ts @@ -1,8 +1,6 @@ import type { Page } from '@playwright/test'; const IS_MAC = process.platform === 'darwin'; -// const IS_WINDOWS = process.platform === 'win32'; -// const IS_LINUX = !IS_MAC && !IS_WINDOWS; async function keyDownCtrlOrMeta(page: Page) { if (IS_MAC) { @@ -19,21 +17,6 @@ async function keyUpCtrlOrMeta(page: Page) { await page.keyboard.up('Control'); } } -async function keyDownOptionMeta(page: Page) { - if (IS_MAC) { - await page.keyboard.down('Alt'); - } else { - await page.keyboard.down('Shift'); - } -} - -async function keyUpOptionMeta(page: Page) { - if (IS_MAC) { - await page.keyboard.up('Alt'); - } else { - await page.keyboard.up('Shift'); - } -} // It's not good enough, but better than calling keyDownCtrlOrMeta and keyUpCtrlOrMeta separately export const withCtrlOrMeta = async (page: Page, fn: () => Promise) => { diff --git a/tests/local-first-delete-page.spec.ts b/tests/local-first-delete-page.spec.ts index 0a38ce25e1..0ec72e3bdc 100644 --- a/tests/local-first-delete-page.spec.ts +++ b/tests/local-first-delete-page.spec.ts @@ -8,29 +8,21 @@ test.describe('Local first delete page', () => { await page.getByText('New Page').click(); await page.getByPlaceholder('Title').click(); await page.getByPlaceholder('Title').fill('this is a new page to delete'); - await page.getByRole('link', { name: 'All pages' }).click(); - - const cell = await page.getByRole('cell', { + const cell = page.getByRole('cell', { name: 'this is a new page to delete', }); - expect(cell).not.toBeUndefined(); await cell.click(); - await page .getByTestId('editor-header-items') .getByRole('button') .nth(2) .click(); - const deleteBtn = page.getByTestId('editor-option-menu-delete'); - await deleteBtn.click(); - const confirmTip = page.getByText('Delete page?'); - expect(confirmTip).not.toBeUndefined(); }); @@ -42,11 +34,9 @@ test.describe('Local first delete page', () => { await page.getByPlaceholder('Title').fill('this is a new page to delete'); const newPageId = page.url().split('/').reverse()[0]; await page.getByRole('link', { name: 'All pages' }).click(); - - const cell = await page.getByRole('cell', { + const cell = page.getByRole('cell', { name: 'this is a new page to delete', }); - expect(cell).not.toBeUndefined(); await page @@ -54,13 +44,9 @@ test.describe('Local first delete page', () => { .getByRole('button') .first() .click(); - const deleteBtn = page.getByRole('button', { name: 'Delete' }); - await deleteBtn.click(); - const confirmTip = page.getByText('Delete page?'); - expect(confirmTip).not.toBeUndefined(); }); }); diff --git a/tests/local-first-export-page.spec.ts b/tests/local-first-export-page.spec.ts index d3217f8ef7..fbf7a19357 100644 --- a/tests/local-first-export-page.spec.ts +++ b/tests/local-first-export-page.spec.ts @@ -10,34 +10,27 @@ test.describe('Local first export page', () => { await page .getByPlaceholder('Title') .fill('this is a new page to export html content'); - await page.getByRole('link', { name: 'All pages' }).click(); - const cell = await page.getByRole('cell', { + const cell = page.getByRole('cell', { name: 'this is a new page to export html content', }); - expect(cell).not.toBeUndefined(); await cell.click(); - await page .getByTestId('editor-header-items') .getByRole('button') .nth(2) .click(); - const exportParentBtn = page.getByRole('tooltip', { name: 'Add to favourites Convert to Edgeless Export Delete', }); - await exportParentBtn.click(); - const [download] = await Promise.all([ page.waitForEvent('download'), page.getByRole('button', { name: 'Export to HTML' }).click(), ]); - expect(download.suggestedFilename()).toBe( 'this is a new page to export html content.html' ); @@ -49,34 +42,26 @@ test.describe('Local first export page', () => { await page .getByPlaceholder('Title') .fill('this is a new page to export markdown content'); - await page.getByRole('link', { name: 'All pages' }).click(); - - const cell = await page.getByRole('cell', { + const cell = page.getByRole('cell', { name: 'this is a new page to export markdown content', }); - expect(cell).not.toBeUndefined(); await cell.click(); - await page .getByTestId('editor-header-items') .getByRole('button') .nth(2) .click(); - const exportParentBtn = page.getByRole('tooltip', { name: 'Add to favourites Convert to Edgeless Export Delete', }); - await exportParentBtn.click(); - const [download] = await Promise.all([ page.waitForEvent('download'), page.getByRole('button', { name: 'Export to Markdown' }).click(), ]); - expect(download.suggestedFilename()).toBe( 'this is a new page to export markdown content.md' ); diff --git a/tests/local-first-favorite-page.spec.ts b/tests/local-first-favorite-page.spec.ts index 2441c669b3..864178d434 100644 --- a/tests/local-first-favorite-page.spec.ts +++ b/tests/local-first-favorite-page.spec.ts @@ -8,25 +8,19 @@ test.describe('Local first favorite page', () => { await page.getByText('New Page').click(); await page.getByPlaceholder('Title').click(); await page.getByPlaceholder('Title').fill('this is a new page to favorite'); - await page.getByRole('link', { name: 'All pages' }).click(); - - const cell = await page.getByRole('cell', { + const cell = page.getByRole('cell', { name: 'this is a new page to favorite', }); - expect(cell).not.toBeUndefined(); await cell.click(); - await page .getByTestId('editor-header-items') .getByRole('button') .nth(2) .click(); - const favoriteBtn = page.getByTestId('editor-option-menu-favorite'); - await favoriteBtn.click(); }); @@ -35,17 +29,12 @@ test.describe('Local first favorite page', () => { await page.getByPlaceholder('Title').click(); await page.getByPlaceholder('Title').fill('this is a new page to favorite'); const newPageId = page.url().split('/').reverse()[0]; - await page.getByRole('link', { name: 'All pages' }).click(); - - const cell = await page.getByRole('cell', { + const cell = page.getByRole('cell', { name: 'this is a new page to favorite', }); - expect(cell).not.toBeUndefined(); - await cell.click(); - await page .getByTestId('editor-header-items') .getByRole('button') @@ -53,13 +42,10 @@ test.describe('Local first favorite page', () => { .click(); const favoriteBtn = page.getByTestId('editor-option-menu-favorite'); - await favoriteBtn.click(); - - const favoriteListItemInSidebar = await page.getByTestId( + const favoriteListItemInSidebar = page.getByTestId( 'favorite-list-item-' + newPageId ); - expect(await favoriteListItemInSidebar.textContent()).toBe( 'this is a new page to favorite' ); @@ -69,17 +55,12 @@ test.describe('Local first favorite page', () => { await page.getByText('New Page').click(); await page.getByPlaceholder('Title').click(); await page.getByPlaceholder('Title').fill('this is a new page to favorite'); - await page.getByRole('link', { name: 'All pages' }).click(); - - const cell = await page.getByRole('cell', { + const cell = page.getByRole('cell', { name: 'this is a new page to favorite', }); - expect(cell).not.toBeUndefined(); - await cell.click(); - await page .getByTestId('editor-header-items') .getByRole('button') @@ -87,13 +68,11 @@ test.describe('Local first favorite page', () => { .click(); const favoriteBtn = page.getByTestId('editor-option-menu-favorite'); - await favoriteBtn.click(); await page.getByRole('link', { name: 'Favourites' }).click(); - expect( - await page.getByRole('cell', { name: 'this is a new page to favorite' }) + page.getByRole('cell', { name: 'this is a new page to favorite' }) ).not.toBeUndefined(); }); @@ -101,17 +80,13 @@ test.describe('Local first favorite page', () => { await page.getByText('New Page').click(); await page.getByPlaceholder('Title').click(); await page.getByPlaceholder('Title').fill('this is a new page to favorite'); - await page.getByRole('link', { name: 'All pages' }).click(); - - const cell = await page.getByRole('cell', { + const cell = page.getByRole('cell', { name: 'this is a new page to favorite', }); - expect(cell).not.toBeUndefined(); await cell.click(); - await page .getByTestId('editor-header-items') .getByRole('button') @@ -119,24 +94,22 @@ test.describe('Local first favorite page', () => { .click(); const favoriteBtn = page.getByTestId('editor-option-menu-favorite'); - await favoriteBtn.click(); // expect it in favorite list await page.getByRole('link', { name: 'Favourites' }).click(); expect( - await page.getByRole('cell', { name: 'this is a new page to favorite' }) + page.getByRole('cell', { name: 'this is a new page to favorite' }) ).not.toBeUndefined(); // cancel favorite await page.getByRole('link', { name: 'All pages' }).click(); - await page.getByTestId('favourited-icon').click(); - //expect it not in favorite list + // expect it not in favorite list await page.getByRole('link', { name: 'Favourites' }).click(); expect( - await page.getByText( + page.getByText( 'Tips: Click Add to Favourites/Trash and the page will appear here.' ) ).not.toBeUndefined(); diff --git a/tests/local-first-new-page.spec.ts b/tests/local-first-new-page.spec.ts index 404db70ff5..a43ab40bdb 100644 --- a/tests/local-first-new-page.spec.ts +++ b/tests/local-first-new-page.spec.ts @@ -8,7 +8,6 @@ test.describe('Local first new page', () => { const originPageUrl = page.url(); await page.getByText('New Page').click(); const newPageUrl = page.url(); - expect(newPageUrl).not.toBe(originPageUrl); expect(newPageUrl.length).toBe(originPageUrl.length); }); @@ -17,11 +16,8 @@ test.describe('Local first new page', () => { await page.getByText('New Page').click(); await page.getByPlaceholder('Title').click(); await page.getByPlaceholder('Title').fill('this is a new page'); - await page.getByRole('link', { name: 'All pages' }).click(); - - const cell = await page.getByRole('cell', { name: 'this is a new page' }); - + const cell = page.getByRole('cell', { name: 'this is a new page' }); expect(cell).not.toBeUndefined(); }); }); diff --git a/tests/local-first-workspace.spec.ts b/tests/local-first-workspace.spec.ts index ddda645a51..f3c1ba9e1c 100644 --- a/tests/local-first-workspace.spec.ts +++ b/tests/local-first-workspace.spec.ts @@ -5,12 +5,12 @@ loadPage(); test.describe('Local first default workspace', () => { test('Default workspace name', async ({ page }) => { - const workspaceName = await page.getByTestId('workspace-name'); + const workspaceName = page.getByTestId('workspace-name'); expect(await workspaceName.textContent()).toBe('AFFiNE'); }); test('Default workspace avatar', async ({ page }) => { - const workspaceAvatar = await page.getByTestId('workspace-avatar'); + const workspaceAvatar = page.getByTestId('workspace-avatar'); expect(await workspaceAvatar.innerHTML()).toBe( '' ); diff --git a/tests/login.spec.ts b/tests/login.spec.ts index 9e837033eb..b519bffa21 100644 --- a/tests/login.spec.ts +++ b/tests/login.spec.ts @@ -1,4 +1,4 @@ -import { test, expect, type Page } from '@playwright/test'; +import { test, expect } from '@playwright/test'; import { loadPage } from './libs/load-page'; loadPage(); @@ -39,8 +39,6 @@ test.describe('Login Flow', () => { .click(), ]); - expect(await firebasePage.url()).toContain( - '.firebaseapp.com/__/auth/handler' - ); + expect(firebasePage.url()).toContain('.firebaseapp.com/__/auth/handler'); }); }); diff --git a/tests/quick-search.spec.ts b/tests/quick-search.spec.ts index b49b1a0f63..e4466cba40 100644 --- a/tests/quick-search.spec.ts +++ b/tests/quick-search.spec.ts @@ -3,9 +3,6 @@ import { loadPage } from './libs/load-page'; import { withCtrlOrMeta } from './libs/keyboard'; loadPage(); -const IS_MAC = process.platform === 'darwin'; -// const IS_WINDOWS = process.platform === 'win32'; -// const IS_LINUX = !IS_MAC && !IS_WINDOWS; const openQuickSearchByShortcut = async (page: Page) => await withCtrlOrMeta(page, () => page.keyboard.press('k', { delay: 50 })); @@ -44,6 +41,7 @@ test.describe('Open quick search', () => { const quickSearch = page.locator('[data-testid=quickSearch]'); await expect(quickSearch).toBeVisible(); }); + test('Click arrowDown icon after title', async ({ page }) => { //header-quickSearchButton const quickSearchButton = page.locator( @@ -53,6 +51,7 @@ test.describe('Open quick search', () => { const quickSearch = page.locator('[data-testid=quickSearch]'); await expect(quickSearch).toBeVisible(); }); + test('Press the shortcut key cmd+k', async ({ page }) => { await openQuickSearchByShortcut(page); const quickSearch = page.locator('[data-testid=quickSearch]'); @@ -61,13 +60,14 @@ test.describe('Open quick search', () => { }); test.describe('Add new page in quick search', () => { - //TODO FIXME: This test is not working + // FIXME: not working test.skip('Create a new page without keyword', async ({ page }) => { await openQuickSearchByShortcut(page); const addNewPage = page.locator('[data-testid=quickSearch-addNewPage]'); await addNewPage.click(); await assertTitleTexts(page, [''], { delay: 50 }); }); + test.skip('Create a new page with keyword', async ({ page }) => { await openQuickSearchByShortcut(page); await page.keyboard.insertText('test'); @@ -95,6 +95,7 @@ test.describe('Search and select', () => { await openQuickSearchByShortcut(page); await page.keyboard.insertText('Welcome'); await assertResultList(page, ['Welcome to the AFFiNE Alpha', 'Welcome']); + await page.keyboard.press('ArrowDown', { delay: 50 }); await page.keyboard.press('Enter', { delay: 50 }); await assertTitleTexts(page, ['Welcome'], { diff --git a/tests/shortcuts.spec.ts b/tests/shortcuts.spec.ts index e6f353f892..fd6b2d1d79 100644 --- a/tests/shortcuts.spec.ts +++ b/tests/shortcuts.spec.ts @@ -7,14 +7,13 @@ 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(); + 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); + 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 3b6cb6cd76..c9e8ccbfaa 100644 --- a/tests/theme.spec.ts +++ b/tests/theme.spec.ts @@ -1,4 +1,4 @@ -import { test, expect, type Page } from '@playwright/test'; +import { test, expect } from '@playwright/test'; import { loadPage } from './libs/load-page'; loadPage(); @@ -9,14 +9,13 @@ test.describe('Change Theme', () => { const themeMode = await root.evaluate(element => window.getComputedStyle(element).getPropertyValue('--affine-theme-mode') ); - - await expect(themeMode).toBe('light'); + expect(themeMode).toBe('light'); const lightButton = page.locator('[data-testid=change-theme-light]'); const buttonPositionTop = await lightButton.evaluate( element => window.getComputedStyle(element).top ); - await expect(buttonPositionTop).toBe('0px'); + expect(buttonPositionTop).toBe('0px'); }); test('change theme to dark', async ({ page }) => { @@ -24,24 +23,21 @@ test.describe('Change Theme', () => { '[data-testid=change-theme-container]' ); const box = await changeThemeContainer.boundingBox(); - await expect(box?.x).not.toBeUndefined(); + expect(box?.x).not.toBeUndefined(); + await page.mouse.move((box?.x ?? 0) + 5, (box?.y ?? 0) + 5); - await page.waitForTimeout(1000); - const darkButton = page.locator('[data-testid=change-theme-dark]'); const darkButtonPositionTop = await darkButton.evaluate( element => element.getBoundingClientRect().y ); - await expect(darkButtonPositionTop).toBe(box?.y); + expect(darkButtonPositionTop).toBe(box?.y); await page.mouse.click((box?.x ?? 0) + 5, (box?.y ?? 0) + 5); - const root = page.locator('html'); const themeMode = await root.evaluate(element => window.getComputedStyle(element).getPropertyValue('--affine-theme-mode') ); - - await expect(themeMode).toBe('dark'); + expect(themeMode).toBe('dark'); }); });