feat(core): enable new all docs by default (#12404)

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **Refactor**
  - Simplified the user interface by always displaying the new All Pages view, removing the feature flag and old page version.
  - Updated selection interactions to use shift+click on document items instead of checkboxes.
  - Centralized drag-and-drop functionality in document list items and simplified drag handle behavior.
  - Generalized new page button component to accept standard HTML attributes.
  - Changed test ID attributes on new page buttons and list headers to use standard `data-testid`.

- **Bug Fixes**
  - Added stable test identifiers to new page buttons, document list items, menu items, and operation buttons for improved test reliability.
  - Enabled external drag-and-drop support on the trash button.

- **Tests**
  - Streamlined and updated end-to-end tests to match the new selection flow and UI changes, removing outdated or redundant test cases.
  - Simplified utility functions and wait conditions in test helpers for better accuracy and maintainability.
  - Updated selectors in tests to reflect new document item identifiers and centralized page element retrieval using utility functions.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
EYHN
2025-05-22 11:29:05 +00:00
parent 333dc9cb89
commit 5035ab218d
28 changed files with 212 additions and 398 deletions

View File

@@ -7,6 +7,7 @@ import {
clickNewPageButton,
createLinkedPage,
dragTo,
getPageByTitle,
waitForAllPagesLoad,
} from '@affine-test/kit/utils/page-logic';
import { clickSideBarAllPageButton } from '@affine-test/kit/utils/sidebar';
@@ -60,14 +61,10 @@ test('open split view in all docs (operations button)', async ({ page }) => {
await clickNewPageButton(page, testTitle);
await clickSideBarAllPageButton(page);
await waitForAllPagesLoad(page);
await page
.getByTestId('page-list-item')
.filter({
hasText: testTitle,
})
.getByTestId('page-list-operation-button')
await getPageByTitle(page, testTitle)
.getByTestId('doc-list-operation-button')
.click();
await page.getByRole('menuitem', { name: 'Open in Split View' }).click();
await page.getByRole('menuitem', { name: 'Open in split view' }).click();
await expect(page.getByTestId('split-view-panel')).toHaveCount(2);
const targetPage = page.getByTestId('split-view-panel').last();
await expect(targetPage).toHaveAttribute('data-is-active', 'true');
@@ -85,12 +82,7 @@ test('open split view in all docs (drag to resize handle)', async ({
await clickSideBarAllPageButton(page);
await waitForAllPagesLoad(page);
// case for AF-2061. toggle selection checkbox
await page.getByTestId('page-list-header-selection-checkbox').click();
const pageItem = page.getByTestId('page-list-item').filter({
hasText: testTitle,
});
const pageItem = getPageByTitle(page, testTitle);
const leftResizeHandle = page.getByTestId('resize-handle').first();

View File

@@ -9,6 +9,7 @@ import {
clickNewPageButton,
createLinkedPage,
dragTo,
getPageByTitle,
} from '@affine-test/kit/utils/page-logic';
import { clickSideBarAllPageButton } from '@affine-test/kit/utils/sidebar';
import { expect } from '@playwright/test';
@@ -21,11 +22,6 @@ test('create new tab', async ({ views }) => {
// new tab title should be All docs
await expectTabTitle(page, 1, 'All docs');
await expectActiveTab(page, 1);
page = await views.getActive();
// page content should be at all docs page
await expect(page.getByTestId('virtualized-page-list')).toContainText(
'All docs'
);
});
test('can switch & close tab by clicking', async ({ page }) => {
@@ -115,7 +111,7 @@ test('drag a page from "All pages" list to tabs header', async ({ page }) => {
await dragTo(
page,
page.locator(`[data-testid="page-list-item"]:has-text("${title}")`),
getPageByTitle(page, title),
page.getByTestId('add-tab-view-button')
);

View File

@@ -4,6 +4,7 @@ import type { apis } from '@affine/electron-api';
import { test } from '@affine-test/kit/electron';
import {
getBlockSuiteEditorTitle,
getPageByTitle,
waitForEditorLoad,
} from '@affine-test/kit/utils/page-logic';
import {
@@ -102,7 +103,7 @@ test('export then add', async ({ page, appInfo, workspace }) => {
await page.waitForTimeout(1000);
// find button which has the title "test1"
await page.getByTestId('page-list-item').getByText('test1').click();
await getPageByTitle(page, 'test1').click();
await waitForEditorLoad(page);
const title = page.locator('[data-block-is-title] >> text="test1"');
await expect(title).toBeVisible();