cherry-pick(#33797): fix(trace): in `indexTree` check `isVisible` before adding to result (#33797)

This commit is contained in:
Simon Knott 2024-11-28 14:04:34 +01:00
Родитель 1dc8b3cbdc
Коммит 008722b2d9
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 8CEDC00028084AEC
2 изменённых файлов: 29 добавлений и 3 удалений

Просмотреть файл

@ -319,7 +319,9 @@ function indexTree<T extends TreeItem>(
selectedItem: T | undefined,
expandedItems: Map<string, boolean | undefined>,
autoExpandDepth: number,
isVisible?: (item: T) => boolean): Map<T, TreeItemData> {
isVisible: (item: T) => boolean = () => true): Map<T, TreeItemData> {
if (!isVisible(rootItem))
return new Map();
const result = new Map<T, TreeItemData>();
const temporaryExpanded = new Set<string>();
@ -328,9 +330,9 @@ function indexTree<T extends TreeItem>(
let lastItem: T | null = null;
const appendChildren = (parent: T, depth: number) => {
if (isVisible && !isVisible(parent))
return;
for (const item of parent.children as T[]) {
if (!isVisible(item))
continue;
const expandState = temporaryExpanded.has(item.id) || expandedItems.get(item.id);
const autoExpandMatches = autoExpandDepth > depth && result.size < 25 && expandState !== false;
const expanded = item.children.length ? expandState ?? autoExpandMatches : undefined;

Просмотреть файл

@ -307,3 +307,27 @@ test('should show request source context id', async ({ runUITest, server }) => {
await expect(page.getByText('page#2')).toBeVisible();
await expect(page.getByText('api#1')).toBeVisible();
});
test('should filter actions tab on double-click', async ({ runUITest, server }) => {
const { page } = await runUITest({
'a.spec.ts': `
import { test, expect } from '@playwright/test';
test('pass', async ({ page }) => {
await page.goto('${server.EMPTY_PAGE}');
});
`,
});
await page.getByText('pass').dblclick();
const actionsTree = page.getByTestId('actions-tree');
await expect(actionsTree.getByRole('treeitem')).toHaveText([
/Before Hooks/,
/page.goto/,
/After Hooks/,
]);
await actionsTree.getByRole('treeitem', { name: 'page.goto' }).dblclick();
await expect(actionsTree.getByRole('treeitem')).toHaveText([
/page.goto/,
]);
});