Skip to content

Commit afd1d2f

Browse files
jackfranklinDevtools-frontend LUCI CQ
authored and
Devtools-frontend LUCI CQ
committed
Test for TimelineTreeView text filtering
To replace a Chromium layout test [1]. [1]: https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/web_tests/http/tests/devtools/tracing/timeline-misc/timeline-filtering.js;l=1;drc=a7c08b69ab255aced13b8cb9cbf1cb15a421047a Bug: 40270061 Change-Id: Ib1734dd8e42a18c83219550c15be3e817acd9334 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/5439355 Commit-Queue: Alina Varkki <[email protected]> Reviewed-by: Alina Varkki <[email protected]> Auto-Submit: Jack Franklin <[email protected]>
1 parent 2fa2c1c commit afd1d2f

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

front_end/panels/timeline/TimelineTreeView.test.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ describeWithEnvironment('TimelineTreeView', function() {
3939
const bottomNode = firstNode.children().values().next().value as TimelineModel.TimelineProfileTree.Node;
4040
assert.strictEqual(bottomNode.event?.name, 'second console time');
4141
});
42+
4243
it('shows instant events as nodes', async function() {
4344
const data = await TraceLoader.allModels(this, 'user-timings.json.gz');
4445
const eventTreeView = new Timeline.EventsTimelineTreeView.EventsTimelineTreeView(mockViewDelegate);
@@ -52,7 +53,26 @@ describeWithEnvironment('TimelineTreeView', function() {
5253
const secondNode = topNodesIterator.next().value as TimelineModel.TimelineProfileTree.Node;
5354
assert.strictEqual(secondNode.event?.name, 'mark3');
5455
});
56+
57+
it('can filter events by text', async function() {
58+
const data = await TraceLoader.allModels(this, 'user-timings.json.gz');
59+
const eventTreeView = new Timeline.EventsTimelineTreeView.EventsTimelineTreeView(mockViewDelegate);
60+
const consoleTimings = [...data.traceParsedData.UserTimings.performanceMarks];
61+
eventTreeView.setModelWithEvents(data.performanceModel, consoleTimings, data.traceParsedData);
62+
let tree = eventTreeView.buildTree();
63+
const topLevelChildren = Array.from(tree.children().values(), childNode => {
64+
return childNode.event?.name || 'NO_EVENT_FOR_NODE';
65+
});
66+
assert.deepEqual(topLevelChildren, ['mark1', 'mark3']);
67+
eventTreeView.textFilterUI?.setValue('mark1', true);
68+
tree = eventTreeView.buildTree();
69+
const newTopLevelChildren = Array.from(tree.children().values(), childNode => {
70+
return childNode.event?.name || 'NO_EVENT_FOR_NODE';
71+
});
72+
assert.deepEqual(newTopLevelChildren, ['mark1']);
73+
});
5574
});
75+
5676
describe('BottomUpTimelineTreeView', function() {
5777
it('Creates a bottom up tree from nestable events', async function() {
5878
const data = await TraceLoader.allModels(this, 'sync-like-timings.json.gz');
@@ -79,6 +99,7 @@ describeWithEnvironment('TimelineTreeView', function() {
7999
assert.strictEqual(childNode.event?.name, 'first console time');
80100
});
81101
});
102+
82103
describe('CallTreeTimelineTreeView', function() {
83104
it('Creates a call tree from nestable events', async function() {
84105
const data = await TraceLoader.allModels(this, 'sync-like-timings.json.gz');
@@ -102,6 +123,7 @@ describeWithEnvironment('TimelineTreeView', function() {
102123
assert.strictEqual(childNode.event?.name, 'second console time');
103124
});
104125
});
126+
105127
describe('event groupping', function() {
106128
it('groups events by category in the Call Tree view', async function() {
107129
const data = await TraceLoader.allModels(this, 'sync-like-timings.json.gz');

0 commit comments

Comments
 (0)