universo-platform-2d

Форк
0
101 строка · 3.1 Кб
1
import path from 'node:path';
2

3
import type { apis } from '@affine/electron-api';
4
import { test } from '@affine-test/kit/electron';
5
import { getBlockSuiteEditorTitle } from '@affine-test/kit/utils/page-logic';
6
import {
7
  clickNewPageButton,
8
  clickSideBarCurrentWorkspaceBanner,
9
} from '@affine-test/kit/utils/sidebar';
10
import { expect } from '@playwright/test';
11
import fs from 'fs-extra';
12

13
declare global {
14
  interface Window {
15
    __apis: typeof apis;
16
  }
17
}
18

19
test('check workspace has a DB file', async ({ appInfo, workspace }) => {
20
  const w = await workspace.current();
21
  const dbPath = path.join(
22
    appInfo.sessionData,
23
    'workspaces',
24
    w.meta.id,
25
    'storage.db'
26
  );
27
  // check if db file exists
28
  expect(await fs.exists(dbPath)).toBe(true);
29
});
30

31
test('export then add', async ({ page, appInfo, workspace }) => {
32
  await clickNewPageButton(page);
33
  const w = await workspace.current();
34

35
  await getBlockSuiteEditorTitle(page).fill('test1');
36

37
  await page.getByTestId('slider-bar-workspace-setting-button').click();
38
  await expect(page.getByTestId('setting-modal')).toBeVisible();
39

40
  const originalId = w.meta.id;
41

42
  const newWorkspaceName = 'new-test-name';
43

44
  // goto workspace setting
45
  await page.getByTestId('workspace-list-item').click();
46
  const input = page.getByTestId('workspace-name-input');
47
  await expect(input).toBeVisible();
48

49
  // change workspace name
50
  await input.fill(newWorkspaceName);
51
  await page.getByTestId('save-workspace-name').click();
52
  await page.waitForSelector('text="Update workspace name success"');
53

54
  const tmpPath = path.join(appInfo.sessionData, w.meta.id + '-tmp.db');
55

56
  // export db file to tmp folder
57
  await page.evaluate(tmpPath => {
58
    return window.__apis?.dialog.setFakeDialogResult({
59
      filePath: tmpPath,
60
    });
61
  }, tmpPath);
62

63
  await page.getByTestId('export-affine-backup').click();
64
  await page.waitForSelector('text="Export success"');
65
  await page.waitForTimeout(1000);
66
  expect(await fs.exists(tmpPath)).toBe(true);
67

68
  await page.getByTestId('modal-close-button').click();
69

70
  // add workspace
71
  // we are reusing the same db file so that we don't need to maintain one
72
  // in the codebase
73
  await clickSideBarCurrentWorkspaceBanner(page);
74

75
  await page.evaluate(tmpPath => {
76
    return window.__apis?.dialog.setFakeDialogResult({
77
      filePath: tmpPath,
78
    });
79
  }, tmpPath);
80

81
  // load the db file
82
  await page.getByTestId('add-workspace').click();
83

84
  // should show "Added Successfully" dialog
85
  // 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 :D
89
  await page.waitForTimeout(2000);
90
  const newWorkspace = await workspace.current();
91
  expect(newWorkspace.meta.id).not.toBe(originalId);
92
  // check its name is correct
93
  await expect(page.getByTestId('workspace-name')).toHaveText(newWorkspaceName);
94

95
  // find button which has the title "test1"
96
  const test1PageButton = await page.waitForSelector(`text="test1"`);
97
  await test1PageButton.click();
98

99
  const title = page.locator('[data-block-is-title] >> text="test1"');
100
  await expect(title).toBeVisible();
101
});
102

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.