AFFiNE/tests/affine-desktop/e2e/basic.spec.ts
2024-07-29 11:05:24 +00:00

145 lines
4.9 KiB
TypeScript

import { test } from '@affine-test/kit/electron';
import {
clickNewPageButton,
getBlockSuiteEditorTitle,
} from '@affine-test/kit/utils/page-logic';
import {
clickSideBarCurrentWorkspaceBanner,
clickSideBarSettingButton,
} from '@affine-test/kit/utils/sidebar';
import type { Page } from '@playwright/test';
import { expect } from '@playwright/test';
const historyShortcut = async (page: Page, command: 'goBack' | 'goForward') => {
await page.keyboard.press(
command === 'goBack' ? 'ControlOrMeta+[' : 'ControlOrMeta+]'
);
};
test('new page', async ({ page, workspace }) => {
await clickNewPageButton(page);
const flavour = (await workspace.current()).meta.flavour;
expect(flavour).toBe('local');
});
test('app sidebar router forward/back', async ({ page }) => {
// create pages
await page.waitForTimeout(500);
await clickNewPageButton(page);
const title = getBlockSuiteEditorTitle(page);
await title.focus();
await title.pressSequentially('test1', {
delay: 100,
});
await page.waitForTimeout(500);
await clickNewPageButton(page);
await title.focus();
await title.pressSequentially('test2', {
delay: 100,
});
await page.waitForTimeout(500);
await clickNewPageButton(page);
await title.focus();
await title.pressSequentially('test3', {
delay: 100,
});
await expect(getBlockSuiteEditorTitle(page)).toHaveText('test3');
await page.click('[data-testid="app-navigation-button-back"]');
await page.click('[data-testid="app-navigation-button-back"]');
await expect(getBlockSuiteEditorTitle(page)).toHaveText('test1');
await page.click('[data-testid="app-navigation-button-forward"]');
await page.click('[data-testid="app-navigation-button-forward"]');
await expect(getBlockSuiteEditorTitle(page)).toHaveText('test3');
await historyShortcut(page, 'goBack');
await historyShortcut(page, 'goBack');
await expect(getBlockSuiteEditorTitle(page)).toHaveText('test1');
await historyShortcut(page, 'goForward');
await historyShortcut(page, 'goForward');
await expect(getBlockSuiteEditorTitle(page)).toHaveText('test3');
});
test('clientBorder value should disable by default on window', async ({
page,
}) => {
await clickSideBarSettingButton(page);
await page.waitForTimeout(1000);
const settingItem = page.locator(
'[data-testid="client-border-style-trigger"]'
);
expect(await settingItem.locator('input').inputValue()).toEqual(
process.platform === 'win32' ? 'off' : 'on'
);
});
test('app theme', async ({ page, electronApp }) => {
const root = page.locator('html');
{
const themeMode = await root.evaluate(element => element.dataset.theme);
expect(themeMode).toBe('light');
const theme = await electronApp.evaluate(({ nativeTheme }) => {
return nativeTheme.shouldUseDarkColors ? 'dark' : 'light';
});
expect(theme).toBe('light');
}
{
await page.getByTestId('settings-modal-trigger').click();
await page.getByTestId('appearance-panel-trigger').click();
await page.waitForTimeout(50);
await page.getByTestId('dark-theme-trigger').click();
const themeMode = await root.evaluate(element => element.dataset.theme);
expect(themeMode).toBe('dark');
const theme = await electronApp.evaluate(({ nativeTheme }) => {
return nativeTheme.shouldUseDarkColors ? 'dark' : 'light';
});
expect(theme).toBe('dark');
}
});
test('windows only check', async ({ page }) => {
const windowOnlyUI = page.locator('[data-platform-target=win32]');
if (process.platform === 'win32') {
await expect(windowOnlyUI.first()).toBeVisible();
} else {
await expect(windowOnlyUI.first()).not.toBeVisible();
}
});
test('delete workspace', async ({ page }) => {
await clickNewPageButton(page);
await clickSideBarCurrentWorkspaceBanner(page);
await page.getByTestId('new-workspace').click();
await page.getByTestId('create-workspace-input').fill('Delete Me');
await page.getByTestId('create-workspace-create-button').click();
// await page.getByTestId('create-workspace-continue-button').click({
// delay: 100,
// });
await page.waitForTimeout(1000);
await clickSideBarSettingButton(page);
await page.getByTestId('current-workspace-label').click();
await expect(page.getByTestId('workspace-name-input')).toHaveValue(
'Delete Me'
);
const contentElement = page.getByTestId('setting-modal-content');
const boundingBox = await contentElement.boundingBox();
if (!boundingBox) {
throw new Error('boundingBox is null');
}
await page.mouse.move(
boundingBox.x + boundingBox.width / 2,
boundingBox.y + boundingBox.height / 2
);
await page.mouse.wheel(0, 500);
await page.getByTestId('delete-workspace-button').click();
await page.getByTestId('delete-workspace-input').fill('Delete Me');
await page.getByTestId('delete-workspace-confirm-button').click();
await expect(page.getByTestId('workspace-name')).toContainText(
'Demo Workspace'
);
});