universo-platform-2d
101 строка · 3.1 Кб
1import path from 'node:path';2
3import type { apis } from '@affine/electron-api';4import { test } from '@affine-test/kit/electron';5import { getBlockSuiteEditorTitle } from '@affine-test/kit/utils/page-logic';6import {7clickNewPageButton,8clickSideBarCurrentWorkspaceBanner,9} from '@affine-test/kit/utils/sidebar';10import { expect } from '@playwright/test';11import fs from 'fs-extra';12
13declare global {14interface Window {15__apis: typeof apis;16}17}
18
19test('check workspace has a DB file', async ({ appInfo, workspace }) => {20const w = await workspace.current();21const dbPath = path.join(22appInfo.sessionData,23'workspaces',24w.meta.id,25'storage.db'26);27// check if db file exists28expect(await fs.exists(dbPath)).toBe(true);29});30
31test('export then add', async ({ page, appInfo, workspace }) => {32await clickNewPageButton(page);33const w = await workspace.current();34
35await getBlockSuiteEditorTitle(page).fill('test1');36
37await page.getByTestId('slider-bar-workspace-setting-button').click();38await expect(page.getByTestId('setting-modal')).toBeVisible();39
40const originalId = w.meta.id;41
42const newWorkspaceName = 'new-test-name';43
44// goto workspace setting45await page.getByTestId('workspace-list-item').click();46const input = page.getByTestId('workspace-name-input');47await expect(input).toBeVisible();48
49// change workspace name50await input.fill(newWorkspaceName);51await page.getByTestId('save-workspace-name').click();52await page.waitForSelector('text="Update workspace name success"');53
54const tmpPath = path.join(appInfo.sessionData, w.meta.id + '-tmp.db');55
56// export db file to tmp folder57await page.evaluate(tmpPath => {58return window.__apis?.dialog.setFakeDialogResult({59filePath: tmpPath,60});61}, tmpPath);62
63await page.getByTestId('export-affine-backup').click();64await page.waitForSelector('text="Export success"');65await page.waitForTimeout(1000);66expect(await fs.exists(tmpPath)).toBe(true);67
68await page.getByTestId('modal-close-button').click();69
70// add workspace71// we are reusing the same db file so that we don't need to maintain one72// in the codebase73await clickSideBarCurrentWorkspaceBanner(page);74
75await page.evaluate(tmpPath => {76return window.__apis?.dialog.setFakeDialogResult({77filePath: tmpPath,78});79}, tmpPath);80
81// load the db file82await page.getByTestId('add-workspace').click();83
84// should show "Added Successfully" dialog85// await page.waitForSelector('text="Added Successfully"');86// await page.getByTestId('create-workspace-continue-button').click();87
88// sleep for a while to wait for the workspace to be added :D89await page.waitForTimeout(2000);90const newWorkspace = await workspace.current();91expect(newWorkspace.meta.id).not.toBe(originalId);92// check its name is correct93await expect(page.getByTestId('workspace-name')).toHaveText(newWorkspaceName);94
95// find button which has the title "test1"96const test1PageButton = await page.waitForSelector(`text="test1"`);97await test1PageButton.click();98
99const title = page.locator('[data-block-is-title] >> text="test1"');100await expect(title).toBeVisible();101});102