diff --git a/packages/common/nbstore/src/impls/cloud/socket.ts b/packages/common/nbstore/src/impls/cloud/socket.ts index 95b5d5296..48be7b7b9 100644 --- a/packages/common/nbstore/src/impls/cloud/socket.ts +++ b/packages/common/nbstore/src/impls/cloud/socket.ts @@ -246,7 +246,7 @@ export class SocketConnection extends AutoReconnectConnection<{ }), new Promise((_resolve, reject) => { signal?.addEventListener('abort', () => { - reject(new Error('Aborted')); + reject(signal.reason); }); }), ]); diff --git a/packages/frontend/core/src/components/page-list/group-definitions.tsx b/packages/frontend/core/src/components/page-list/group-definitions.tsx index 6f85ca1bb..0ee3e392f 100644 --- a/packages/frontend/core/src/components/page-list/group-definitions.tsx +++ b/packages/frontend/core/src/components/page-list/group-definitions.tsx @@ -25,10 +25,7 @@ const GroupLabel = ({ }) => (
{icon} -
+
{label}
{` ยท ${count}`}
diff --git a/packages/frontend/core/src/utils/first-app-data.ts b/packages/frontend/core/src/utils/first-app-data.ts index eab1fda12..840d09124 100644 --- a/packages/frontend/core/src/utils/first-app-data.ts +++ b/packages/frontend/core/src/utils/first-app-data.ts @@ -7,6 +7,7 @@ import onboardingUrl from '@affine/templates/onboarding.zip'; import { ZipTransformer } from '@blocksuite/affine/widgets/linked-doc'; import { DocsService } from '../modules/doc'; +import { OrganizeService } from '../modules/organize'; import { getAFFiNEWorkspaceSchema, type WorkspacesService, @@ -35,13 +36,28 @@ export async function buildShowcaseWorkspace( const docsService = workspace.scope.get(DocsService); - // should jump to "Write, Draw, Plan all at Once." in edgeless by default + // should jump to "Getting Started" const defaultDoc = docsService.list.docs$.value.find(p => - p.title$.value.startsWith('Write, Draw, Plan all at Once.') + p.title$.value.startsWith('Getting Started') + ); + const folderTutorialDoc = docsService.list.docs$.value.find(p => + p.title$.value.startsWith('How to use folder and Tags') ); - if (defaultDoc) { - defaultDoc.setPrimaryMode('edgeless'); + // create default organize + if (folderTutorialDoc) { + const organizeService = workspace.scope.get(OrganizeService); + const folderId = organizeService.folderTree.rootFolder.createFolder( + 'First Folder', + organizeService.folderTree.rootFolder.indexAt('after') + ); + const firstFolderNode = + organizeService.folderTree.folderNode$(folderId).value; + firstFolderNode?.createLink( + 'doc', + folderTutorialDoc.id, + firstFolderNode.indexAt('after') + ); } dispose(); diff --git a/packages/frontend/templates/onboarding/onboarding.zip b/packages/frontend/templates/onboarding/onboarding.zip index a33ddf7e4..d04f02bb7 100644 Binary files a/packages/frontend/templates/onboarding/onboarding.zip and b/packages/frontend/templates/onboarding/onboarding.zip differ diff --git a/tests/affine-cloud/e2e/storage.spec.ts b/tests/affine-cloud/e2e/storage.spec.ts index 7a452aefc..f403e5c5c 100644 --- a/tests/affine-cloud/e2e/storage.spec.ts +++ b/tests/affine-cloud/e2e/storage.spec.ts @@ -31,11 +31,11 @@ test('should show blob management dialog', async ({ page }) => { await clickSideBarAllPageButton(page); - // delete the welcome page ('Write, draw, plan all at once.') + // delete the welcome page ('Getting Started') await page .getByTestId('page-list-item') .filter({ - has: page.getByText('Write, draw, plan all at once.'), + has: page.getByText('Getting Started'), }) .getByTestId('page-list-operation-button') .click(); @@ -47,8 +47,8 @@ test('should show blob management dialog', async ({ page }) => { await page.getByTestId('slider-bar-workspace-setting-button').click(); await expect(page.getByTestId('setting-modal')).toBeVisible(); await page.getByTestId('workspace-setting:storage').click(); - await expect(page.getByTestId('blob-preview-card')).toHaveCount(3); - await expect(page.getByText('Unused blobs (3)')).toBeVisible(); + await expect(page.getByTestId('blob-preview-card')).toHaveCount(9); + await expect(page.getByText('Unused blobs (14)')).toBeVisible(); await page.getByTestId('blob-preview-card').nth(0).click(); await expect(page.getByText('1 Selected')).toBeVisible(); @@ -57,5 +57,5 @@ test('should show blob management dialog', async ({ page }) => { await expect(page.getByText('Delete blob files')).toBeVisible(); await page.getByRole('button', { name: 'Delete' }).click(); - await expect(page.getByText('Unused blobs (2)')).toBeVisible(); + await expect(page.getByText('Unused blobs (13)')).toBeVisible(); }); diff --git a/tests/affine-desktop/e2e/tabs.spec.ts b/tests/affine-desktop/e2e/tabs.spec.ts index b4bfb2ae6..703b57227 100644 --- a/tests/affine-desktop/e2e/tabs.spec.ts +++ b/tests/affine-desktop/e2e/tabs.spec.ts @@ -70,7 +70,7 @@ test('Expand Sidebar', async ({ page }) => { }); test('tab title will change when navigating', async ({ page }) => { - await expectTabTitle(page, 0, 'Write, Draw, Plan all at Once'); + await expectTabTitle(page, 0, 'Getting Started'); // create new page await clickNewPageButton(page); diff --git a/tests/affine-local/e2e/all-page.spec.ts b/tests/affine-local/e2e/all-page.spec.ts index 8be210177..8e025c64c 100644 --- a/tests/affine-local/e2e/all-page.spec.ts +++ b/tests/affine-local/e2e/all-page.spec.ts @@ -329,11 +329,11 @@ test('click display button to group pages', async ({ page }) => { // the group header should appear await expect( - page.locator('[data-testid="group-label-favourited-1"]') + page.locator('[data-testid="group-label-favourited"]') ).toBeVisible(); await expect( - page.locator('[data-testid="group-label-notFavourited-1"]') + page.locator('[data-testid="group-label-notFavourited"]') ).toBeVisible(); }); diff --git a/tests/affine-local/e2e/blocksuite/edgeless/embed.spec.ts b/tests/affine-local/e2e/blocksuite/edgeless/embed.spec.ts index a144140dd..be9856781 100644 --- a/tests/affine-local/e2e/blocksuite/edgeless/embed.spec.ts +++ b/tests/affine-local/e2e/blocksuite/edgeless/embed.spec.ts @@ -27,15 +27,12 @@ test('should close embed editing modal when editor switching to page mode by sho page, }) => { await page.keyboard.press('@'); - await page - .getByTestId('cmdk-label') - .getByText('Write, Draw, Plan all at Once.') - .click(); + await page.getByTestId('cmdk-label').getByText('Getting Started').click(); const toolbar = locateToolbar(page); await toolbar.getByLabel('Edit').click(); const editingModal = page.locator('embed-card-edit-modal'); - expect(editingModal).toBeVisible(); + await expect(editingModal).toBeVisible(); await page.keyboard.press('Alt+s'); await waitForEditorLoad(page); diff --git a/tests/affine-local/e2e/change-page-mode.spec.ts b/tests/affine-local/e2e/change-page-mode.spec.ts index 183ca210e..165850883 100644 --- a/tests/affine-local/e2e/change-page-mode.spec.ts +++ b/tests/affine-local/e2e/change-page-mode.spec.ts @@ -27,35 +27,35 @@ 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.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 ensureInEdgelessMode(page); await page.waitForTimeout(1000); - expect(await getPageMode(page)).toBe('page'); + expect(await getPageMode(page)).toBe('edgeless'); }); test('default to edgeless by editor header items', async ({ page }) => { diff --git a/tests/affine-local/e2e/local-first-workspace-list.spec.ts b/tests/affine-local/e2e/local-first-workspace-list.spec.ts index f813f1d28..656c944bf 100644 --- a/tests/affine-local/e2e/local-first-workspace-list.spec.ts +++ b/tests/affine-local/e2e/local-first-workspace-list.spec.ts @@ -50,11 +50,11 @@ test('create one workspace in the workspace list', async ({ await clickSideBarAllPageButton(page); await page.waitForTimeout(2000); const result = await getPagesCount(page); - expect(result).toBe(1); + expect(result).toBe(2); await page.reload(); await page.waitForTimeout(4000); const result1 = await getPagesCount(page); - expect(result1).toBe(1); + expect(result1).toBe(2); const currentWorkspace = await workspace.current(); expect(currentWorkspace.meta.flavour).toContain('local'); diff --git a/tests/affine-local/e2e/quick-search.spec.ts b/tests/affine-local/e2e/quick-search.spec.ts index 6ef3363dd..f3b958aef 100644 --- a/tests/affine-local/e2e/quick-search.spec.ts +++ b/tests/affine-local/e2e/quick-search.spec.ts @@ -484,7 +484,7 @@ test('can use @ to open quick search to search for doc and insert into canvas', ).toBeVisible(); await expect( page.locator('.affine-embed-linked-doc-content-title') - ).toContainText('Write, Draw, Plan all at Once'); + ).toContainText('Getting Started'); // focus on the note block await page.waitForTimeout(500); @@ -514,7 +514,7 @@ test('can paste a doc link to create link reference', async ({ page }) => { // check the link reference await page.waitForTimeout(500); await expect( - page.locator('affine-reference:has-text("Write, Draw, Plan all at Once.")') + page.locator('affine-reference:has-text("Getting Started")') ).toBeVisible(); // can ctrl-z to revert to normal link diff --git a/tests/affine-mobile/e2e/detail.spec.ts b/tests/affine-mobile/e2e/detail.spec.ts index ba2faf545..7cdceb75f 100644 --- a/tests/affine-mobile/e2e/detail.spec.ts +++ b/tests/affine-mobile/e2e/detail.spec.ts @@ -14,7 +14,7 @@ test.beforeEach(async ({ page }) => { await expect(docsTab).toBeVisible(); await docsTab.click(); await page.getByTestId('doc-card').first().click(); - await expect(page.locator('.affine-edgeless-viewport')).toBeVisible(); + await expect(page.locator('.affine-page-viewport')).toBeVisible(); }); test('can open page view more menu', async ({ page }) => { @@ -22,12 +22,14 @@ test('can open page view more menu', async ({ page }) => { await expect(page.getByRole('dialog')).toBeVisible(); }); -test('switch to page mode', async ({ page }) => { +test('switch to edgeless mode', async ({ page }) => { await page.click('[data-testid="detail-page-header-more-button"]'); await expect(page.getByRole('dialog')).toBeVisible(); - await page.getByRole('menuitem', { name: 'Default to Page mode' }).click(); - await expect(page.locator('.doc-title-container')).toBeVisible(); + await page + .getByRole('menuitem', { name: 'Default to Edgeless mode' }) + .click(); + await expect(page.locator('.affine-edgeless-viewport')).toBeVisible(); }); test('can show doc info', async ({ page }) => { @@ -52,6 +54,6 @@ test('can add text property', async ({ page }) => { await page.getByTestId('mobile-menu-back-button').last().click(); await expect(page.getByTestId('mobile-menu-back-button')).toContainText( - 'Write, Draw, Plan all at Once' + 'How to use folder and Tags' ); }); diff --git a/tests/kit/src/mobile.ts b/tests/kit/src/mobile.ts index 96e7f1e3d..1a7f8d47d 100644 --- a/tests/kit/src/mobile.ts +++ b/tests/kit/src/mobile.ts @@ -14,7 +14,7 @@ export const test = baseTest.extend<{ page: async ({ page }, use) => { await page.goto('/'); await expect( - page.locator('.affine-page-viewport[data-mode="edgeless"]') + page.locator('.affine-page-viewport[data-mode="page"]') ).toBeVisible({ timeout: 30 * 1000, });