universo-platform-2d

Форк
0
144 строки · 4.9 Кб
1
import { test } from '@affine-test/kit/electron';
2
import {
3
  clickNewPageButton,
4
  getBlockSuiteEditorTitle,
5
} from '@affine-test/kit/utils/page-logic';
6
import {
7
  clickSideBarCurrentWorkspaceBanner,
8
  clickSideBarSettingButton,
9
} from '@affine-test/kit/utils/sidebar';
10
import type { Page } from '@playwright/test';
11
import { expect } from '@playwright/test';
12

13
const historyShortcut = async (page: Page, command: 'goBack' | 'goForward') => {
14
  await page.keyboard.press(
15
    command === 'goBack' ? 'ControlOrMeta+[' : 'ControlOrMeta+]'
16
  );
17
};
18

19
test('new page', async ({ page, workspace }) => {
20
  await clickNewPageButton(page);
21
  const flavour = (await workspace.current()).meta.flavour;
22
  expect(flavour).toBe('local');
23
});
24

25
test('app sidebar router forward/back', async ({ page }) => {
26
  // create pages
27
  await page.waitForTimeout(500);
28
  await clickNewPageButton(page);
29
  const title = getBlockSuiteEditorTitle(page);
30
  await title.focus();
31
  await title.pressSequentially('test1', {
32
    delay: 100,
33
  });
34
  await page.waitForTimeout(500);
35
  await clickNewPageButton(page);
36

37
  await title.focus();
38
  await title.pressSequentially('test2', {
39
    delay: 100,
40
  });
41
  await page.waitForTimeout(500);
42
  await clickNewPageButton(page);
43
  await title.focus();
44
  await title.pressSequentially('test3', {
45
    delay: 100,
46
  });
47
  await expect(getBlockSuiteEditorTitle(page)).toHaveText('test3');
48

49
  await page.click('[data-testid="app-navigation-button-back"]');
50
  await page.click('[data-testid="app-navigation-button-back"]');
51
  await expect(getBlockSuiteEditorTitle(page)).toHaveText('test1');
52
  await page.click('[data-testid="app-navigation-button-forward"]');
53
  await page.click('[data-testid="app-navigation-button-forward"]');
54
  await expect(getBlockSuiteEditorTitle(page)).toHaveText('test3');
55
  await historyShortcut(page, 'goBack');
56
  await historyShortcut(page, 'goBack');
57
  await expect(getBlockSuiteEditorTitle(page)).toHaveText('test1');
58
  await historyShortcut(page, 'goForward');
59
  await historyShortcut(page, 'goForward');
60
  await expect(getBlockSuiteEditorTitle(page)).toHaveText('test3');
61
});
62

63
test('clientBorder value should disable by default on window', async ({
64
  page,
65
}) => {
66
  await clickSideBarSettingButton(page);
67
  await page.waitForTimeout(1000);
68
  const settingItem = page.locator(
69
    '[data-testid="client-border-style-trigger"]'
70
  );
71
  expect(await settingItem.locator('input').inputValue()).toEqual(
72
    process.platform === 'win32' ? 'off' : 'on'
73
  );
74
});
75

76
test('app theme', async ({ page, electronApp }) => {
77
  const root = page.locator('html');
78
  {
79
    const themeMode = await root.evaluate(element => element.dataset.theme);
80
    expect(themeMode).toBe('light');
81

82
    const theme = await electronApp.evaluate(({ nativeTheme }) => {
83
      return nativeTheme.shouldUseDarkColors ? 'dark' : 'light';
84
    });
85

86
    expect(theme).toBe('light');
87
  }
88

89
  {
90
    await page.getByTestId('settings-modal-trigger').click();
91
    await page.getByTestId('appearance-panel-trigger').click();
92
    await page.waitForTimeout(50);
93
    await page.getByTestId('dark-theme-trigger').click();
94
    const themeMode = await root.evaluate(element => element.dataset.theme);
95
    expect(themeMode).toBe('dark');
96
    const theme = await electronApp.evaluate(({ nativeTheme }) => {
97
      return nativeTheme.shouldUseDarkColors ? 'dark' : 'light';
98
    });
99
    expect(theme).toBe('dark');
100
  }
101
});
102

103
test('windows only check', async ({ page }) => {
104
  const windowOnlyUI = page.locator('[data-platform-target=win32]');
105
  if (process.platform === 'win32') {
106
    await expect(windowOnlyUI.first()).toBeVisible();
107
  } else {
108
    await expect(windowOnlyUI.first()).not.toBeVisible();
109
  }
110
});
111

112
test('delete workspace', async ({ page }) => {
113
  await clickNewPageButton(page);
114

115
  await clickSideBarCurrentWorkspaceBanner(page);
116
  await page.getByTestId('new-workspace').click();
117
  await page.getByTestId('create-workspace-input').fill('Delete Me');
118
  await page.getByTestId('create-workspace-create-button').click();
119
  // await page.getByTestId('create-workspace-continue-button').click({
120
  //   delay: 100,
121
  // });
122
  await page.waitForTimeout(1000);
123
  await clickSideBarSettingButton(page);
124
  await page.getByTestId('current-workspace-label').click();
125
  await expect(page.getByTestId('workspace-name-input')).toHaveValue(
126
    'Delete Me'
127
  );
128
  const contentElement = page.getByTestId('setting-modal-content');
129
  const boundingBox = await contentElement.boundingBox();
130
  if (!boundingBox) {
131
    throw new Error('boundingBox is null');
132
  }
133
  await page.mouse.move(
134
    boundingBox.x + boundingBox.width / 2,
135
    boundingBox.y + boundingBox.height / 2
136
  );
137
  await page.mouse.wheel(0, 500);
138
  await page.getByTestId('delete-workspace-button').click();
139
  await page.getByTestId('delete-workspace-input').fill('Delete Me');
140
  await page.getByTestId('delete-workspace-confirm-button').click();
141
  await expect(page.getByTestId('workspace-name')).toContainText(
142
    'Demo Workspace'
143
  );
144
});
145

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

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

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

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