mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-15 00:56:26 +08:00
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) => {
|
||||
signal?.addEventListener('abort', () => {
|
||||
reject(new Error('Aborted'));
|
||||
reject(signal.reason);
|
||||
});
|
||||
}),
|
||||
]);
|
||||
|
||||
@@ -25,10 +25,7 @@ const GroupLabel = ({
|
||||
}) => (
|
||||
<div className={styles.groupLabelWrapper}>
|
||||
{icon}
|
||||
<div
|
||||
className={styles.groupLabel}
|
||||
data-testid={`group-label-${id}-${count}`}
|
||||
>
|
||||
<div className={styles.groupLabel} data-testid={`group-label-${id}`}>
|
||||
{label}
|
||||
</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 { 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();
|
||||
|
||||
Binary file not shown.
@@ -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();
|
||||
});
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 }) => {
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'
|
||||
);
|
||||
});
|
||||
|
||||
@@ -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,
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user