1*6dbdd20aSAndroid Build Coastguard Worker// Copyright (C) 2024 The Android Open Source Project 2*6dbdd20aSAndroid Build Coastguard Worker// 3*6dbdd20aSAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*6dbdd20aSAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*6dbdd20aSAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*6dbdd20aSAndroid Build Coastguard Worker// 7*6dbdd20aSAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*6dbdd20aSAndroid Build Coastguard Worker// 9*6dbdd20aSAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*6dbdd20aSAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*6dbdd20aSAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*6dbdd20aSAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*6dbdd20aSAndroid Build Coastguard Worker// limitations under the License. 14*6dbdd20aSAndroid Build Coastguard Worker 15*6dbdd20aSAndroid Build Coastguard Workerimport {test, Page} from '@playwright/test'; 16*6dbdd20aSAndroid Build Coastguard Workerimport {PerfettoTestHelper} from './perfetto_ui_test_helper'; 17*6dbdd20aSAndroid Build Coastguard Worker 18*6dbdd20aSAndroid Build Coastguard Workertest.describe.configure({mode: 'serial'}); 19*6dbdd20aSAndroid Build Coastguard Worker 20*6dbdd20aSAndroid Build Coastguard Workerlet pth: PerfettoTestHelper; 21*6dbdd20aSAndroid Build Coastguard Workerlet page: Page; 22*6dbdd20aSAndroid Build Coastguard Worker 23*6dbdd20aSAndroid Build Coastguard Workerconst SQL_QUERY = `select id, ts, dur, name, category, track_id from slices 24*6dbdd20aSAndroid Build Coastguard Workerwhere category is not null limit 1000`; 25*6dbdd20aSAndroid Build Coastguard Worker 26*6dbdd20aSAndroid Build Coastguard Workertest.beforeAll(async ({browser}, _testInfo) => { 27*6dbdd20aSAndroid Build Coastguard Worker page = await browser.newPage(); 28*6dbdd20aSAndroid Build Coastguard Worker pth = new PerfettoTestHelper(page); 29*6dbdd20aSAndroid Build Coastguard Worker await pth.openTraceFile('api34_startup_cold.perfetto-trace'); 30*6dbdd20aSAndroid Build Coastguard Worker}); 31*6dbdd20aSAndroid Build Coastguard Worker 32*6dbdd20aSAndroid Build Coastguard Workertest('debug tracks', async () => { 33*6dbdd20aSAndroid Build Coastguard Worker const omnibox = page.locator('input[ref=omnibox]'); 34*6dbdd20aSAndroid Build Coastguard Worker await omnibox.focus(); 35*6dbdd20aSAndroid Build Coastguard Worker await omnibox.selectText(); 36*6dbdd20aSAndroid Build Coastguard Worker await omnibox.press(':'); 37*6dbdd20aSAndroid Build Coastguard Worker await pth.waitForPerfettoIdle(); 38*6dbdd20aSAndroid Build Coastguard Worker await omnibox.fill(SQL_QUERY); 39*6dbdd20aSAndroid Build Coastguard Worker await pth.waitForPerfettoIdle(); 40*6dbdd20aSAndroid Build Coastguard Worker await omnibox.press('Enter'); 41*6dbdd20aSAndroid Build Coastguard Worker await pth.waitForPerfettoIdle(); 42*6dbdd20aSAndroid Build Coastguard Worker 43*6dbdd20aSAndroid Build Coastguard Worker await page.getByRole('button', {name: 'Show debug track'}).click(); 44*6dbdd20aSAndroid Build Coastguard Worker await pth.waitForPerfettoIdle(); 45*6dbdd20aSAndroid Build Coastguard Worker await page.keyboard.type('debug track'); // The track name 46*6dbdd20aSAndroid Build Coastguard Worker await page.keyboard.press('Enter'); 47*6dbdd20aSAndroid Build Coastguard Worker await pth.waitForPerfettoIdle(); 48*6dbdd20aSAndroid Build Coastguard Worker await pth.waitForIdleAndScreenshot('debug track added.png'); 49*6dbdd20aSAndroid Build Coastguard Worker 50*6dbdd20aSAndroid Build Coastguard Worker // Click on a slice on the debug track. 51*6dbdd20aSAndroid Build Coastguard Worker await page.mouse.click(590, 180); 52*6dbdd20aSAndroid Build Coastguard Worker await pth.waitForPerfettoIdle(); 53*6dbdd20aSAndroid Build Coastguard Worker await pth.waitForIdleAndScreenshot('debug slice clicked.png'); 54*6dbdd20aSAndroid Build Coastguard Worker 55*6dbdd20aSAndroid Build Coastguard Worker // Close the debug track. 56*6dbdd20aSAndroid Build Coastguard Worker await pth.locateTrack('debug track').getByText('close').first().click(); 57*6dbdd20aSAndroid Build Coastguard Worker await pth.waitForPerfettoIdle(); 58*6dbdd20aSAndroid Build Coastguard Worker await pth.waitForIdleAndScreenshot('debug track removed.png'); 59*6dbdd20aSAndroid Build Coastguard Worker}); 60*6dbdd20aSAndroid Build Coastguard Worker 61*6dbdd20aSAndroid Build Coastguard Workertest('debug tracks pivot', async () => { 62*6dbdd20aSAndroid Build Coastguard Worker const omnibox = page.locator('input[ref=omnibox]'); 63*6dbdd20aSAndroid Build Coastguard Worker await omnibox.focus(); 64*6dbdd20aSAndroid Build Coastguard Worker await omnibox.selectText(); 65*6dbdd20aSAndroid Build Coastguard Worker await omnibox.press(':'); 66*6dbdd20aSAndroid Build Coastguard Worker await pth.waitForPerfettoIdle(); 67*6dbdd20aSAndroid Build Coastguard Worker await omnibox.fill(SQL_QUERY); 68*6dbdd20aSAndroid Build Coastguard Worker await pth.waitForPerfettoIdle(); 69*6dbdd20aSAndroid Build Coastguard Worker await omnibox.press('Enter'); 70*6dbdd20aSAndroid Build Coastguard Worker 71*6dbdd20aSAndroid Build Coastguard Worker await page.getByRole('button', {name: 'Show debug track'}).click(); 72*6dbdd20aSAndroid Build Coastguard Worker await pth.waitForPerfettoIdle(); 73*6dbdd20aSAndroid Build Coastguard Worker await page.keyboard.type('pivot'); // The track name 74*6dbdd20aSAndroid Build Coastguard Worker await page.locator('.pf-popup-portal #pivot').selectOption('category'); 75*6dbdd20aSAndroid Build Coastguard Worker await page.keyboard.press('Enter'); 76*6dbdd20aSAndroid Build Coastguard Worker await pth.waitForPerfettoIdle(); 77*6dbdd20aSAndroid Build Coastguard Worker await pth.waitForIdleAndScreenshot('debug track pivot.png', { 78*6dbdd20aSAndroid Build Coastguard Worker clip: { 79*6dbdd20aSAndroid Build Coastguard Worker x: (await pth.sidebarSize()).width, 80*6dbdd20aSAndroid Build Coastguard Worker y: 180, 81*6dbdd20aSAndroid Build Coastguard Worker width: 1920, 82*6dbdd20aSAndroid Build Coastguard Worker height: 600, 83*6dbdd20aSAndroid Build Coastguard Worker }, 84*6dbdd20aSAndroid Build Coastguard Worker }); 85*6dbdd20aSAndroid Build Coastguard Worker}); 86