diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 729772cf81..86583b53fe 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -232,6 +232,7 @@ jobs: - name: Run playwright tests run: yarn e2e --forbid-only --shard=${{ matrix.shard }}/${{ strategy.job-total }} + working-directory: tests/affine-local env: COVERAGE: true diff --git a/.gitignore b/.gitignore index 90550a7e9f..58007be8cb 100644 --- a/.gitignore +++ b/.gitignore @@ -60,9 +60,10 @@ out/ storybook-static i18n-generated.ts -/test-results/ -/playwright-report/ -/playwright/.cache/ +test-results +playwright-report +playwright/.cache +download # Cache .eslintcache diff --git a/nx.json b/nx.json index cdd6b69220..b26c92c594 100644 --- a/nx.json +++ b/nx.json @@ -88,17 +88,6 @@ } ] }, - "e2e:coverage": { - "outputs": ["{workspaceRoot}/.nyc_output", "{projectRoot}/test-results"], - "inputs": [ - { - "runtime": "node -v" - }, - { - "runtime": "yarn playwright --version" - } - ] - }, "test": { "outputs": ["{workspaceRoot}/.nyc_output"], "inputs": [ diff --git a/package.json b/package.json index 33dd2e75af..63b85b714a 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,8 @@ "packages/*", "tests/fixtures", "tests/kit", - "tests/affine-legacy/*" + "tests/affine-legacy/*", + "tests/affine-local" ], "engines": { "node": ">=18.16.1 <19.0.0" @@ -35,8 +36,6 @@ "lint:prettier:fix": "prettier --ignore-unknown --cache --write .", "lint": "yarn lint:eslint && yarn lint:prettier", "lint:fix": "yarn lint:eslint:fix && yarn lint:prettier:fix", - "e2e": "playwright test", - "e2e:coverage": "COVERAGE=true yarn e2e --forbid-only", "test": "ENABLE_PRELOADING=false vitest --run", "test:ui": "ENABLE_PRELOADING=false vitest --ui", "test:coverage": "ENABLE_PRELOADING=false vitest run --coverage", diff --git a/tests/parallels/all-page.spec.ts b/tests/affine-local/e2e/all-page.spec.ts similarity index 96% rename from tests/parallels/all-page.spec.ts rename to tests/affine-local/e2e/all-page.spec.ts index 6a7265b41e..d69943210e 100644 --- a/tests/parallels/all-page.spec.ts +++ b/tests/affine-local/e2e/all-page.spec.ts @@ -1,7 +1,4 @@ import { test } from '@affine-test/kit/playwright'; -import type { Page } from '@playwright/test'; -import { expect } from '@playwright/test'; - import { changeFilter, checkDatePicker, @@ -15,14 +12,16 @@ import { selectDateFromDatePicker, selectMonthFromMonthPicker, selectTag, -} from '../libs/filter'; -import { openHomePage } from '../libs/load-page'; +} from '@affine-test/kit/utils/filter'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; import { closeDownloadTip, getBlockSuiteEditorTitle, waitEditorLoad, -} from '../libs/page-logic'; -import { clickSideBarAllPageButton } from '../libs/sidebar'; +} from '@affine-test/kit/utils/page-logic'; +import { clickSideBarAllPageButton } from '@affine-test/kit/utils/sidebar'; +import type { Page } from '@playwright/test'; +import { expect } from '@playwright/test'; function getAllPage(page: Page) { const newPageButton = page diff --git a/tests/parallels/blocksuite/block-hub.spec.ts b/tests/affine-local/e2e/blocksuite/block-hub.spec.ts similarity index 58% rename from tests/parallels/blocksuite/block-hub.spec.ts rename to tests/affine-local/e2e/blocksuite/block-hub.spec.ts index 64a023a616..69750ff280 100644 --- a/tests/parallels/blocksuite/block-hub.spec.ts +++ b/tests/affine-local/e2e/blocksuite/block-hub.spec.ts @@ -1,8 +1,7 @@ import { test } from '@affine-test/kit/playwright'; - -import { checkBlockHub } from '../../libs/editor'; -import { openHomePage } from '../../libs/load-page'; -import { newPage, waitEditorLoad } from '../../libs/page-logic'; +import { checkBlockHub } from '@affine-test/kit/utils/editor'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; +import { newPage, waitEditorLoad } from '@affine-test/kit/utils/page-logic'; test('block-hub should work', async ({ page }) => { await openHomePage(page); diff --git a/tests/parallels/blocksuite/editor.spec.ts b/tests/affine-local/e2e/blocksuite/editor.spec.ts similarity index 94% rename from tests/parallels/blocksuite/editor.spec.ts rename to tests/affine-local/e2e/blocksuite/editor.spec.ts index 8f6a2f5817..28424e9c8a 100644 --- a/tests/parallels/blocksuite/editor.spec.ts +++ b/tests/affine-local/e2e/blocksuite/editor.spec.ts @@ -1,9 +1,8 @@ import { test } from '@affine-test/kit/playwright'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; +import { newPage, waitEditorLoad } from '@affine-test/kit/utils/page-logic'; import type { Page } from '@playwright/test'; import { expect } from '@playwright/test'; - -import { openHomePage } from '../../libs/load-page'; -import { newPage, waitEditorLoad } from '../../libs/page-logic'; const addDatabase = async (page: Page) => { await page.keyboard.press('/', { delay: 50 }); await page.keyboard.press('d'); diff --git a/tests/parallels/change-page-mode.spec.ts b/tests/affine-local/e2e/change-page-mode.spec.ts similarity index 87% rename from tests/parallels/change-page-mode.spec.ts rename to tests/affine-local/e2e/change-page-mode.spec.ts index ceb81e34fd..d69ad6cfd5 100644 --- a/tests/parallels/change-page-mode.spec.ts +++ b/tests/affine-local/e2e/change-page-mode.spec.ts @@ -1,12 +1,15 @@ import { test } from '@affine-test/kit/playwright'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; +import { + clickPageMoreActions, + waitEditorLoad, +} from '@affine-test/kit/utils/page-logic'; import { expect } from '@playwright/test'; -import { openHomePage } from '../libs/load-page'; -import { clickPageMoreActions, waitEditorLoad } from '../libs/page-logic'; - test('Switch to edgeless by switch edgeless item', async ({ page }) => { async function getCount(): Promise { return page.evaluate(() => { + // @ts-expect-error return globalThis.__toastCount; }); } @@ -14,8 +17,10 @@ test('Switch to edgeless by switch edgeless item', async ({ page }) => { await waitEditorLoad(page); const btn = await page.getByTestId('switch-edgeless-mode-button'); await page.evaluate(() => { + // @ts-expect-error globalThis.__toastCount = 0; window.addEventListener('affine-toast:emit', () => { + // @ts-expect-error globalThis.__toastCount++; }); }); diff --git a/tests/parallels/contact-us.spec.ts b/tests/affine-local/e2e/contact-us.spec.ts similarity index 81% rename from tests/parallels/contact-us.spec.ts rename to tests/affine-local/e2e/contact-us.spec.ts index ec072bfc1a..4b38849763 100644 --- a/tests/parallels/contact-us.spec.ts +++ b/tests/affine-local/e2e/contact-us.spec.ts @@ -1,9 +1,8 @@ import { test } from '@affine-test/kit/playwright'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; +import { waitEditorLoad } from '@affine-test/kit/utils/page-logic'; import { expect } from '@playwright/test'; -import { openHomePage } from '../libs/load-page'; -import { waitEditorLoad } from '../libs/page-logic'; - test('Click right-bottom corner contact icon', async ({ page }) => { await openHomePage(page); await waitEditorLoad(page); diff --git a/tests/parallels/debug-init-page.spec.ts b/tests/affine-local/e2e/debug-init-page.spec.ts similarity index 93% rename from tests/parallels/debug-init-page.spec.ts rename to tests/affine-local/e2e/debug-init-page.spec.ts index 7f12dfb835..e339c915c2 100644 --- a/tests/parallels/debug-init-page.spec.ts +++ b/tests/affine-local/e2e/debug-init-page.spec.ts @@ -5,6 +5,7 @@ test('should have page0', async ({ page }) => { await page.goto('http://localhost:8080/_debug/init-page.html'); await page.waitForSelector('v-line'); const pageId = await page.evaluate(async () => { + // @ts-expect-error return globalThis.page.id; }); expect(pageId).toBe('page0'); diff --git a/tests/parallels/drag-page-to-trash-folder.spec.ts b/tests/affine-local/e2e/drag-page-to-trash-folder.spec.ts similarity index 90% rename from tests/parallels/drag-page-to-trash-folder.spec.ts rename to tests/affine-local/e2e/drag-page-to-trash-folder.spec.ts index a24f99cdc2..b6ae44ccbe 100644 --- a/tests/parallels/drag-page-to-trash-folder.spec.ts +++ b/tests/affine-local/e2e/drag-page-to-trash-folder.spec.ts @@ -1,9 +1,8 @@ import { test } from '@affine-test/kit/playwright'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; +import { waitEditorLoad } from '@affine-test/kit/utils/page-logic'; import { expect } from '@playwright/test'; -import { openHomePage } from '../libs/load-page'; -import { waitEditorLoad } from '../libs/page-logic'; - test('drag a page from "All pages" list onto the "Trash" folder in the sidebar to move it to trash list', async ({ page, }) => { diff --git a/tests/parallels/exception-page.spec.ts b/tests/affine-local/e2e/exception-page.spec.ts similarity index 100% rename from tests/parallels/exception-page.spec.ts rename to tests/affine-local/e2e/exception-page.spec.ts diff --git a/tests/parallels/image-preview.spec.ts b/tests/affine-local/e2e/image-preview.spec.ts similarity index 99% rename from tests/parallels/image-preview.spec.ts rename to tests/affine-local/e2e/image-preview.spec.ts index 280352f17d..74589d3527 100644 --- a/tests/parallels/image-preview.spec.ts +++ b/tests/affine-local/e2e/image-preview.spec.ts @@ -1,13 +1,12 @@ -import type { Page } from '@playwright/test'; -import { expect, test } from '@playwright/test'; -import fs from 'fs'; - -import { openHomePage } from '../libs/load-page'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; import { getBlockSuiteEditorTitle, newPage, waitEditorLoad, -} from '../libs/page-logic'; +} from '@affine-test/kit/utils/page-logic'; +import type { Page } from '@playwright/test'; +import { expect, test } from '@playwright/test'; +import fs from 'fs'; async function importImage(page: Page, url: string) { await page.evaluate( diff --git a/tests/parallels/invite-code-page.spec.ts b/tests/affine-local/e2e/invite-code-page.spec.ts similarity index 100% rename from tests/parallels/invite-code-page.spec.ts rename to tests/affine-local/e2e/invite-code-page.spec.ts diff --git a/tests/parallels/layout.spec.ts b/tests/affine-local/e2e/layout.spec.ts similarity index 94% rename from tests/parallels/layout.spec.ts rename to tests/affine-local/e2e/layout.spec.ts index 35388270b0..a7d268a201 100644 --- a/tests/parallels/layout.spec.ts +++ b/tests/affine-local/e2e/layout.spec.ts @@ -1,9 +1,8 @@ import { test } from '@affine-test/kit/playwright'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; +import { waitEditorLoad } from '@affine-test/kit/utils/page-logic'; import { expect } from '@playwright/test'; -import { openHomePage } from '../libs/load-page'; -import { waitEditorLoad } from '../libs/page-logic'; - test('Collapse Sidebar', async ({ page }) => { await openHomePage(page); await waitEditorLoad(page); diff --git a/tests/parallels/local-first-avatar.spec.ts b/tests/affine-local/e2e/local-first-avatar.spec.ts similarity index 76% rename from tests/parallels/local-first-avatar.spec.ts rename to tests/affine-local/e2e/local-first-avatar.spec.ts index 5960bd90cc..948382c45a 100644 --- a/tests/parallels/local-first-avatar.spec.ts +++ b/tests/affine-local/e2e/local-first-avatar.spec.ts @@ -1,9 +1,10 @@ -import { test } from '@affine-test/kit/playwright'; -import { expect } from '@playwright/test'; +import { resolve } from 'node:path'; -import { openHomePage } from '../libs/load-page'; -import { newPage, waitEditorLoad } from '../libs/page-logic'; -import { assertCurrentWorkspaceFlavour } from '../libs/workspace'; +import { rootDir, test } from '@affine-test/kit/playwright'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; +import { newPage, waitEditorLoad } from '@affine-test/kit/utils/page-logic'; +import { assertCurrentWorkspaceFlavour } from '@affine-test/kit/utils/workspace'; +import { expect } from '@playwright/test'; test('should create a page with a local first avatar', async ({ page }) => { await openHomePage(page); @@ -21,7 +22,7 @@ test('should create a page with a local first avatar', async ({ page }) => { await page.getByText('current').click(); await page .getByTestId('upload-avatar') - .setInputFiles('./tests/fixtures/smile.png'); + .setInputFiles(resolve(rootDir, 'tests', 'fixtures', 'smile.png')); await page.mouse.click(0, 0); await page.getByTestId('workspace-name').click(); await page.getByTestId('workspace-card').nth(0).click(); diff --git a/tests/parallels/local-first-collections-items.spec.ts b/tests/affine-local/e2e/local-first-collections-items.spec.ts similarity index 96% rename from tests/parallels/local-first-collections-items.spec.ts rename to tests/affine-local/e2e/local-first-collections-items.spec.ts index f769574baf..4d2b7ba42f 100644 --- a/tests/parallels/local-first-collections-items.spec.ts +++ b/tests/affine-local/e2e/local-first-collections-items.spec.ts @@ -1,15 +1,17 @@ import { test } from '@affine-test/kit/playwright'; -import type { Page } from '@playwright/test'; -import { expect } from '@playwright/test'; - -import { checkDatePicker, selectDateFromDatePicker } from '../libs/filter'; -import { openHomePage } from '../libs/load-page'; +import { + checkDatePicker, + selectDateFromDatePicker, +} from '@affine-test/kit/utils/filter'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; import { closeDownloadTip, getBlockSuiteEditorTitle, newPage, waitEditorLoad, -} from '../libs/page-logic'; +} from '@affine-test/kit/utils/page-logic'; +import type { Page } from '@playwright/test'; +import { expect } from '@playwright/test'; const createAndPinCollection = async ( page: Page, diff --git a/tests/parallels/local-first-delete-page.spec.ts b/tests/affine-local/e2e/local-first-delete-page.spec.ts similarity index 88% rename from tests/parallels/local-first-delete-page.spec.ts rename to tests/affine-local/e2e/local-first-delete-page.spec.ts index 156a6b1cc9..51a8b7ecc9 100644 --- a/tests/parallels/local-first-delete-page.spec.ts +++ b/tests/affine-local/e2e/local-first-delete-page.spec.ts @@ -1,13 +1,12 @@ import { test } from '@affine-test/kit/playwright'; -import { expect } from '@playwright/test'; - -import { openHomePage } from '../libs/load-page'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; import { getBlockSuiteEditorTitle, newPage, waitEditorLoad, -} from '../libs/page-logic'; -import { assertCurrentWorkspaceFlavour } from '../libs/workspace'; +} from '@affine-test/kit/utils/page-logic'; +import { assertCurrentWorkspaceFlavour } from '@affine-test/kit/utils/workspace'; +import { expect } from '@playwright/test'; test('New a page , then delete it in all pages, permanently delete it', async ({ page, diff --git a/tests/parallels/local-first-delete-workspace.spec.ts b/tests/affine-local/e2e/local-first-delete-workspace.spec.ts similarity index 86% rename from tests/parallels/local-first-delete-workspace.spec.ts rename to tests/affine-local/e2e/local-first-delete-workspace.spec.ts index d09cc32efc..ee44efbbbb 100644 --- a/tests/parallels/local-first-delete-workspace.spec.ts +++ b/tests/affine-local/e2e/local-first-delete-workspace.spec.ts @@ -1,13 +1,12 @@ import { test } from '@affine-test/kit/playwright'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; +import { waitEditorLoad } from '@affine-test/kit/utils/page-logic'; +import { openWorkspaceSettingPanel } from '@affine-test/kit/utils/setting'; +import { openSettingModal } from '@affine-test/kit/utils/setting'; +import { clickSideBarCurrentWorkspaceBanner } from '@affine-test/kit/utils/sidebar'; +import { assertCurrentWorkspaceFlavour } from '@affine-test/kit/utils/workspace'; import { expect } from '@playwright/test'; -import { openHomePage } from '../libs/load-page'; -import { waitEditorLoad } from '../libs/page-logic'; -import { openWorkspaceSettingPanel } from '../libs/setting'; -import { openSettingModal } from '../libs/setting'; -import { clickSideBarCurrentWorkspaceBanner } from '../libs/sidebar'; -import { assertCurrentWorkspaceFlavour } from '../libs/workspace'; - test('Create new workspace, then delete it', async ({ page }) => { await openHomePage(page); await waitEditorLoad(page); diff --git a/tests/parallels/local-first-export-page.spec.ts b/tests/affine-local/e2e/local-first-export-page.spec.ts similarity index 91% rename from tests/parallels/local-first-export-page.spec.ts rename to tests/affine-local/e2e/local-first-export-page.spec.ts index 08577cccaa..ed056f0bd1 100644 --- a/tests/parallels/local-first-export-page.spec.ts +++ b/tests/affine-local/e2e/local-first-export-page.spec.ts @@ -1,14 +1,13 @@ import { test } from '@affine-test/kit/playwright'; -import { expect } from '@playwright/test'; - -import { openHomePage } from '../libs/load-page'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; import { clickPageMoreActions, getBlockSuiteEditorTitle, newPage, waitEditorLoad, -} from '../libs/page-logic'; -import { assertCurrentWorkspaceFlavour } from '../libs/workspace'; +} from '@affine-test/kit/utils/page-logic'; +import { assertCurrentWorkspaceFlavour } from '@affine-test/kit/utils/workspace'; +import { expect } from '@playwright/test'; test.skip('New a page ,then open it and export html', async ({ page }) => { await openHomePage(page); diff --git a/tests/parallels/local-first-favorite-page.spec.ts b/tests/affine-local/e2e/local-first-favorite-page.spec.ts similarity index 93% rename from tests/parallels/local-first-favorite-page.spec.ts rename to tests/affine-local/e2e/local-first-favorite-page.spec.ts index 0d00a80024..a05ca4a4b4 100644 --- a/tests/parallels/local-first-favorite-page.spec.ts +++ b/tests/affine-local/e2e/local-first-favorite-page.spec.ts @@ -1,15 +1,14 @@ import { test } from '@affine-test/kit/playwright'; -import { expect } from '@playwright/test'; - -import { openHomePage } from '../libs/load-page'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; import { clickPageMoreActions, getBlockSuiteEditorTitle, newPage, waitEditorLoad, -} from '../libs/page-logic'; -import { waitForLogMessage } from '../libs/utils'; -import { assertCurrentWorkspaceFlavour } from '../libs/workspace'; +} from '@affine-test/kit/utils/page-logic'; +import { waitForLogMessage } from '@affine-test/kit/utils/utils'; +import { assertCurrentWorkspaceFlavour } from '@affine-test/kit/utils/workspace'; +import { expect } from '@playwright/test'; test('New a page and open it ,then favorite it', async ({ page }) => { await openHomePage(page); diff --git a/tests/parallels/local-first-favorites-items.spec.ts b/tests/affine-local/e2e/local-first-favorites-items.spec.ts similarity index 97% rename from tests/parallels/local-first-favorites-items.spec.ts rename to tests/affine-local/e2e/local-first-favorites-items.spec.ts index 7157df0672..d89063fe71 100644 --- a/tests/parallels/local-first-favorites-items.spec.ts +++ b/tests/affine-local/e2e/local-first-favorites-items.spec.ts @@ -1,14 +1,13 @@ import { test } from '@affine-test/kit/playwright'; -import { expect } from '@playwright/test'; - -import { openHomePage } from '../libs/load-page'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; import { clickPageMoreActions, createLinkedPage, getBlockSuiteEditorTitle, newPage, waitEditorLoad, -} from '../libs/page-logic'; +} from '@affine-test/kit/utils/page-logic'; +import { expect } from '@playwright/test'; test('Show favorite items in sidebar', async ({ page }) => { await openHomePage(page); diff --git a/tests/parallels/local-first-new-page.spec.ts b/tests/affine-local/e2e/local-first-new-page.spec.ts similarity index 83% rename from tests/parallels/local-first-new-page.spec.ts rename to tests/affine-local/e2e/local-first-new-page.spec.ts index 13ea13f110..4791877f95 100644 --- a/tests/parallels/local-first-new-page.spec.ts +++ b/tests/affine-local/e2e/local-first-new-page.spec.ts @@ -1,13 +1,12 @@ import { test } from '@affine-test/kit/playwright'; -import { expect } from '@playwright/test'; - -import { openHomePage } from '../libs/load-page'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; import { getBlockSuiteEditorTitle, newPage, waitEditorLoad, -} from '../libs/page-logic'; -import { assertCurrentWorkspaceFlavour } from '../libs/workspace'; +} from '@affine-test/kit/utils/page-logic'; +import { assertCurrentWorkspaceFlavour } from '@affine-test/kit/utils/workspace'; +import { expect } from '@playwright/test'; test('click btn new page', async ({ page }) => { await openHomePage(page); diff --git a/tests/parallels/local-first-openpage-newtab.spec.ts b/tests/affine-local/e2e/local-first-openpage-newtab.spec.ts similarity index 82% rename from tests/parallels/local-first-openpage-newtab.spec.ts rename to tests/affine-local/e2e/local-first-openpage-newtab.spec.ts index 6a84309623..81b06a783e 100644 --- a/tests/parallels/local-first-openpage-newtab.spec.ts +++ b/tests/affine-local/e2e/local-first-openpage-newtab.spec.ts @@ -1,13 +1,12 @@ import { test } from '@affine-test/kit/playwright'; -import { expect } from '@playwright/test'; - -import { openHomePage } from '../libs/load-page'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; import { getBlockSuiteEditorTitle, newPage, waitEditorLoad, -} from '../libs/page-logic'; -import { assertCurrentWorkspaceFlavour } from '../libs/workspace'; +} from '@affine-test/kit/utils/page-logic'; +import { assertCurrentWorkspaceFlavour } from '@affine-test/kit/utils/workspace'; +import { expect } from '@playwright/test'; test('click btn bew page and open in tab', async ({ page }) => { await openHomePage(page); diff --git a/tests/parallels/local-first-restore-page.spec.ts b/tests/affine-local/e2e/local-first-restore-page.spec.ts similarity index 89% rename from tests/parallels/local-first-restore-page.spec.ts rename to tests/affine-local/e2e/local-first-restore-page.spec.ts index ff0254f91c..b9edde0497 100644 --- a/tests/parallels/local-first-restore-page.spec.ts +++ b/tests/affine-local/e2e/local-first-restore-page.spec.ts @@ -1,13 +1,12 @@ import { test } from '@affine-test/kit/playwright'; -import { expect } from '@playwright/test'; - -import { openHomePage } from '../libs/load-page'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; import { getBlockSuiteEditorTitle, newPage, waitEditorLoad, -} from '../libs/page-logic'; -import { assertCurrentWorkspaceFlavour } from '../libs/workspace'; +} from '@affine-test/kit/utils/page-logic'; +import { assertCurrentWorkspaceFlavour } from '@affine-test/kit/utils/workspace'; +import { expect } from '@playwright/test'; test('New a page , then delete it in all pages, restore it', async ({ page, diff --git a/tests/parallels/local-first-show-delete-modal.spec.ts b/tests/affine-local/e2e/local-first-show-delete-modal.spec.ts similarity index 90% rename from tests/parallels/local-first-show-delete-modal.spec.ts rename to tests/affine-local/e2e/local-first-show-delete-modal.spec.ts index b49f907b5b..d52cd2f991 100644 --- a/tests/parallels/local-first-show-delete-modal.spec.ts +++ b/tests/affine-local/e2e/local-first-show-delete-modal.spec.ts @@ -1,14 +1,13 @@ import { test } from '@affine-test/kit/playwright'; -import { expect } from '@playwright/test'; - -import { openHomePage } from '../libs/load-page'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; import { clickPageMoreActions, getBlockSuiteEditorTitle, newPage, waitEditorLoad, -} from '../libs/page-logic'; -import { assertCurrentWorkspaceFlavour } from '../libs/workspace'; +} from '@affine-test/kit/utils/page-logic'; +import { assertCurrentWorkspaceFlavour } from '@affine-test/kit/utils/workspace'; +import { expect } from '@playwright/test'; test('New a page ,then open it and show delete modal', async ({ page }) => { await openHomePage(page); diff --git a/tests/parallels/local-first-trash-page.spec.ts b/tests/affine-local/e2e/local-first-trash-page.spec.ts similarity index 86% rename from tests/parallels/local-first-trash-page.spec.ts rename to tests/affine-local/e2e/local-first-trash-page.spec.ts index 6b0fb76d91..e1f9b44096 100644 --- a/tests/parallels/local-first-trash-page.spec.ts +++ b/tests/affine-local/e2e/local-first-trash-page.spec.ts @@ -1,13 +1,12 @@ import { test } from '@affine-test/kit/playwright'; -import { expect } from '@playwright/test'; - -import { openHomePage } from '../libs/load-page'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; import { getBlockSuiteEditorTitle, newPage, waitEditorLoad, -} from '../libs/page-logic'; -import { assertCurrentWorkspaceFlavour } from '../libs/workspace'; +} from '@affine-test/kit/utils/page-logic'; +import { assertCurrentWorkspaceFlavour } from '@affine-test/kit/utils/workspace'; +import { expect } from '@playwright/test'; test('New a page , then delete it in all pages, finally find it in trash', async ({ page, diff --git a/tests/parallels/local-first-workspace-list.spec.ts b/tests/affine-local/e2e/local-first-workspace-list.spec.ts similarity index 92% rename from tests/parallels/local-first-workspace-list.spec.ts rename to tests/affine-local/e2e/local-first-workspace-list.spec.ts index dda0e57ec5..96684c1320 100644 --- a/tests/parallels/local-first-workspace-list.spec.ts +++ b/tests/affine-local/e2e/local-first-workspace-list.spec.ts @@ -1,11 +1,13 @@ import { test } from '@affine-test/kit/playwright'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; +import { waitEditorLoad } from '@affine-test/kit/utils/page-logic'; +import { clickSideBarAllPageButton } from '@affine-test/kit/utils/sidebar'; +import { + createWorkspace, + openWorkspaceListModal, +} from '@affine-test/kit/utils/workspace'; import { expect } from '@playwright/test'; -import { openHomePage } from '../libs/load-page'; -import { waitEditorLoad } from '../libs/page-logic'; -import { clickSideBarAllPageButton } from '../libs/sidebar'; -import { createWorkspace, openWorkspaceListModal } from '../libs/workspace'; - test('just one item in the workspace list at first', async ({ page }) => { await openHomePage(page); await waitEditorLoad(page); diff --git a/tests/parallels/local-first-workspace.spec.ts b/tests/affine-local/e2e/local-first-workspace.spec.ts similarity index 85% rename from tests/parallels/local-first-workspace.spec.ts rename to tests/affine-local/e2e/local-first-workspace.spec.ts index 921e6bb7cc..d754f27600 100644 --- a/tests/parallels/local-first-workspace.spec.ts +++ b/tests/affine-local/e2e/local-first-workspace.spec.ts @@ -1,10 +1,9 @@ import { test } from '@affine-test/kit/playwright'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; +import { waitEditorLoad } from '@affine-test/kit/utils/page-logic'; +import { assertCurrentWorkspaceFlavour } from '@affine-test/kit/utils/workspace'; import { expect } from '@playwright/test'; -import { openHomePage } from '../libs/load-page'; -import { waitEditorLoad } from '../libs/page-logic'; -import { assertCurrentWorkspaceFlavour } from '../libs/workspace'; - test('preset workspace name', async ({ page }) => { await openHomePage(page); await waitEditorLoad(page); diff --git a/tests/parallels/open-affine.spec.ts b/tests/affine-local/e2e/open-affine.spec.ts similarity index 87% rename from tests/parallels/open-affine.spec.ts rename to tests/affine-local/e2e/open-affine.spec.ts index d2cacd16a2..e338af4506 100644 --- a/tests/parallels/open-affine.spec.ts +++ b/tests/affine-local/e2e/open-affine.spec.ts @@ -1,10 +1,9 @@ import { test } from '@affine-test/kit/playwright'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; +import { waitEditorLoad } from '@affine-test/kit/utils/page-logic'; +import { createWorkspace } from '@affine-test/kit/utils/workspace'; import { expect } from '@playwright/test'; -import { openHomePage } from '../libs/load-page'; -import { waitEditorLoad } from '../libs/page-logic'; -import { createWorkspace } from '../libs/workspace'; - test('Open last workspace when back to affine', async ({ page }) => { await openHomePage(page); await waitEditorLoad(page); diff --git a/tests/parallels/quick-search.spec.ts b/tests/affine-local/e2e/quick-search.spec.ts similarity index 96% rename from tests/parallels/quick-search.spec.ts rename to tests/affine-local/e2e/quick-search.spec.ts index 39aa8ccd79..0292e9f198 100644 --- a/tests/parallels/quick-search.spec.ts +++ b/tests/affine-local/e2e/quick-search.spec.ts @@ -1,10 +1,9 @@ import { test } from '@affine-test/kit/playwright'; +import { withCtrlOrMeta } from '@affine-test/kit/utils/keyboard'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; +import { newPage, waitEditorLoad } from '@affine-test/kit/utils/page-logic'; import { expect, type Page } from '@playwright/test'; -import { withCtrlOrMeta } from '../libs/keyboard'; -import { openHomePage } from '../libs/load-page'; -import { newPage, waitEditorLoad } from '../libs/page-logic'; - const openQuickSearchByShortcut = async (page: Page) => await withCtrlOrMeta(page, () => page.keyboard.press('k', { delay: 50 })); diff --git a/tests/parallels/router.spec.ts b/tests/affine-local/e2e/router.spec.ts similarity index 83% rename from tests/parallels/router.spec.ts rename to tests/affine-local/e2e/router.spec.ts index 904239dad1..71655bcf05 100644 --- a/tests/parallels/router.spec.ts +++ b/tests/affine-local/e2e/router.spec.ts @@ -1,9 +1,8 @@ import { test } from '@affine-test/kit/playwright'; +import { openHomePage, webUrl } from '@affine-test/kit/utils/load-page'; +import { waitEditorLoad } from '@affine-test/kit/utils/page-logic'; import { expect } from '@playwright/test'; -import { openHomePage, webUrl } from '../libs/load-page'; -import { waitEditorLoad } from '../libs/page-logic'; - test('goto not found page', async ({ page }) => { await openHomePage(page); await waitEditorLoad(page); diff --git a/tests/parallels/settings.spec.ts b/tests/affine-local/e2e/settings.spec.ts similarity index 91% rename from tests/parallels/settings.spec.ts rename to tests/affine-local/e2e/settings.spec.ts index db903bb6ea..38e5302f0d 100644 --- a/tests/parallels/settings.spec.ts +++ b/tests/affine-local/e2e/settings.spec.ts @@ -1,15 +1,14 @@ import { test } from '@affine-test/kit/playwright'; -import { expect } from '@playwright/test'; - -import { openHomePage } from '../libs/load-page'; -import { waitEditorLoad } from '../libs/page-logic'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; +import { waitEditorLoad } from '@affine-test/kit/utils/page-logic'; import { openAboutPanel, openAppearancePanel, openSettingModal, openShortcutsPanel, -} from '../libs/setting'; -import { createWorkspace } from '../libs/workspace'; +} from '@affine-test/kit/utils/setting'; +import { createWorkspace } from '@affine-test/kit/utils/workspace'; +import { expect } from '@playwright/test'; test('Open settings modal', async ({ page }) => { await openHomePage(page); diff --git a/tests/parallels/shortcuts.spec.ts b/tests/affine-local/e2e/shortcuts.spec.ts similarity index 82% rename from tests/parallels/shortcuts.spec.ts rename to tests/affine-local/e2e/shortcuts.spec.ts index fff5d42ecd..5ff457c537 100644 --- a/tests/parallels/shortcuts.spec.ts +++ b/tests/affine-local/e2e/shortcuts.spec.ts @@ -1,9 +1,8 @@ import { test } from '@affine-test/kit/playwright'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; +import { waitEditorLoad } from '@affine-test/kit/utils/page-logic'; import { expect } from '@playwright/test'; -import { openHomePage } from '../libs/load-page'; -import { waitEditorLoad } from '../libs/page-logic'; - test('Open shortcuts modal', async ({ page }) => { await openHomePage(page); await waitEditorLoad(page); diff --git a/tests/parallels/subpage.spec.ts b/tests/affine-local/e2e/subpage.spec.ts similarity index 74% rename from tests/parallels/subpage.spec.ts rename to tests/affine-local/e2e/subpage.spec.ts index 12fe5991c7..6296c6dcc2 100644 --- a/tests/parallels/subpage.spec.ts +++ b/tests/affine-local/e2e/subpage.spec.ts @@ -1,9 +1,8 @@ import { test } from '@affine-test/kit/playwright'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; +import { waitEditorLoad } from '@affine-test/kit/utils/page-logic'; import { expect } from '@playwright/test'; -import { openHomePage } from '../libs/load-page'; -import { waitEditorLoad } from '../libs/page-logic'; - test('Create subpage', async ({ page }) => { await openHomePage(page); await waitEditorLoad(page); diff --git a/tests/parallels/theme.spec.ts b/tests/affine-local/e2e/theme.spec.ts similarity index 87% rename from tests/parallels/theme.spec.ts rename to tests/affine-local/e2e/theme.spec.ts index c0d346f23f..23c1cc09ca 100644 --- a/tests/parallels/theme.spec.ts +++ b/tests/affine-local/e2e/theme.spec.ts @@ -1,11 +1,10 @@ import { resolve } from 'node:path'; import { test, testResultDir } from '@affine-test/kit/playwright'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; +import { waitEditorLoad } from '@affine-test/kit/utils/page-logic'; import { expect } from '@playwright/test'; -import { openHomePage } from '../libs/load-page'; -import { waitEditorLoad } from '../libs/page-logic'; - // default could be anything, according to the system test('default white', async ({ browser }) => { const context = await browser.newContext({ diff --git a/tests/affine-local/package.json b/tests/affine-local/package.json new file mode 100644 index 0000000000..8dcc2453f3 --- /dev/null +++ b/tests/affine-local/package.json @@ -0,0 +1,12 @@ +{ + "name": "@affine-test/affine-local", + "private": true, + "scripts": { + "e2e": "yarn playwright test" + }, + "devDependencies": { + "@affine-test/fixtures": "workspace:*", + "@affine-test/kit": "workspace:*", + "@playwright/test": "^1.35.1" + } +} diff --git a/playwright.config.ts b/tests/affine-local/playwright.config.ts similarity index 98% rename from playwright.config.ts rename to tests/affine-local/playwright.config.ts index 7ada61b239..53b1afd83b 100644 --- a/playwright.config.ts +++ b/tests/affine-local/playwright.config.ts @@ -14,7 +14,7 @@ import type { * See https://playwright.dev/docs/test-configuration. */ const config: PlaywrightTestConfig = { - testDir: './tests/parallels', + testDir: './e2e', fullyParallel: true, timeout: process.env.CI ? 50_000 : 30_000, use: { diff --git a/tests/affine-local/tsconfig.json b/tests/affine-local/tsconfig.json new file mode 100644 index 0000000000..c7587f158b --- /dev/null +++ b/tests/affine-local/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "esModuleInterop": true, + "outDir": "lib" + }, + "include": ["e2e"], + "references": [ + { + "path": "../kit" + }, + { + "path": "../fixtures" + } + ] +} diff --git a/tests/kit/package.json b/tests/kit/package.json index c3c634cc13..97759c5908 100644 --- a/tests/kit/package.json +++ b/tests/kit/package.json @@ -3,7 +3,8 @@ "private": true, "version": "0.7.0-canary.44", "exports": { - "./playwright": "./playwright.ts" + "./playwright": "./playwright.ts", + "./utils/*": "./utils/*.ts" }, "devDependencies": { "@playwright/test": "^1.35.1" diff --git a/tests/kit/tsconfig.json b/tests/kit/tsconfig.json index e3aba77d49..cdcdf6248d 100644 --- a/tests/kit/tsconfig.json +++ b/tests/kit/tsconfig.json @@ -5,5 +5,5 @@ "noEmit": false, "outDir": "lib" }, - "include": ["./*.ts"] + "include": ["./*.ts", "utils"] } diff --git a/tests/libs/editor.ts b/tests/kit/utils/editor.ts similarity index 100% rename from tests/libs/editor.ts rename to tests/kit/utils/editor.ts diff --git a/tests/libs/filter.ts b/tests/kit/utils/filter.ts similarity index 100% rename from tests/libs/filter.ts rename to tests/kit/utils/filter.ts diff --git a/tests/libs/keyboard.ts b/tests/kit/utils/keyboard.ts similarity index 100% rename from tests/libs/keyboard.ts rename to tests/kit/utils/keyboard.ts diff --git a/tests/libs/load-page.ts b/tests/kit/utils/load-page.ts similarity index 100% rename from tests/libs/load-page.ts rename to tests/kit/utils/load-page.ts diff --git a/tests/libs/page-logic.ts b/tests/kit/utils/page-logic.ts similarity index 100% rename from tests/libs/page-logic.ts rename to tests/kit/utils/page-logic.ts diff --git a/tests/libs/setting.ts b/tests/kit/utils/setting.ts similarity index 100% rename from tests/libs/setting.ts rename to tests/kit/utils/setting.ts diff --git a/tests/libs/sidebar.ts b/tests/kit/utils/sidebar.ts similarity index 100% rename from tests/libs/sidebar.ts rename to tests/kit/utils/sidebar.ts diff --git a/tests/kit/utils/utils.ts b/tests/kit/utils/utils.ts new file mode 100644 index 0000000000..260899657c --- /dev/null +++ b/tests/kit/utils/utils.ts @@ -0,0 +1,14 @@ +import type { Page } from '@playwright/test'; + +export async function waitForLogMessage( + page: Page, + log: string +): Promise { + return new Promise(resolve => { + page.on('console', msg => { + if (msg.type() === 'log' && msg.text() === log) { + resolve(true); + } + }); + }); +} diff --git a/tests/libs/workspace.ts b/tests/kit/utils/workspace.ts similarity index 98% rename from tests/libs/workspace.ts rename to tests/kit/utils/workspace.ts index 29fc125ec5..06b50807ea 100644 --- a/tests/libs/workspace.ts +++ b/tests/kit/utils/workspace.ts @@ -34,6 +34,7 @@ export async function assertCurrentWorkspaceFlavour( flavour: 'affine' | 'local', page: Page ) { + // @ts-expect-error const actual = await page.evaluate(() => globalThis.currentWorkspace.flavour); expect(actual).toBe(flavour); } diff --git a/tests/libs/utils.ts b/tests/libs/utils.ts deleted file mode 100644 index 9b6b4d3b07..0000000000 --- a/tests/libs/utils.ts +++ /dev/null @@ -1,140 +0,0 @@ -import type { PageMeta } from '@blocksuite/store'; -import { faker } from '@faker-js/faker'; -import type { Page } from '@playwright/test'; - -// eslint-disable-next-line @typescript-eslint/no-var-requires -const user1 = require('@affine-test/fixtures/built-in-user1.json'); -// eslint-disable-next-line @typescript-eslint/no-var-requires -const user2 = require('@affine-test/fixtures/built-in-user2.json'); - -export async function getBuiltInUser() { - return Promise.all([ - fetch('http://localhost:3000/api/user/token', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - type: 'DebugLoginUser', - email: user1.email, - password: user1.password, - }), - }).then(r => r.json()), - fetch('http://localhost:3000/api/user/token', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - type: 'DebugLoginUser', - email: user2.email, - password: user2.password, - }), - }).then(r => r.json()), - ]); -} - -export async function createFakeUser( - userA = { - name: faker.name.fullName(), - email: faker.internet.email(), - password: faker.internet.password(), - }, - userB = { - name: faker.name.fullName(), - email: faker.internet.email(), - password: faker.internet.password(), - } -) { - try { - const response = await Promise.all([ - fetch('http://127.0.0.1:3000/api/user/token', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - type: 'DebugLoginUser', - email: userA.email, - password: userA.password, - }), - }), - fetch('http://127.0.0.1:3000/api/user/token', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - type: 'DebugLoginUser', - email: userB.email, - password: userB.password, - }), - }), - ]); - return Promise.all( - response.map(res => { - if (!res.ok) { - throw new Error('User not found'); - } - return res.json(); - }) - ); - } catch (e) { - const response = await Promise.all([ - // Register user A - fetch('http://localhost:3000/api/user/token', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - type: 'DebugCreateUser', - ...userA, - }), - }), - // Register user B - fetch('http://localhost:3000/api/user/token', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - type: 'DebugCreateUser', - ...userB, - }), - }), - ]); - return Promise.all(response.map(res => res.json())); - } -} - -export async function loginUser( - page: Page, - token: { - refresh: string; - token: string; - } -) { - await page.evaluate(async token => { - globalThis.setLogin(token); - }, token); -} - -export async function getMetas(page: Page): Promise { - return page.evaluate( - () => globalThis.currentWorkspace.blockSuiteWorkspace.meta.pageMetas ?? [] - ); -} - -export async function waitForLogMessage( - page: Page, - log: string -): Promise { - return new Promise(resolve => { - page.on('console', msg => { - if (msg.type() === 'log' && msg.text() === log) { - resolve(true); - } - }); - }); -} diff --git a/tests/parallels/affine/affine-built-in-workspace.spec.ts b/tests/parallels/affine/affine-built-in-workspace.spec.ts deleted file mode 100644 index c4b9191518..0000000000 --- a/tests/parallels/affine/affine-built-in-workspace.spec.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { test } from '@affine-test/kit/playwright'; -import { expect } from '@playwright/test'; - -import { openHomePage } from '../../libs/load-page'; -import { waitEditorLoad } from '../../libs/page-logic'; -import { - clickNewPageButton, - clickSideBarCurrentWorkspaceBanner, -} from '../../libs/sidebar'; -import { getBuiltInUser, loginUser } from '../../libs/utils'; - -test.fixme('collaborative', async ({ page, browser }) => { - await openHomePage(page); - await waitEditorLoad(page); - const [a, b] = await getBuiltInUser(); - await loginUser(page, a); - await page.reload(); - await page.waitForTimeout(50); - await clickSideBarCurrentWorkspaceBanner(page); - await page.getByText('Cloud Workspace').click(); - const context2 = await browser.newContext(); - const page2 = await context2.newPage(); - await openHomePage(page2); - await loginUser(page2, b); - await page2.reload(); - await clickSideBarCurrentWorkspaceBanner(page2); - await page2.getByText('Joined Workspace').click(); - await clickNewPageButton(page); - const url = page.url(); - await page2.goto(url); - await page.focus('.affine-default-page-block-title'); - await page.type('.affine-default-page-block-title', 'hello', { - delay: 100, - }); - await page.waitForTimeout(100); - const title = (await page - .locator('.affine-default-page-block-title') - .textContent()) as string; - expect(title.trim()).toBe('hello'); -}); diff --git a/tests/parallels/affine/affine-lost-auth.spec.ts b/tests/parallels/affine/affine-lost-auth.spec.ts deleted file mode 100644 index bcb2d2090f..0000000000 --- a/tests/parallels/affine/affine-lost-auth.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { test } from '@affine-test/kit/playwright'; -import { expect } from '@playwright/test'; - -import { openHomePage } from '../../libs/load-page'; -import { waitEditorLoad } from '../../libs/page-logic'; -import { clickSideBarAllPageButton } from '../../libs/sidebar'; -import { createFakeUser, loginUser } from '../../libs/utils'; -import { enableAffineCloudWorkspace } from '../../libs/workspace'; - -test.fixme('authorization expired', async ({ page }) => { - await openHomePage(page); - await waitEditorLoad(page); - const [a] = await createFakeUser(); - await loginUser(page, a); - await enableAffineCloudWorkspace(page); - await clickSideBarAllPageButton(page); - await page.evaluate(() => localStorage.removeItem('affine-login-v2')); - await openHomePage(page); - await expect(page.getByTestId('new-workspace')).toBeVisible(); -}); diff --git a/tests/parallels/affine/affine-public-single-page.spec.ts b/tests/parallels/affine/affine-public-single-page.spec.ts deleted file mode 100644 index fcc81bcb2b..0000000000 --- a/tests/parallels/affine/affine-public-single-page.spec.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { test } from '@affine-test/kit/playwright'; -import { expect } from '@playwright/test'; - -import { openHomePage } from '../../libs/load-page'; -import { waitEditorLoad } from '../../libs/page-logic'; -import { clickNewPageButton } from '../../libs/sidebar'; -import { createFakeUser, loginUser } from '../../libs/utils'; -import { createWorkspace } from '../../libs/workspace'; - -test.fixme('public single page', async ({ page, browser }) => { - await openHomePage(page); - const [a] = await createFakeUser(); - await loginUser(page, a); - const name = `test-${Date.now()}`; - await createWorkspace({ name }, page); - await waitEditorLoad(page); - await clickNewPageButton(page); - const page1Id = page.url().split('/').at(-1); - await clickNewPageButton(page); - const page2Id = page.url().split('/').at(-1); - expect(typeof page2Id).toBe('string'); - expect(page1Id).not.toBe(page2Id); - const title = 'This is page 2'; - await page.locator('[data-block-is-title="true"]').type(title, { - delay: 50, - }); - await page.getByTestId('share-menu-button').click(); - await page.getByTestId('share-menu-enable-affine-cloud-button').click(); - const promise = page.evaluate( - async () => - new Promise(resolve => - window.addEventListener('affine-workspace:transform', resolve, { - once: true, - }) - ) - ); - await page.getByTestId('confirm-enable-cloud-button').click(); - await promise; - await page.waitForSelector('v-line'); - const currentTitle = await page - .locator('[data-block-is-title="true"]') - .textContent(); - expect(currentTitle).toBe(title); - await page.getByTestId('share-menu-button').click(); - await page.getByTestId('affine-share-create-link').click(); - await page.getByTestId('affine-share-copy-link').click(); - const url = await page.evaluate(() => navigator.clipboard.readText()); - expect(url.startsWith('http://localhost:8080/public-workspace/')).toBe(true); - await page.waitForTimeout(1000); - const context2 = await browser.newContext(); - const page2 = await context2.newPage(); - await page2.goto(url); - await page2.waitForSelector('v-line'); - const currentTitle2 = await page2 - .locator('[data-block-is-title="true"]') - .textContent(); - expect(currentTitle2).toBe(title); -}); diff --git a/tests/parallels/affine/affine-public-workspace.spec.ts b/tests/parallels/affine/affine-public-workspace.spec.ts deleted file mode 100644 index ce0369d6a3..0000000000 --- a/tests/parallels/affine/affine-public-workspace.spec.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { test } from '@affine-test/kit/playwright'; -import { expect } from '@playwright/test'; - -import { openHomePage } from '../../libs/load-page'; -import { waitEditorLoad } from '../../libs/page-logic'; -import { clickPublishPanel } from '../../libs/setting'; -import { - clickSideBarAllPageButton, - clickSideBarSettingButton, -} from '../../libs/sidebar'; -import { createFakeUser, loginUser } from '../../libs/utils'; -import { createWorkspace } from '../../libs/workspace'; - -test.fixme('enable public workspace', async ({ page, context }) => { - await openHomePage(page); - const [a] = await createFakeUser(); - await loginUser(page, a); - await waitEditorLoad(page); - const name = `test-${Date.now()}`; - await createWorkspace({ name }, page); - await waitEditorLoad(page); - await clickSideBarSettingButton(page); - await page.waitForTimeout(50); - await clickPublishPanel(page); - await page.getByTestId('publish-enable-affine-cloud-button').click(); - await page.getByTestId('confirm-enable-affine-cloud-button').click(); - await page.getByTestId('publish-to-web-button').waitFor({ - timeout: 10000, - }); - await page.getByTestId('publish-to-web-button').click(); - await page.getByTestId('share-url').waitFor({ - timeout: 10000, - }); - const url = await page.getByTestId('share-url').inputValue(); - expect(url.startsWith('http://localhost:8080/public-workspace/')).toBe(true); - const page2 = await context.newPage(); - await page2.goto(url); - await page2.waitForSelector('thead', { - timeout: 10000, - }); - await page2.getByText('Untitled').click(); -}); - -test.fixme('access public workspace page', async ({ page, browser }) => { - await openHomePage(page); - const [a] = await createFakeUser(); - await loginUser(page, a); - await waitEditorLoad(page); - const name = `test-${Date.now()}`; - await createWorkspace({ name }, page); - await waitEditorLoad(page); - await clickSideBarSettingButton(page); - await page.waitForTimeout(50); - await clickPublishPanel(page); - await page.getByTestId('publish-enable-affine-cloud-button').click(); - await page.getByTestId('confirm-enable-affine-cloud-button').click(); - await page.getByTestId('publish-to-web-button').waitFor({ - timeout: 10000, - }); - await page.getByTestId('publish-to-web-button').click(); - await page.getByTestId('share-url').waitFor({ - timeout: 10000, - }); - await clickSideBarAllPageButton(page); - await page.locator('tr').nth(2).click(); - const url = page.url(); - const context = await browser.newContext(); - const page2 = await context.newPage(); - await page2.goto(url.replace('workspace', 'public-workspace')); - await page2.waitForSelector('v-line'); -}); diff --git a/tests/parallels/affine/affine-workspace.spec.ts b/tests/parallels/affine/affine-workspace.spec.ts deleted file mode 100644 index a37dc25891..0000000000 --- a/tests/parallels/affine/affine-workspace.spec.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { expect } from '@playwright/test'; - -import { openHomePage } from '../../libs/load-page'; -import { waitEditorLoad } from '../../libs/page-logic'; - -// eslint-disable-next-line @typescript-eslint/no-var-requires -const userA = require('../../fixtures/userA.json'); -// eslint-disable-next-line @typescript-eslint/no-var-requires -const userB = require('../../fixtures/userB.json'); -import { test } from '@affine-test/kit/playwright'; - -import { - clickNewPageButton, - clickSideBarCurrentWorkspaceBanner, -} from '../../libs/sidebar'; -import { createFakeUser, loginUser } from '../../libs/utils'; -import { - assertCurrentWorkspaceFlavour, - createWorkspace, - enableAffineCloudWorkspace, - openWorkspaceListModal, -} from '../../libs/workspace'; - -test.fixme('should login with user A', async ({ page }) => { - await openHomePage(page); - await waitEditorLoad(page); - const [a] = await createFakeUser(userA, userB); - await loginUser(page, a); - await clickSideBarCurrentWorkspaceBanner(page); - const footer = page.locator('[data-testid="workspace-list-modal-footer"]'); - expect(await footer.getByText(userA.name).isVisible()).toBe(true); - expect(await footer.getByText(userA.email).isVisible()).toBe(true); - await assertCurrentWorkspaceFlavour('local', page); -}); - -test.fixme('should enable affine workspace successfully', async ({ page }) => { - await openHomePage(page); - await waitEditorLoad(page); - const [a] = await createFakeUser(); - await loginUser(page, a); - const name = `test-${Date.now()}`; - await createWorkspace({ name }, page); - await page.waitForTimeout(50); - await enableAffineCloudWorkspace(page); - await clickNewPageButton(page); - await page.locator('[data-block-is-title="true"]').type('Hello, world!', { - delay: 50, - }); - await page.waitForTimeout(1000); - await assertCurrentWorkspaceFlavour('affine', page); - await openWorkspaceListModal(page); - await page.getByTestId('workspace-list-modal-sign-out').click(); - await waitEditorLoad(page); - await assertCurrentWorkspaceFlavour('local', page); -}); diff --git a/tests/tsconfig.json b/tests/tsconfig.json deleted file mode 100644 index f50a4ce320..0000000000 --- a/tests/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "baseUrl": ".", - "noEmit": true - }, - "include": ["**.spec.ts", "**.test.ts"] -} diff --git a/tests/unit/compare-config.spec.ts b/tests/unit/compare-config.spec.ts index da3adcbea8..0cf084dee2 100644 --- a/tests/unit/compare-config.spec.ts +++ b/tests/unit/compare-config.spec.ts @@ -2,10 +2,14 @@ import { expect, test } from 'vitest'; test('compare config', async () => { const { default: nextConfigMock } = await import( + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore '../../scripts/vitest/next-config-mock' ); const mockConfig = nextConfigMock().publicRuntimeConfig; const { default: nextConfig } = await import( + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore '../../apps/web/next.config.mjs' ); const config = nextConfig.publicRuntimeConfig; diff --git a/tests/unit/tsconfig.json b/tests/unit/tsconfig.json new file mode 100644 index 0000000000..7e72053b80 --- /dev/null +++ b/tests/unit/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": "..", + "noEmit": true + }, + "include": ["**.spec.ts"] +} diff --git a/tsconfig.json b/tsconfig.json index 7d3f997c3d..f9872f9a26 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -120,12 +120,7 @@ { "path": "./plugins/copilot" }, - - // Tests - { - "path": "./tests" - }, - + // Packages { "path": "./packages/component" }, @@ -144,9 +139,9 @@ { "path": "./packages/y-indexeddb" }, - + // Tests { - "path": "./tests/fixtures" + "path": "./tests/unit" }, { "path": "./tests/kit" @@ -154,6 +149,9 @@ { "path": "./tsconfig.node.json" }, + { + "path": "./tests/affine-local" + }, { "path": "./tests/affine-legacy/0.7.0-canary.18" } diff --git a/yarn.lock b/yarn.lock index 2226322ecb..d10e67c3d7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -38,6 +38,16 @@ __metadata: languageName: unknown linkType: soft +"@affine-test/affine-local@workspace:tests/affine-local": + version: 0.0.0-use.local + resolution: "@affine-test/affine-local@workspace:tests/affine-local" + dependencies: + "@affine-test/fixtures": "workspace:*" + "@affine-test/kit": "workspace:*" + "@playwright/test": ^1.35.1 + languageName: unknown + linkType: soft + "@affine-test/fixtures@workspace:*, @affine-test/fixtures@workspace:tests/fixtures": version: 0.0.0-use.local resolution: "@affine-test/fixtures@workspace:tests/fixtures"