Skip to content

Commit 62648aa

Browse files
Liviu RauDevtools-frontend LUCI CQ
authored andcommitted
Port lighthouse/navigation_test to non-hosted
Additionally adding a debugging tool for extra screenshot collection inside running tests. Example rdb report when using additional screenshot collection: https://luci-milo.appspot.com/ui/inv/u-liviurau-2025-09-16-08-06-00-75401a410d414a03/test-results Bug: 416404220 Change-Id: Iea3b2e0568f846edf9daa1a78f10992d3c94a541 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6624093 Reviewed-by: Alex Rudenko <[email protected]> Commit-Queue: Liviu Rau <[email protected]>
1 parent 5c2a14a commit 62648aa

File tree

11 files changed

+337
-324
lines changed

11 files changed

+337
-324
lines changed

test/conductor/screenshot-error.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,15 +72,25 @@ export class ScreenshotError extends Error {
7272
* Creates a ScreenshotError when an unexpected error occurs. Screenshots are
7373
* taken for both the inspected page and the DevTools page.
7474
*/
75-
static fromBase64Images(error: Error, inspectedPageScreenshot?: string, devToolsPageScreenshot?: string) {
75+
static fromBase64Images(
76+
error: Error, inspectedPageScreenshot?: string, devToolsPageScreenshot?: string,
77+
collectedScreenshots?: string[]) {
7678
if (!inspectedPageScreenshot || !devToolsPageScreenshot) {
7779
console.error('No artifacts to save.');
7880
return error;
7981
}
80-
const screenshots = {
82+
const screenshots: ArtifactGroup = {
8183
inspectedPage: {filePath: this.saveArtifact(inspectedPageScreenshot)},
8284
devToolsPage: {filePath: this.saveArtifact(devToolsPageScreenshot)},
8385
};
86+
if (collectedScreenshots) {
87+
for (let i = 0; i <= collectedScreenshots.length; i++) {
88+
if (!collectedScreenshots[i]) {
89+
continue;
90+
}
91+
screenshots[`screenshot${i + 1}`] = {filePath: this.saveArtifact(collectedScreenshots[i])};
92+
}
93+
}
8494
return new ScreenshotError(screenshots, undefined, error);
8595
}
8696

test/e2e/BUILD.gn

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ group("e2e") {
1616
node_ts_library("tests") {
1717
deps = [
1818
"console",
19-
"lighthouse",
2019
"performance",
2120
"sources",
2221
]

test/e2e/helpers/lighthouse-helpers.ts

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,6 @@
55
import {assert} from 'chai';
66
import type {ElementHandle} from 'puppeteer-core';
77

8-
import {
9-
getBrowserAndPages,
10-
waitFor,
11-
waitForElementWithTextContent,
12-
} from '../../shared/helper.js';
138
import {getBrowserAndPagesWrappers} from '../../shared/non_hosted_wrappers.js';
149

1510
import {getQuotaUsage, waitForQuotaUsage} from './application-helpers.js';
@@ -107,9 +102,10 @@ export async function selectDevice(
107102
await selectRadioOption(device, 'lighthouse.device-type', devToolsPage);
108103
}
109104

110-
export async function setToolbarCheckboxWithText(enabled: boolean, textContext: string) {
111-
const toolbarHandle = await waitFor('.lighthouse-settings-pane .lighthouse-settings-toolbar');
112-
const label = await waitForElementWithTextContent(textContext, toolbarHandle);
105+
export async function setToolbarCheckboxWithText(
106+
enabled: boolean, textContext: string, devToolsPage = getBrowserAndPagesWrappers().devToolsPage) {
107+
const toolbarHandle = await devToolsPage.waitFor('.lighthouse-settings-pane .lighthouse-settings-toolbar');
108+
const label = await devToolsPage.waitForElementWithTextContent(textContext, toolbarHandle);
113109
await label.evaluate((label, enabled: boolean) => {
114110
const rootNode = label.getRootNode() as ShadowRoot;
115111
const checkboxId = label.getAttribute('for') as string;
@@ -228,9 +224,9 @@ export async function registerServiceWorker(inspectedPage = getBrowserAndPagesWr
228224
assert.strictEqual(await getServiceWorkerCount(inspectedPage), 1);
229225
}
230226

231-
export async function interceptNextFileSave(): Promise<() => Promise<string>> {
232-
const {frontend} = await getBrowserAndPages();
233-
await frontend.evaluate(() => {
227+
export async function interceptNextFileSave(devToolsPage = getBrowserAndPagesWrappers().devToolsPage):
228+
Promise<() => Promise<string>> {
229+
await devToolsPage.evaluate(() => {
234230
// @ts-expect-error
235231
const original = InspectorFrontendHost.save;
236232
const nextFilePromise = new Promise(resolve => {
@@ -248,16 +244,15 @@ export async function interceptNextFileSave(): Promise<() => Promise<string>> {
248244
});
249245

250246
// @ts-expect-error
251-
return () => frontend.evaluate(() => window.__nextFile);
247+
return () => devToolsPage.evaluate(() => window.__nextFile);
252248
}
253249

254-
export async function renderHtmlInIframe(html: string) {
255-
const {target} = getBrowserAndPages();
256-
return (await target.evaluateHandle(async html => {
257-
const iframe = document.createElement('iframe');
258-
iframe.srcdoc = html;
259-
document.documentElement.append(iframe);
260-
await new Promise(resolve => iframe.addEventListener('load', resolve));
261-
return iframe.contentDocument!;
262-
}, html));
250+
export async function renderHtmlInIframe(html: string, inspectedPage = getBrowserAndPagesWrappers().inspectedPage) {
251+
return (await inspectedPage.page.evaluateHandle(async html => {
252+
const iframe = document.createElement('iframe');
253+
iframe.srcdoc = html;
254+
document.documentElement.append(iframe);
255+
await new Promise(resolve => iframe.addEventListener('load', resolve));
256+
return iframe.contentDocument;
257+
}, html)).asElement() as ElementHandle<Document>;
263258
}

test/e2e/lighthouse/BUILD.gn

Lines changed: 0 additions & 14 deletions
This file was deleted.

test/e2e/lighthouse/DIR_METADATA

Lines changed: 0 additions & 3 deletions
This file was deleted.

test/e2e/lighthouse/OWNERS

Lines changed: 0 additions & 1 deletion
This file was deleted.

test/e2e/lighthouse/navigation_test.ts

Lines changed: 0 additions & 269 deletions
This file was deleted.

0 commit comments

Comments
 (0)