mirror of
https://github.com/ROCm/composable_kernel.git
synced 2026-04-20 14:59:17 +00:00
Automated Perfetto UI Notifications (#3255)
* Testing visualization generation * Update Jenkinsfile * Update Jenkinsfile * Update Jenkinsfile * Update Jenkinsfile * Update Jenkinsfile * Update Jenkinsfile * Update Jenkinsfile * Update Jenkinsfile * Update Jenkinsfile * Update Jenkinsfile * Update Jenkinsfile * Update Jenkinsfile * Adding dummy test data * Update Jenkinsfile * Update Jenkinsfile * Adding notifications * Testing * Update Jenkinsfile * Update Jenkinsfile * Update Jenkinsfile * Update Jenkinsfile * Update Jenkinsfile * Image compression * Update Jenkinsfile * Moving capture logic to main Jenkins file * Testing generation * Update Jenkinsfile * Update Jenkinsfile * Update Jenkinsfile * Update Jenkinsfile * Update Jenkinsfile * Update Jenkinsfile * Update Jenkinsfile * Update Jenkinsfile * Update Jenkinsfile * Fixing curl request * Update Jenkinsfile * Clean up * Fix * Fixing notification * Testing message creation * Adjusting message payload * Testing notification generation * Updating main jenkinsfile * Fixing cleanup call * Removing test pipeline code * Comment clean up * Testing pipeline * Update Jenkinsfile * Update Jenkinsfile * Update Jenkinsfile * Moving archive Moving trace archive to safe location before source checkout * Removing test pipeline * Testing pipeline with unique file names * Update Jenkinsfile * Removing test files Updated main pipeline
This commit is contained in:
53
script/infra_helper/capture_build_trace.js
Normal file
53
script/infra_helper/capture_build_trace.js
Normal file
@@ -0,0 +1,53 @@
|
||||
const puppeteer = require('puppeteer');
|
||||
|
||||
(async () => {
|
||||
try {
|
||||
// Launch the browser
|
||||
const browser = await puppeteer.launch({
|
||||
args: [
|
||||
'--no-sandbox',
|
||||
'--headless',
|
||||
'--disable-gpu',
|
||||
'--window-size=1920x1080'
|
||||
]});
|
||||
const page = await browser.newPage();
|
||||
await page.setViewport({ width: 1920, height: 1080 });
|
||||
await page.goto('https://ui.perfetto.dev');
|
||||
// Wait for the home page to be visible
|
||||
console.log('Waiting for page to load...');
|
||||
await page.waitForSelector('.pf-home-page', { visible: true, timeout: 30000 });
|
||||
// Locate and click the Open trace button
|
||||
const elements = await page.$$('li');
|
||||
let element = null;
|
||||
for (const el of elements) {
|
||||
const text = await el.evaluate(node => node.textContent);
|
||||
if (text && text.includes('Open trace file')) {
|
||||
element = el;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (element) {
|
||||
const [fileChooser] = await Promise.all([
|
||||
page.waitForFileChooser(),
|
||||
element.click()
|
||||
]);
|
||||
await fileChooser.accept(['/workspace/ck_build_trace.json']);
|
||||
} else {
|
||||
throw new Error('Element not found');
|
||||
}
|
||||
console.log('Waiting for data to load...');
|
||||
// Wait for the timeline element to be visible
|
||||
await page.waitForSelector('.pf-track', { timeout: 30000 });
|
||||
// Wait for the data to finish loading
|
||||
await page.waitForFunction(() => {
|
||||
return !document.body.textContent.includes('Loading...');
|
||||
}, { timeout: 30000 });
|
||||
console.log('Capturing screenshot...');
|
||||
await page.screenshot({path: '/workspace/perfetto_snapshot_build.png'});
|
||||
console.log('Done capturing screenshot...');
|
||||
await browser.close();
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
process.exit(1);
|
||||
}
|
||||
})();
|
||||
Reference in New Issue
Block a user