diff --git a/packages/frontend/core/src/pages/workspace/detail-page/detail-page.tsx b/packages/frontend/core/src/pages/workspace/detail-page/detail-page.tsx index 6d8ec19c0..9d7fdbe0c 100644 --- a/packages/frontend/core/src/pages/workspace/detail-page/detail-page.tsx +++ b/packages/frontend/core/src/pages/workspace/detail-page/detail-page.tsx @@ -181,8 +181,6 @@ const DetailPageImpl = memo(function DetailPageImpl() { const pageService = editorHost?.std.spec.getService('affine:page'); const disposable = new DisposableGroup(); - - doc.setMode(mode); if (pageService) { disposable.add( pageService.slots.docLinkClicked.on(({ docId, blockId }) => { @@ -204,15 +202,7 @@ const DetailPageImpl = memo(function DetailPageImpl() { disposable.dispose(); }; }, - [ - doc, - mode, - jumpToPageBlock, - docCollection.id, - openPage, - jumpToTag, - workspace.id, - ] + [jumpToPageBlock, docCollection.id, openPage, jumpToTag, workspace.id] ); return ( diff --git a/tests/affine-local/e2e/change-page-mode.spec.ts b/tests/affine-local/e2e/change-page-mode.spec.ts index cbe0a9a31..88e4bc464 100644 --- a/tests/affine-local/e2e/change-page-mode.spec.ts +++ b/tests/affine-local/e2e/change-page-mode.spec.ts @@ -1,4 +1,9 @@ import { test } from '@affine-test/kit/playwright'; +import { + ensureInEdgelessMode, + ensureInPageMode, + getPageMode, +} from '@affine-test/kit/utils/editor'; import { openHomePage } from '@affine-test/kit/utils/load-page'; import { clickNewPageButton, @@ -55,6 +60,40 @@ test('Switch to edgeless by switch edgeless item', async ({ page }) => { } }); +test('Quick Switch Doc Mode, Doc Mode should stable', async ({ page }) => { + await openHomePage(page); + await waitForEditorLoad(page); + await ensureInEdgelessMode(page); + await page.keyboard.down('Alt'); + await page.keyboard.down('S'); + await page.keyboard.up('S'); + await page.keyboard.up('Alt'); + + await page.keyboard.down('Alt'); + await page.keyboard.down('S'); + await page.keyboard.up('S'); + await page.keyboard.up('Alt'); + + await page.keyboard.down('Alt'); + await page.keyboard.down('S'); + await page.keyboard.up('S'); + await page.keyboard.up('Alt'); + + await page.keyboard.down('Alt'); + await page.keyboard.down('S'); + await page.keyboard.up('S'); + await page.keyboard.up('Alt'); + + await page.keyboard.down('Alt'); + await page.keyboard.down('S'); + await page.keyboard.up('S'); + await page.keyboard.up('Alt'); + + await ensureInPageMode(page); + await page.waitForTimeout(1000); + expect(await getPageMode(page)).toBe('page'); +}); + test('Convert to edgeless by editor header items', async ({ page }) => { await openHomePage(page); await waitForEditorLoad(page); diff --git a/tests/kit/utils/editor.ts b/tests/kit/utils/editor.ts index 1ce5feaee..51e12537d 100644 --- a/tests/kit/utils/editor.ts +++ b/tests/kit/utils/editor.ts @@ -19,3 +19,37 @@ export async function clickPageModeButton(page: Page) { page.locator('[data-testid="switch-page-mode-button"][data-active="true"]') ).toBeVisible(); } + +export async function ensureInPageMode(page: Page) { + await expect( + page.locator('[data-testid="switch-page-mode-button"][data-active="true"]') + ).toBeVisible(); +} + +export async function ensureInEdgelessMode(page: Page) { + await expect( + page.locator( + '[data-testid="switch-edgeless-mode-button"][data-active="true"]' + ) + ).toBeVisible(); +} + +export async function getPageMode(page: Page): Promise<'page' | 'edgeless'> { + if ( + await page + .locator('[data-testid="switch-page-mode-button"][data-active="true"]') + .isVisible() + ) { + return 'page'; + } + if ( + await page + .locator( + '[data-testid="switch-edgeless-mode-button"][data-active="true"]' + ) + .isVisible() + ) { + return 'edgeless'; + } + throw new Error('Unknown mode'); +}