AFFiNE/tests/affine-cloud/e2e/workspace.spec.ts

128 lines
3.5 KiB
TypeScript
Raw Normal View History

import { test } from '@affine-test/kit/playwright';
import {
addUserToWorkspace,
createRandomUser,
enableCloudWorkspace,
loginUser,
} from '@affine-test/kit/utils/cloud';
import { clickPageModeButton } from '@affine-test/kit/utils/editor';
import {
clickNewPageButton,
getBlockSuiteEditorTitle,
waitForEditorLoad,
waitForEmptyEditor,
} from '@affine-test/kit/utils/page-logic';
import {
openSettingModal,
openWorkspaceSettingPanel,
} from '@affine-test/kit/utils/setting';
import { createLocalWorkspace } from '@affine-test/kit/utils/workspace';
import { expect } from '@playwright/test';
let user: {
id: string;
name: string;
email: string;
password: string;
};
test.beforeEach(async ({ page }) => {
user = await createRandomUser();
chore: bump up electron version to v33 (#8495) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [electron](https://redirect.github.com/electron/electron) | [`^32.0.0` -> `^33.0.0`](https://renovatebot.com/diffs/npm/electron/32.1.2/33.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/electron/33.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/electron/33.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/electron/32.1.2/33.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/electron/32.1.2/33.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>electron/electron (electron)</summary> ### [`v33.0.0`](https://redirect.github.com/electron/electron/compare/v32.2.0...v33.0.0) [Compare Source](https://redirect.github.com/electron/electron/compare/v32.2.0...v33.0.0) ### [`v32.2.0`](https://redirect.github.com/electron/electron/releases/tag/v32.2.0): electron v32.2.0 [Compare Source](https://redirect.github.com/electron/electron/compare/v32.1.2...v32.2.0) ### Release Notes for v32.2.0 #### Fixes - Fixed a crash when calling `focus` on a `WebView`'s `webContents`. [#&#8203;43934](https://redirect.github.com/electron/electron/pull/43934) <span style="font-size:small;">(Also in [31](https://redirect.github.com/electron/electron/pull/43933), [33](https://redirect.github.com/electron/electron/pull/43932))</span> - Fixed a potential issue accessing a child window document when overriding browserWindow creation via `setWindowOpenHandler`. [#&#8203;43877](https://redirect.github.com/electron/electron/pull/43877) <span style="font-size:small;">(Also in [31](https://redirect.github.com/electron/electron/pull/43878), [33](https://redirect.github.com/electron/electron/pull/43816))</span> - Fixed an issue where an exception could be thrown on BrowserView after its owner BrowserWindow was closed. [#&#8203;44001](https://redirect.github.com/electron/electron/pull/44001) <span style="font-size:small;">(Also in [31](https://redirect.github.com/electron/electron/pull/43999), [33](https://redirect.github.com/electron/electron/pull/44000))</span> - Fixed closing a window with more than one attached sheet on macOS. [#&#8203;43954](https://redirect.github.com/electron/electron/pull/43954) <span style="font-size:small;">(Also in [31](https://redirect.github.com/electron/electron/pull/43953), [33](https://redirect.github.com/electron/electron/pull/43952))</span> - Fixed potential use-after-free during view removal on macOS. [#&#8203;43923](https://redirect.github.com/electron/electron/pull/43923) <span style="font-size:small;">(Also in [31](https://redirect.github.com/electron/electron/pull/43924), [33](https://redirect.github.com/electron/electron/pull/43922))</span> #### Other Changes - Ensured that the `sender-id` hint is set when creating desktop notifications on DBus. [#&#8203;43950](https://redirect.github.com/electron/electron/pull/43950) <span style="font-size:small;">(Also in [31](https://redirect.github.com/electron/electron/pull/43951), [33](https://redirect.github.com/electron/electron/pull/43949))</span> - Updated Chromium to 128.0.6613.178. [#&#8203;44086](https://redirect.github.com/electron/electron/pull/44086) - Updated Node.js to v20.18.0. [#&#8203;44116](https://redirect.github.com/electron/electron/pull/44116) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/toeverything/AFFiNE). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC4xMjAuMSIsInVwZGF0ZWRJblZlciI6IjM4LjEyMC4xIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2024-10-15 10:18:28 +03:00
await loginUser(page, user);
});
test('should have pagination in member list', async ({ page }) => {
await page.reload();
await waitForEditorLoad(page);
await createLocalWorkspace(
{
name: 'test',
},
page
);
await enableCloudWorkspace(page);
await clickNewPageButton(page);
const currentUrl = page.url();
// format: http://localhost:8080/workspace/${workspaceId}/xxx
const workspaceId = currentUrl.split('/')[4];
// create 10 user and add to workspace
const createUserAndAddToWorkspace = async () => {
const userB = await createRandomUser();
await addUserToWorkspace(workspaceId, userB.id, 1 /* READ */);
};
await Promise.all(
Array.from({ length: 10 })
.fill(1)
.map(() => createUserAndAddToWorkspace())
);
await openSettingModal(page);
await openWorkspaceSettingPanel(page, 'test');
await page.waitForTimeout(1000);
const firstPageMemberItemCount = await page
.locator('[data-testid="member-item"]')
.count();
expect(firstPageMemberItemCount).toBe(8);
const navigationItems = await page
.getByRole('navigation')
.getByRole('button')
.all();
// make sure the first member is the owner
await expect(page.getByTestId('member-item').first()).toContainText(
'Workspace Owner'
);
// There have four pagination items: < 1 2 >
expect(navigationItems.length).toBe(4);
// Click second page
await navigationItems[2].click();
await page.waitForTimeout(500);
// There should have other three members in second page
const secondPageMemberItemCount = await page
.locator('[data-testid="member-item"]')
.count();
expect(secondPageMemberItemCount).toBe(3);
// Click left arrow to back to first page
await navigationItems[0].click();
await page.waitForTimeout(500);
expect(await page.locator('[data-testid="member-item"]').count()).toBe(8);
// Click right arrow to second page
await navigationItems[3].click();
await page.waitForTimeout(500);
expect(await page.locator('[data-testid="member-item"]').count()).toBe(3);
});
test('should transform local favorites data', async ({ page }) => {
await page.reload();
await waitForEditorLoad(page);
await createLocalWorkspace(
{
name: 'test',
},
page
);
await page.getByTestId('explorer-bar-add-favorite-button').first().click();
await clickPageModeButton(page);
await waitForEmptyEditor(page);
await getBlockSuiteEditorTitle(page).fill('this is a new fav page');
await expect(
page
.getByTestId('explorer-favorites')
.locator('[draggable] >> text=this is a new fav page')
).toBeVisible();
await enableCloudWorkspace(page);
await expect(
page
.getByTestId('explorer-favorites')
.locator('[draggable] >> text=this is a new fav page')
).toBeVisible();
});