mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-13 04:48:53 +00:00
60
tests/affine-mobile/e2e/settings.spec.ts
Normal file
60
tests/affine-mobile/e2e/settings.spec.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
import { test } from '@affine-test/kit/mobile';
|
||||
import { expect, type Page } from '@playwright/test';
|
||||
|
||||
const openSettings = async (page: Page) => {
|
||||
await page.getByTestId('settings-button').click();
|
||||
await expect(page.getByRole('dialog')).toBeVisible();
|
||||
await expect(page.locator('header:has-text("Settings")')).toBeVisible();
|
||||
};
|
||||
|
||||
test('can open settings', async ({ page }) => {
|
||||
await openSettings(page);
|
||||
});
|
||||
|
||||
test('can change theme', async ({ page }) => {
|
||||
await openSettings(page);
|
||||
await page
|
||||
.getByTestId('setting-row')
|
||||
.filter({
|
||||
hasText: 'Color mode',
|
||||
})
|
||||
.getByTestId('dropdown-select-trigger')
|
||||
.click();
|
||||
|
||||
await expect(
|
||||
page.getByRole('dialog').filter({
|
||||
has: page.getByRole('menuitem', { name: 'Light' }),
|
||||
})
|
||||
).toBeVisible();
|
||||
|
||||
await page.getByRole('menuitem', { name: 'Dark' }).click();
|
||||
|
||||
await expect(page.locator('html')).toHaveAttribute('data-theme', 'dark');
|
||||
});
|
||||
|
||||
test('can close change theme popover by clicking outside', async ({ page }) => {
|
||||
await openSettings(page);
|
||||
await page
|
||||
.getByTestId('setting-row')
|
||||
.filter({
|
||||
hasText: 'Color mode',
|
||||
})
|
||||
.getByTestId('dropdown-select-trigger')
|
||||
.click();
|
||||
|
||||
const themePopover = page.getByRole('dialog').filter({
|
||||
has: page.getByRole('menuitem', { name: 'Light' }),
|
||||
});
|
||||
|
||||
await expect(themePopover).toBeVisible();
|
||||
|
||||
// get a mouse position that is 10px offset to the top of theme popover
|
||||
// and click
|
||||
const mousePosition = await themePopover.boundingBox();
|
||||
if (!mousePosition) {
|
||||
throw new Error('theme popover is not visible');
|
||||
}
|
||||
await page.mouse.click(mousePosition.x, mousePosition.y - 10);
|
||||
|
||||
await expect(themePopover).not.toBeVisible();
|
||||
});
|
||||
@@ -10,19 +10,21 @@ const config: PlaywrightTestConfig = {
|
||||
timeout: process.env.CI ? 60_000 : 30_000,
|
||||
outputDir: testResultDir,
|
||||
projects: [
|
||||
{
|
||||
name: 'Mobile Safari',
|
||||
use: {
|
||||
...devices['iPhone 14'],
|
||||
},
|
||||
},
|
||||
process.env.CI
|
||||
? {
|
||||
name: 'Mobile Safari',
|
||||
use: {
|
||||
...devices['iPhone 14'],
|
||||
},
|
||||
}
|
||||
: undefined,
|
||||
{
|
||||
name: 'Mobile Chrome',
|
||||
use: {
|
||||
...devices['Pixel 5'],
|
||||
},
|
||||
},
|
||||
],
|
||||
].filter(config => config !== undefined),
|
||||
expect: {
|
||||
timeout: process.env.CI ? 15_000 : 5_000,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user