mirror of
https://github.com/toeverything/AFFiNE.git
synced 2024-12-22 09:51:35 +03:00
3d3a66c3ed
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`. [#​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`. [#​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. [#​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. [#​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. [#​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. [#​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. [#​44086](https://redirect.github.com/electron/electron/pull/44086) - Updated Node.js to v20.18.0. [#​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==-->
157 lines
4.0 KiB
TypeScript
157 lines
4.0 KiB
TypeScript
import { test } from '@affine-test/kit/playwright';
|
|
import {
|
|
createRandomUser,
|
|
deleteUser,
|
|
enableCloudWorkspace,
|
|
loginUser,
|
|
runPrisma,
|
|
} from '@affine-test/kit/utils/cloud';
|
|
import {
|
|
getBlockSuiteEditorTitle,
|
|
waitForEditorLoad,
|
|
} from '@affine-test/kit/utils/page-logic';
|
|
import { createLocalWorkspace } from '@affine-test/kit/utils/workspace';
|
|
import type { Page } from '@playwright/test';
|
|
import { expect } from '@playwright/test';
|
|
|
|
let user: {
|
|
id: string;
|
|
name: string;
|
|
email: string;
|
|
password: string;
|
|
};
|
|
|
|
test.beforeEach(async ({ page }) => {
|
|
user = await createRandomUser();
|
|
await loginUser(page, user);
|
|
});
|
|
|
|
test.afterEach(async () => {
|
|
// if you want to keep the user in the database for debugging,
|
|
// comment this line
|
|
await deleteUser(user.email);
|
|
});
|
|
|
|
test('newly created page shows empty history', async ({ page }) => {
|
|
await page.reload();
|
|
await waitForEditorLoad(page);
|
|
await createLocalWorkspace(
|
|
{
|
|
name: 'test',
|
|
},
|
|
page
|
|
);
|
|
await enableCloudWorkspace(page);
|
|
|
|
// click the history button
|
|
await page.getByTestId('header-dropDownButton').click();
|
|
await page.getByTestId('editor-option-menu-history').click();
|
|
|
|
const modal = page.getByTestId('page-history-modal');
|
|
|
|
// expect history modal shown up
|
|
await expect(modal).toBeVisible();
|
|
|
|
await expect(page.getByTestId('empty-history-prompt')).toBeVisible();
|
|
});
|
|
|
|
const pushCurrentPageUpdates = async (page: Page) => {
|
|
const [workspaceId, guid, updates, state] = await page.evaluate(() => {
|
|
// @ts-expect-error
|
|
const Y = window.currentWorkspace.docCollection.constructor.Y;
|
|
// @ts-expect-error
|
|
const spaceDoc = window.currentEditor.page.spaceDoc;
|
|
// @ts-expect-error
|
|
const workspaceId: string = window.currentWorkspace.id;
|
|
const updates: Uint8Array = Y.encodeStateAsUpdate(spaceDoc);
|
|
const state: Uint8Array = Y.encodeStateVector(spaceDoc);
|
|
|
|
return [workspaceId, spaceDoc.guid, [...updates], [...state]] as const;
|
|
});
|
|
|
|
const toBuffer = (arr: readonly number[]) => Buffer.from(arr);
|
|
|
|
await runPrisma(async client => {
|
|
await client.snapshotHistory.create({
|
|
data: {
|
|
workspaceId: workspaceId,
|
|
id: guid,
|
|
blob: toBuffer(updates),
|
|
state: toBuffer(state),
|
|
timestamp: new Date(Date.now() - 10000),
|
|
expiredAt: new Date(Date.now() + 100000),
|
|
},
|
|
});
|
|
});
|
|
};
|
|
|
|
test('can restore page to a history version', async ({ page }) => {
|
|
await page.reload();
|
|
await waitForEditorLoad(page);
|
|
await createLocalWorkspace(
|
|
{
|
|
name: 'test',
|
|
},
|
|
page
|
|
);
|
|
await enableCloudWorkspace(page);
|
|
|
|
await pushCurrentPageUpdates(page);
|
|
|
|
const title = getBlockSuiteEditorTitle(page);
|
|
|
|
await title.focus();
|
|
|
|
await title.pressSequentially('TEST TITLE', {
|
|
delay: 50,
|
|
});
|
|
|
|
// write something and push to history
|
|
await pushCurrentPageUpdates(page);
|
|
|
|
await title.selectText();
|
|
|
|
await title.press('Backspace');
|
|
|
|
await title.pressSequentially('New Title', {
|
|
delay: 50,
|
|
});
|
|
|
|
// click the history button
|
|
await page.getByTestId('header-dropDownButton').click();
|
|
await page.getByTestId('editor-option-menu-history').click();
|
|
|
|
const modal = page.getByTestId('page-history-modal');
|
|
|
|
// expect history modal shown up
|
|
await expect(modal).toBeVisible();
|
|
|
|
// expect history list to have 2 items
|
|
await expect(modal.getByTestId('version-history-item')).toHaveCount(2);
|
|
|
|
// check the first item in the preview should have title 'TEST TITLE'
|
|
await expect(modal.locator('[data-block-is-title]')).toHaveText('TEST TITLE');
|
|
|
|
// click restore
|
|
await modal
|
|
.getByRole('button', {
|
|
name: 'Restore current version',
|
|
})
|
|
.click();
|
|
|
|
const confirm = page.getByTestId('confirm-restore-history-modal');
|
|
|
|
// expect confirm dialog to show up
|
|
await expect(confirm).toBeVisible();
|
|
|
|
// click restore
|
|
await confirm
|
|
.getByRole('button', {
|
|
name: 'Restore',
|
|
})
|
|
.click();
|
|
|
|
// title should be restored to 'TEST TITLE'
|
|
await expect(title).toContainText('TEST TITLE');
|
|
});
|