universo-platform-2d
144 строки · 4.9 Кб
1import { test } from '@affine-test/kit/electron';
2import {
3clickNewPageButton,
4getBlockSuiteEditorTitle,
5} from '@affine-test/kit/utils/page-logic';
6import {
7clickSideBarCurrentWorkspaceBanner,
8clickSideBarSettingButton,
9} from '@affine-test/kit/utils/sidebar';
10import type { Page } from '@playwright/test';
11import { expect } from '@playwright/test';
12
13const historyShortcut = async (page: Page, command: 'goBack' | 'goForward') => {
14await page.keyboard.press(
15command === 'goBack' ? 'ControlOrMeta+[' : 'ControlOrMeta+]'
16);
17};
18
19test('new page', async ({ page, workspace }) => {
20await clickNewPageButton(page);
21const flavour = (await workspace.current()).meta.flavour;
22expect(flavour).toBe('local');
23});
24
25test('app sidebar router forward/back', async ({ page }) => {
26// create pages
27await page.waitForTimeout(500);
28await clickNewPageButton(page);
29const title = getBlockSuiteEditorTitle(page);
30await title.focus();
31await title.pressSequentially('test1', {
32delay: 100,
33});
34await page.waitForTimeout(500);
35await clickNewPageButton(page);
36
37await title.focus();
38await title.pressSequentially('test2', {
39delay: 100,
40});
41await page.waitForTimeout(500);
42await clickNewPageButton(page);
43await title.focus();
44await title.pressSequentially('test3', {
45delay: 100,
46});
47await expect(getBlockSuiteEditorTitle(page)).toHaveText('test3');
48
49await page.click('[data-testid="app-navigation-button-back"]');
50await page.click('[data-testid="app-navigation-button-back"]');
51await expect(getBlockSuiteEditorTitle(page)).toHaveText('test1');
52await page.click('[data-testid="app-navigation-button-forward"]');
53await page.click('[data-testid="app-navigation-button-forward"]');
54await expect(getBlockSuiteEditorTitle(page)).toHaveText('test3');
55await historyShortcut(page, 'goBack');
56await historyShortcut(page, 'goBack');
57await expect(getBlockSuiteEditorTitle(page)).toHaveText('test1');
58await historyShortcut(page, 'goForward');
59await historyShortcut(page, 'goForward');
60await expect(getBlockSuiteEditorTitle(page)).toHaveText('test3');
61});
62
63test('clientBorder value should disable by default on window', async ({
64page,
65}) => {
66await clickSideBarSettingButton(page);
67await page.waitForTimeout(1000);
68const settingItem = page.locator(
69'[data-testid="client-border-style-trigger"]'
70);
71expect(await settingItem.locator('input').inputValue()).toEqual(
72process.platform === 'win32' ? 'off' : 'on'
73);
74});
75
76test('app theme', async ({ page, electronApp }) => {
77const root = page.locator('html');
78{
79const themeMode = await root.evaluate(element => element.dataset.theme);
80expect(themeMode).toBe('light');
81
82const theme = await electronApp.evaluate(({ nativeTheme }) => {
83return nativeTheme.shouldUseDarkColors ? 'dark' : 'light';
84});
85
86expect(theme).toBe('light');
87}
88
89{
90await page.getByTestId('settings-modal-trigger').click();
91await page.getByTestId('appearance-panel-trigger').click();
92await page.waitForTimeout(50);
93await page.getByTestId('dark-theme-trigger').click();
94const themeMode = await root.evaluate(element => element.dataset.theme);
95expect(themeMode).toBe('dark');
96const theme = await electronApp.evaluate(({ nativeTheme }) => {
97return nativeTheme.shouldUseDarkColors ? 'dark' : 'light';
98});
99expect(theme).toBe('dark');
100}
101});
102
103test('windows only check', async ({ page }) => {
104const windowOnlyUI = page.locator('[data-platform-target=win32]');
105if (process.platform === 'win32') {
106await expect(windowOnlyUI.first()).toBeVisible();
107} else {
108await expect(windowOnlyUI.first()).not.toBeVisible();
109}
110});
111
112test('delete workspace', async ({ page }) => {
113await clickNewPageButton(page);
114
115await clickSideBarCurrentWorkspaceBanner(page);
116await page.getByTestId('new-workspace').click();
117await page.getByTestId('create-workspace-input').fill('Delete Me');
118await page.getByTestId('create-workspace-create-button').click();
119// await page.getByTestId('create-workspace-continue-button').click({
120// delay: 100,
121// });
122await page.waitForTimeout(1000);
123await clickSideBarSettingButton(page);
124await page.getByTestId('current-workspace-label').click();
125await expect(page.getByTestId('workspace-name-input')).toHaveValue(
126'Delete Me'
127);
128const contentElement = page.getByTestId('setting-modal-content');
129const boundingBox = await contentElement.boundingBox();
130if (!boundingBox) {
131throw new Error('boundingBox is null');
132}
133await page.mouse.move(
134boundingBox.x + boundingBox.width / 2,
135boundingBox.y + boundingBox.height / 2
136);
137await page.mouse.wheel(0, 500);
138await page.getByTestId('delete-workspace-button').click();
139await page.getByTestId('delete-workspace-input').fill('Delete Me');
140await page.getByTestId('delete-workspace-confirm-button').click();
141await expect(page.getByTestId('workspace-name')).toContainText(
142'Demo Workspace'
143);
144});
145