Skip to content

Commit

Permalink
Merge "ui: add tests for aggregation" into main
Browse files Browse the repository at this point in the history
  • Loading branch information
primiano authored and Gerrit Code Review committed Sep 26, 2024
2 parents 089efac + 6059a6d commit 05a2df8
Show file tree
Hide file tree
Showing 14 changed files with 121 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0e784faccf85b5c08465495053c9a4114ff3162c2d4d8a8bc78bbcf95469d0d2
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
f7bb521a4590836dfeb5671c8cdda8b49ebea6cd6a44d4a1ea9c4e921076be92
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
f72742ac692767575a225ca2067e4fa4f285548dea2f9b187ea081325717edb1
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
8d15ffc392959dcaecf7544f530b7d73ff255b6cd904138060858c46fdc49517
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
026a1a1a9606b55cc60f389c1f39ff0e004cbe784c88679e6c491cf332f0ea66
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0cf9d54fcc5276d4e7ad083d9d5e00dabf0b72bfeabebcf799e1ba09dde54074
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
d5a12d3d1e9be18adc04d74bf8e73f249184f4741087473858ca1395e4140881
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
b659347d66b25d0be1da24782d700e8a4d9d7ce1396ed7f4a6255773f5fb16fa
Original file line number Diff line number Diff line change
@@ -1 +1 @@
575a4afab85e14f66cce2e38d5097a15e0ad1293bac686fdb999baf78ee4b313
7a70ac4a6166da36663ef7e79366e512fe84d9ec516e0d7f2b1b934661139767
98 changes: 98 additions & 0 deletions ui/src/test/aggregation.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
// Copyright (C) 2024 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

import {test, Page} from '@playwright/test';
import {PerfettoTestHelper} from './perfetto_ui_test_helper';
import {assertExists} from '../base/logging';

test.describe.configure({mode: 'serial'});

let pth: PerfettoTestHelper;
let page: Page;

test.beforeAll(async ({browser}, _testInfo) => {
page = await browser.newPage();
pth = new PerfettoTestHelper(page);
await pth.openTraceFile('api34_startup_cold.perfetto-trace');
});

test('sched', async () => {
await page.mouse.move(600, 250);
await page.mouse.down();
await page.mouse.move(800, 350);
await page.mouse.up();
await pth.waitForPerfettoIdle();
await pth.waitForIdleAndScreenshot('cpu-by-thread.png');

await page.click('button[label="CPU by process"]');
await pth.waitForIdleAndScreenshot('cpu-by-process.png');

// Now test sorting.

const hdr = page.getByRole('cell', {name: 'Avg Wall duration (ms)'});
await hdr.click();
await pth.waitForIdleAndScreenshot('sort-by-wall-duration.png');

await hdr.click();
await pth.waitForIdleAndScreenshot('sort-by-wall-duration-desc.png');

await page.getByRole('cell', {name: 'Occurrences'}).click();
await pth.waitForIdleAndScreenshot('sort-by-occurrences.png');
});

test('gpu counter', async () => {
await page.keyboard.press('Escape');
const gpuTrack = pth.locateTrack('Gpu 0 Frequency');
const coords = assertExists(await gpuTrack.boundingBox());
await page.mouse.move(600, coords.y + 10);
await page.mouse.down();
await page.mouse.move(800, coords.y + 60);
await page.mouse.up();
await pth.waitForIdleAndScreenshot('gpu-counter-aggregation.png');
});

test('frametimeline', async () => {
await page.keyboard.press('Escape');
const sysui = pth.locateTrackGroup('com.android.systemui 25348');
await sysui.scrollIntoViewIfNeeded();
await pth.toggleTrackGroup(sysui);
const actualTimeline = pth.locateTrack(
'com.android.systemui 25348/Actual Timeline',
sysui,
);
const coords = assertExists(await actualTimeline.boundingBox());
await page.mouse.move(600, coords.y + 10);
await page.mouse.down();
await page.mouse.move(1000, coords.y + 20);
await page.mouse.up();
await pth.waitForIdleAndScreenshot('frame-timeline-aggregation.png');
});

test('slices', async () => {
await page.keyboard.press('Escape');
const syssrv = pth.locateTrackGroup('system_server 1719');
await syssrv.scrollIntoViewIfNeeded();
await pth.toggleTrackGroup(syssrv);
const animThread = pth
.locateTrack('system_server 1719/android.anim 1754', syssrv)
.nth(1);
await animThread.scrollIntoViewIfNeeded();
await pth.waitForPerfettoIdle();
const coords = assertExists(await animThread.boundingBox());
await page.mouse.move(600, coords.y + 10);
await page.mouse.down();
await page.mouse.move(1000, coords.y + 20);
await page.mouse.up();
await pth.waitForIdleAndScreenshot('slice-aggregation.png');
});
10 changes: 4 additions & 6 deletions ui/src/test/chrome_rendering_desktop.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,11 @@ test('load trace', async () => {
});

test('expand browser', async () => {
const title = page.locator(
`h1.pf-track-title.pf-clickable[ref="Browser 12685"]`,
);
title.scrollIntoViewIfNeeded();
await title.click();
const grp = pth.locateTrackGroup('Browser 12685');
grp.scrollIntoViewIfNeeded();
await pth.toggleTrackGroup(grp);
await pth.waitForIdleAndScreenshot('browser_expanded.png');
await title.click();
await pth.toggleTrackGroup(grp);
});

test('slice with flows', async () => {
Expand Down
2 changes: 1 addition & 1 deletion ui/src/test/independent_features.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,6 @@ test('debuggable chip', async ({browser}) => {
await trackGroup.scrollIntoViewIfNeeded();
await pth.waitForIdleAndScreenshot('track_with_debuggable_chip.png');

await trackGroup.locator('.pf-track-title').click();
await pth.toggleTrackGroup(trackGroup);
await pth.waitForIdleAndScreenshot('track_with_debuggable_chip_expanded.png');
});
3 changes: 1 addition & 2 deletions ui/src/test/load_and_tracks.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,7 @@ test('track expand and collapse', async () => {

test('pin tracks', async () => {
const trackGroup = pth.locateTrackGroup('traced 1055');
await trackGroup.locator('.pf-track-title').click();
await pth.waitForPerfettoIdle();
await pth.toggleTrackGroup(trackGroup);
let track = pth.locateTrack('traced 1055/mem.rss', trackGroup);
await pth.pinTrackUsingShellBtn(track);
await pth.waitForPerfettoIdle();
Expand Down
8 changes: 8 additions & 0 deletions ui/src/test/perfetto_ui_test_helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,9 @@ export class PerfettoTestHelper {
const file = await this.page.waitForSelector('input.trace_file', {
state: 'attached',
});
await this.page.evaluate(() =>
localStorage.setItem('dismissedPanningHint', 'true'),
);
const tracePath = this.getTestTracePath(traceName);
assertExists(file).setInputFiles(tracePath);
await this.waitForPerfettoIdle();
Expand Down Expand Up @@ -82,6 +85,11 @@ export class PerfettoTestHelper {
.filter({has: this.page.locator(`h1[ref="${name}"]`)});
}

async toggleTrackGroup(locator: Locator) {
await locator.locator('.pf-track-title').first().click();
await this.waitForPerfettoIdle();
}

locateTrack(name: string, trackGroup?: Locator): Locator {
return (trackGroup ?? this.page)
.locator('.pf-track')
Expand Down

0 comments on commit 05a2df8

Please sign in to comment.