universo-platform-2d
116 строк · 4.0 Кб
1import { patchDataEnhancement } from '@affine-test/kit/e2e-enhance/initializer';2import { SnapshotStorage } from '@affine-test/kit/e2e-enhance/snapshot';3import { test } from '@affine-test/kit/playwright';4import { clickEdgelessModeButton } from '@affine-test/kit/utils/editor';5import { coreUrl } from '@affine-test/kit/utils/load-page';6import { waitForEditorLoad } from '@affine-test/kit/utils/page-logic';7import { clickSideBarAllPageButton } from '@affine-test/kit/utils/sidebar';8import type { Page } from '@playwright/test';9import { expect } from '@playwright/test';10
11async function open404PageToInitData(page: Page, version: string) {12const snapshotStorage = new SnapshotStorage(version);13const { binaries, idbData, localStorageData } = await snapshotStorage.read();14
15// Open other page to init data16await page.goto(`${coreUrl}/404`);17await page.evaluate(18([v1, v2]) => window.writeAffineDatabase(v1, v2),19[idbData, binaries]20);21await page.evaluate(22value => window.writeAffineLocalStorage(value),23localStorageData
24);25
26return { localStorageData };27}
28
29test.beforeEach(async ({ page }) => {30await patchDataEnhancement(page);31});32
33test('v1 to v4', async ({ page }) => {34await open404PageToInitData(page, '0.7.0-canary.18');35
36await page.goto(coreUrl);37await clickSideBarAllPageButton(page);38
39await expect(page.getByTestId('upgrade-workspace-button')).toBeVisible();40await page.getByTestId('upgrade-workspace-button').click();41
42await expect(page.getByTestId('page-list-item')).toHaveCount(2);43await page44.getByTestId('page-list-item-title-text')45.getByText('hello')46.click();47
48await waitForEditorLoad(page);49await expect(page.locator('v-line').nth(0)).toHaveText('hello');50});51
52test('v2 to v4, database migration', async ({ page }) => {53const { localStorageData } = await open404PageToInitData(54page,55'0.8.0-canary.7'56);57
58const detailPagePath = `${coreUrl}/workspace/${localStorageData.last_workspace_id}/${localStorageData.last_page_id}`;59await page.goto(detailPagePath);60
61await expect(page.getByTestId('upgrade-workspace-button')).toBeVisible();62await page.getByTestId('upgrade-workspace-button').click();63
64// check page mode is correct65await expect(page.locator('v-line').nth(0)).toHaveText('hello');66await expect(page.locator('affine-database')).toBeVisible();67
68// check edgeless mode is correct69await clickEdgelessModeButton(page);70await expect(page.locator('affine-database')).toBeVisible();71});72
73test('v3 to v4, surface migration', async ({ page }) => {74const { localStorageData } = await open404PageToInitData(page, '0.8.4');75
76const detailPagePath = `${coreUrl}/workspace/${localStorageData.last_workspace_id}/${localStorageData.last_page_id}`;77await page.goto(detailPagePath);78
79await expect(page.getByTestId('upgrade-workspace-button')).toBeVisible();80await page.getByTestId('upgrade-workspace-button').click();81await waitForEditorLoad(page);82
83await page.waitForTimeout(500);84
85// check edgeless mode is correct86await clickEdgelessModeButton(page);87await expect(page.locator('.edgeless-toolbar-container')).toBeVisible();88await expect(page.locator('affine-edgeless-root')).toBeVisible();89});90
91test('v0 to v4, subdoc migration', async ({ page }) => {92await open404PageToInitData(page, '0.6.1-beta.1');93
94await page.goto(coreUrl);95await clickSideBarAllPageButton(page);96
97await expect(page.getByTestId('upgrade-workspace-button')).toBeVisible();98await page.getByTestId('upgrade-workspace-button').click();99
100await expect(page.getByTestId('page-list-item')).toHaveCount(2);101await page102.getByTestId('page-list-item-title-text')103.getByText('hello')104.click();105
106await waitForEditorLoad(page);107
108// check page mode is correct109await expect(page.locator('v-line').nth(0)).toHaveText('hello');110await expect(page.locator('v-line').nth(1)).toHaveText('TEST CONTENT');111
112// check edgeless mode is correct113await clickEdgelessModeButton(page);114await expect(page.locator('.edgeless-toolbar-container')).toBeVisible();115await expect(page.locator('affine-edgeless-root')).toBeVisible();116});117