feat(core): replace onboarding template (#11768)
This commit is contained in:
@@ -246,7 +246,7 @@ export class SocketConnection extends AutoReconnectConnection<{
|
|||||||
}),
|
}),
|
||||||
new Promise<void>((_resolve, reject) => {
|
new Promise<void>((_resolve, reject) => {
|
||||||
signal?.addEventListener('abort', () => {
|
signal?.addEventListener('abort', () => {
|
||||||
reject(new Error('Aborted'));
|
reject(signal.reason);
|
||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
]);
|
]);
|
||||||
|
|||||||
@@ -25,10 +25,7 @@ const GroupLabel = ({
|
|||||||
}) => (
|
}) => (
|
||||||
<div className={styles.groupLabelWrapper}>
|
<div className={styles.groupLabelWrapper}>
|
||||||
{icon}
|
{icon}
|
||||||
<div
|
<div className={styles.groupLabel} data-testid={`group-label-${id}`}>
|
||||||
className={styles.groupLabel}
|
|
||||||
data-testid={`group-label-${id}-${count}`}
|
|
||||||
>
|
|
||||||
{label}
|
{label}
|
||||||
</div>
|
</div>
|
||||||
<div className={styles.pageCount}>{` · ${count}`}</div>
|
<div className={styles.pageCount}>{` · ${count}`}</div>
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import onboardingUrl from '@affine/templates/onboarding.zip';
|
|||||||
import { ZipTransformer } from '@blocksuite/affine/widgets/linked-doc';
|
import { ZipTransformer } from '@blocksuite/affine/widgets/linked-doc';
|
||||||
|
|
||||||
import { DocsService } from '../modules/doc';
|
import { DocsService } from '../modules/doc';
|
||||||
|
import { OrganizeService } from '../modules/organize';
|
||||||
import {
|
import {
|
||||||
getAFFiNEWorkspaceSchema,
|
getAFFiNEWorkspaceSchema,
|
||||||
type WorkspacesService,
|
type WorkspacesService,
|
||||||
@@ -35,13 +36,28 @@ export async function buildShowcaseWorkspace(
|
|||||||
|
|
||||||
const docsService = workspace.scope.get(DocsService);
|
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 =>
|
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) {
|
// create default organize
|
||||||
defaultDoc.setPrimaryMode('edgeless');
|
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();
|
dispose();
|
||||||
|
|||||||
Binary file not shown.
@@ -31,11 +31,11 @@ test('should show blob management dialog', async ({ page }) => {
|
|||||||
|
|
||||||
await clickSideBarAllPageButton(page);
|
await clickSideBarAllPageButton(page);
|
||||||
|
|
||||||
// delete the welcome page ('Write, draw, plan all at once.')
|
// delete the welcome page ('Getting Started')
|
||||||
await page
|
await page
|
||||||
.getByTestId('page-list-item')
|
.getByTestId('page-list-item')
|
||||||
.filter({
|
.filter({
|
||||||
has: page.getByText('Write, draw, plan all at once.'),
|
has: page.getByText('Getting Started'),
|
||||||
})
|
})
|
||||||
.getByTestId('page-list-operation-button')
|
.getByTestId('page-list-operation-button')
|
||||||
.click();
|
.click();
|
||||||
@@ -47,8 +47,8 @@ test('should show blob management dialog', async ({ page }) => {
|
|||||||
await page.getByTestId('slider-bar-workspace-setting-button').click();
|
await page.getByTestId('slider-bar-workspace-setting-button').click();
|
||||||
await expect(page.getByTestId('setting-modal')).toBeVisible();
|
await expect(page.getByTestId('setting-modal')).toBeVisible();
|
||||||
await page.getByTestId('workspace-setting:storage').click();
|
await page.getByTestId('workspace-setting:storage').click();
|
||||||
await expect(page.getByTestId('blob-preview-card')).toHaveCount(3);
|
await expect(page.getByTestId('blob-preview-card')).toHaveCount(9);
|
||||||
await expect(page.getByText('Unused blobs (3)')).toBeVisible();
|
await expect(page.getByText('Unused blobs (14)')).toBeVisible();
|
||||||
|
|
||||||
await page.getByTestId('blob-preview-card').nth(0).click();
|
await page.getByTestId('blob-preview-card').nth(0).click();
|
||||||
await expect(page.getByText('1 Selected')).toBeVisible();
|
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 expect(page.getByText('Delete blob files')).toBeVisible();
|
||||||
await page.getByRole('button', { name: 'Delete' }).click();
|
await page.getByRole('button', { name: 'Delete' }).click();
|
||||||
|
|
||||||
await expect(page.getByText('Unused blobs (2)')).toBeVisible();
|
await expect(page.getByText('Unused blobs (13)')).toBeVisible();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ test('Expand Sidebar', async ({ page }) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('tab title will change when navigating', 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
|
// create new page
|
||||||
await clickNewPageButton(page);
|
await clickNewPageButton(page);
|
||||||
|
|||||||
@@ -329,11 +329,11 @@ test('click display button to group pages', async ({ page }) => {
|
|||||||
|
|
||||||
// the group header should appear
|
// the group header should appear
|
||||||
await expect(
|
await expect(
|
||||||
page.locator('[data-testid="group-label-favourited-1"]')
|
page.locator('[data-testid="group-label-favourited"]')
|
||||||
).toBeVisible();
|
).toBeVisible();
|
||||||
|
|
||||||
await expect(
|
await expect(
|
||||||
page.locator('[data-testid="group-label-notFavourited-1"]')
|
page.locator('[data-testid="group-label-notFavourited"]')
|
||||||
).toBeVisible();
|
).toBeVisible();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -27,15 +27,12 @@ test('should close embed editing modal when editor switching to page mode by sho
|
|||||||
page,
|
page,
|
||||||
}) => {
|
}) => {
|
||||||
await page.keyboard.press('@');
|
await page.keyboard.press('@');
|
||||||
await page
|
await page.getByTestId('cmdk-label').getByText('Getting Started').click();
|
||||||
.getByTestId('cmdk-label')
|
|
||||||
.getByText('Write, Draw, Plan all at Once.')
|
|
||||||
.click();
|
|
||||||
const toolbar = locateToolbar(page);
|
const toolbar = locateToolbar(page);
|
||||||
await toolbar.getByLabel('Edit').click();
|
await toolbar.getByLabel('Edit').click();
|
||||||
|
|
||||||
const editingModal = page.locator('embed-card-edit-modal');
|
const editingModal = page.locator('embed-card-edit-modal');
|
||||||
expect(editingModal).toBeVisible();
|
await expect(editingModal).toBeVisible();
|
||||||
|
|
||||||
await page.keyboard.press('Alt+s');
|
await page.keyboard.press('Alt+s');
|
||||||
await waitForEditorLoad(page);
|
await waitForEditorLoad(page);
|
||||||
|
|||||||
@@ -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 }) => {
|
test('Quick Switch Doc Mode, Doc Mode should stable', async ({ page }) => {
|
||||||
await openHomePage(page);
|
await openHomePage(page);
|
||||||
await waitForEditorLoad(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 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);
|
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 }) => {
|
test('default to edgeless by editor header items', async ({ page }) => {
|
||||||
|
|||||||
@@ -50,11 +50,11 @@ test('create one workspace in the workspace list', async ({
|
|||||||
await clickSideBarAllPageButton(page);
|
await clickSideBarAllPageButton(page);
|
||||||
await page.waitForTimeout(2000);
|
await page.waitForTimeout(2000);
|
||||||
const result = await getPagesCount(page);
|
const result = await getPagesCount(page);
|
||||||
expect(result).toBe(1);
|
expect(result).toBe(2);
|
||||||
await page.reload();
|
await page.reload();
|
||||||
await page.waitForTimeout(4000);
|
await page.waitForTimeout(4000);
|
||||||
const result1 = await getPagesCount(page);
|
const result1 = await getPagesCount(page);
|
||||||
expect(result1).toBe(1);
|
expect(result1).toBe(2);
|
||||||
const currentWorkspace = await workspace.current();
|
const currentWorkspace = await workspace.current();
|
||||||
|
|
||||||
expect(currentWorkspace.meta.flavour).toContain('local');
|
expect(currentWorkspace.meta.flavour).toContain('local');
|
||||||
|
|||||||
@@ -484,7 +484,7 @@ test('can use @ to open quick search to search for doc and insert into canvas',
|
|||||||
).toBeVisible();
|
).toBeVisible();
|
||||||
await expect(
|
await expect(
|
||||||
page.locator('.affine-embed-linked-doc-content-title')
|
page.locator('.affine-embed-linked-doc-content-title')
|
||||||
).toContainText('Write, Draw, Plan all at Once');
|
).toContainText('Getting Started');
|
||||||
|
|
||||||
// focus on the note block
|
// focus on the note block
|
||||||
await page.waitForTimeout(500);
|
await page.waitForTimeout(500);
|
||||||
@@ -514,7 +514,7 @@ test('can paste a doc link to create link reference', async ({ page }) => {
|
|||||||
// check the link reference
|
// check the link reference
|
||||||
await page.waitForTimeout(500);
|
await page.waitForTimeout(500);
|
||||||
await expect(
|
await expect(
|
||||||
page.locator('affine-reference:has-text("Write, Draw, Plan all at Once.")')
|
page.locator('affine-reference:has-text("Getting Started")')
|
||||||
).toBeVisible();
|
).toBeVisible();
|
||||||
|
|
||||||
// can ctrl-z to revert to normal link
|
// can ctrl-z to revert to normal link
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ test.beforeEach(async ({ page }) => {
|
|||||||
await expect(docsTab).toBeVisible();
|
await expect(docsTab).toBeVisible();
|
||||||
await docsTab.click();
|
await docsTab.click();
|
||||||
await page.getByTestId('doc-card').first().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 }) => {
|
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();
|
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 page.click('[data-testid="detail-page-header-more-button"]');
|
||||||
await expect(page.getByRole('dialog')).toBeVisible();
|
await expect(page.getByRole('dialog')).toBeVisible();
|
||||||
|
|
||||||
await page.getByRole('menuitem', { name: 'Default to Page mode' }).click();
|
await page
|
||||||
await expect(page.locator('.doc-title-container')).toBeVisible();
|
.getByRole('menuitem', { name: 'Default to Edgeless mode' })
|
||||||
|
.click();
|
||||||
|
await expect(page.locator('.affine-edgeless-viewport')).toBeVisible();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('can show doc info', async ({ page }) => {
|
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 page.getByTestId('mobile-menu-back-button').last().click();
|
||||||
|
|
||||||
await expect(page.getByTestId('mobile-menu-back-button')).toContainText(
|
await expect(page.getByTestId('mobile-menu-back-button')).toContainText(
|
||||||
'Write, Draw, Plan all at Once'
|
'How to use folder and Tags'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ export const test = baseTest.extend<{
|
|||||||
page: async ({ page }, use) => {
|
page: async ({ page }, use) => {
|
||||||
await page.goto('/');
|
await page.goto('/');
|
||||||
await expect(
|
await expect(
|
||||||
page.locator('.affine-page-viewport[data-mode="edgeless"]')
|
page.locator('.affine-page-viewport[data-mode="page"]')
|
||||||
).toBeVisible({
|
).toBeVisible({
|
||||||
timeout: 30 * 1000,
|
timeout: 30 * 1000,
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user