mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-30 00:29:46 +08:00
refactor(infra): record legacy data to improve testing stability (#4590)
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
import { patchDataEnhancement } from '@affine-test/kit/e2e-enhance/initializer';
|
||||
import { SnapshotStorage } from '@affine-test/kit/e2e-enhance/snapshot';
|
||||
import { clickEdgelessModeButton } from '@affine-test/kit/utils/editor';
|
||||
import { coreUrl } from '@affine-test/kit/utils/load-page';
|
||||
import { waitForEditorLoad } from '@affine-test/kit/utils/page-logic';
|
||||
import { clickSideBarAllPageButton } from '@affine-test/kit/utils/sidebar';
|
||||
import type { Page } from '@playwright/test';
|
||||
import { expect, test } from '@playwright/test';
|
||||
|
||||
async function open404PageToInitData(page: Page, version: string) {
|
||||
const snapshotStorage = new SnapshotStorage(version);
|
||||
const { binaries, idbData, localStorageData } = await snapshotStorage.read();
|
||||
|
||||
// Open other page to init data
|
||||
await page.goto(`${coreUrl}/404`);
|
||||
await page.evaluate(
|
||||
([v1, v2]) => window.writeAffineDatabase(v1, v2),
|
||||
[idbData, binaries]
|
||||
);
|
||||
await page.evaluate(
|
||||
value => window.writeAffineLocalStorage(value),
|
||||
localStorageData
|
||||
);
|
||||
|
||||
return { localStorageData };
|
||||
}
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
await patchDataEnhancement(page);
|
||||
});
|
||||
|
||||
test('v1 to v4', async ({ page }) => {
|
||||
await open404PageToInitData(page, '0.7.0-canary.18');
|
||||
|
||||
await page.goto(coreUrl);
|
||||
await clickSideBarAllPageButton(page);
|
||||
await page.getByText('hello').click();
|
||||
|
||||
//#region fixme(himself65): blocksuite issue, data cannot be loaded to store
|
||||
const url = page.url();
|
||||
await page.waitForTimeout(5000);
|
||||
await page.goto(url);
|
||||
//#endregion
|
||||
|
||||
await waitForEditorLoad(page);
|
||||
expect(await page.locator('v-line').nth(0).textContent()).toBe('hello');
|
||||
|
||||
const changedLocalStorageData = await page.evaluate(() =>
|
||||
window.readAffineLocalStorage()
|
||||
);
|
||||
const workspaces = JSON.parse(
|
||||
changedLocalStorageData['jotai-workspaces']
|
||||
) as any[];
|
||||
for (const workspace of workspaces) {
|
||||
expect(workspace.version).toBe(4);
|
||||
}
|
||||
});
|
||||
|
||||
test('v2 to v4, database migration', async ({ page }) => {
|
||||
const { localStorageData } = await open404PageToInitData(
|
||||
page,
|
||||
'0.8.0-canary.7'
|
||||
);
|
||||
|
||||
//#region fixme(himself65): blocksuite issue, data cannot be loaded to store
|
||||
const allPagePath = `${coreUrl}/workspace/${localStorageData.last_workspace_id}/all`;
|
||||
await page.goto(allPagePath);
|
||||
await page.waitForTimeout(5000);
|
||||
//#endregion
|
||||
|
||||
const detailPagePath = `${coreUrl}/workspace/${localStorageData.last_workspace_id}/${localStorageData.last_page_id}`;
|
||||
await page.goto(detailPagePath);
|
||||
await waitForEditorLoad(page);
|
||||
|
||||
// check page mode is correct
|
||||
expect(await page.locator('v-line').nth(0).textContent()).toBe('hello');
|
||||
expect(await page.locator('affine-database').isVisible()).toBe(true);
|
||||
|
||||
// check edgeless mode is correct
|
||||
await clickEdgelessModeButton(page);
|
||||
await page.waitForTimeout(200);
|
||||
expect(await page.locator('affine-database').isVisible()).toBe(true);
|
||||
|
||||
const changedLocalStorageData = await page.evaluate(() =>
|
||||
window.readAffineLocalStorage()
|
||||
);
|
||||
const workspaces = JSON.parse(
|
||||
changedLocalStorageData['jotai-workspaces']
|
||||
) as any[];
|
||||
for (const workspace of workspaces) {
|
||||
expect(workspace.version).toBe(4);
|
||||
}
|
||||
});
|
||||
|
||||
test('v3 to v4, surface migration', async ({ page }) => {
|
||||
const { localStorageData } = await open404PageToInitData(page, '0.8.4');
|
||||
|
||||
//#region fixme(himself65): blocksuite issue, data cannot be loaded to store
|
||||
const allPagePath = `${coreUrl}/workspace/${localStorageData.last_workspace_id}/all`;
|
||||
await page.goto(allPagePath);
|
||||
await page.waitForTimeout(5000);
|
||||
//#endregion
|
||||
|
||||
const detailPagePath = `${coreUrl}/workspace/${localStorageData.last_workspace_id}/${localStorageData.last_page_id}`;
|
||||
await page.goto(detailPagePath);
|
||||
await waitForEditorLoad(page);
|
||||
|
||||
// check edgeless mode is correct
|
||||
await clickEdgelessModeButton(page);
|
||||
await expect(page.locator('edgeless-toolbar')).toBeVisible();
|
||||
await expect(page.locator('affine-edgeless-page')).toBeVisible();
|
||||
|
||||
const changedLocalStorageData = await page.evaluate(() =>
|
||||
window.readAffineLocalStorage()
|
||||
);
|
||||
const workspaces = JSON.parse(
|
||||
changedLocalStorageData['jotai-workspaces']
|
||||
) as any[];
|
||||
for (const workspace of workspaces) {
|
||||
expect(workspace.version).toBe(4);
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user