Skip to content

Commit 47bdcd2

Browse files
Liviu RauDevtools-frontend LUCI CQ
authored andcommitted
Migrate assertion tests to non-hosted e2e tests
Bug: 390535614 Change-Id: I31ce63a320f2346b759f1db5d3a5826e8e43a95d Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6298134 Commit-Queue: Liviu Rau <[email protected]> Reviewed-by: Alex Rudenko <[email protected]> Reviewed-by: Simon Zünd <[email protected]>
1 parent fd1ab60 commit 47bdcd2

File tree

9 files changed

+63
-52
lines changed

9 files changed

+63
-52
lines changed

test/conductor/events.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,9 @@ function formatStackFrame(stackFrame: puppeteer.ConsoleMessageLocation): string
181181
}
182182

183183
export function dumpCollectedErrors(): void {
184+
if (!(expectedErrors.length + fatalErrors.length)) {
185+
return;
186+
}
184187
console.log('Expected errors: ' + expectedErrors.length);
185188
console.log(' Fatal errors: ' + fatalErrors.length);
186189
if (fatalErrors.length) {
@@ -190,11 +193,13 @@ export function dumpCollectedErrors(): void {
190193
console.log(
191194
'\nErrors from component examples during test run:\n', uiComponentDocErrors.map(e => e.message).join('\n '));
192195
}
196+
expectedErrors = [];
197+
fatalErrors = [];
193198
}
194199

195200
const pendingErrorExpectations = new Set<ErrorExpectation>();
196-
export const fatalErrors: string[] = [];
197-
export const expectedErrors: string[] = [];
201+
export let fatalErrors: string[] = [];
202+
export let expectedErrors: string[] = [];
198203
// Gathered separately so we can surface them during screenshot tests to help
199204
// give an idea of failures, rather than having to guess purely based on the
200205
// screenshot.

test/e2e/BUILD.gn

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ node_ts_library("tests") {
1818
"ai_assistance",
1919
"animations",
2020
"application",
21-
"assertion",
2221
"changes",
2322
"console",
2423
"coverage",

test/e2e/assertion/assertion_test.ts

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

test/e2e_non_hosted/BUILD.gn

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ group("e2e_non_hosted") {
1515
node_ts_library("tests") {
1616
deps = [
1717
"../conductor:implementation",
18+
"assertion",
1819
"dummy",
1920
]
2021
sources = [ "mocharc.ts" ]
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,10 @@
44

55
import("../../../scripts/build/typescript/typescript.gni")
66

7-
node_ts_library("assertion") {
7+
ts_e2e_library("assertion") {
88
sources = [ "assertion_test.ts" ]
9-
109
deps = [
11-
"../../shared",
12-
"../helpers",
10+
"../../conductor:implementation",
11+
"../shared",
1312
]
1413
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Copyright 2020 The Chromium Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
import {assert} from 'chai';
6+
7+
import {expectedErrors} from '../../conductor/events.js';
8+
9+
describe('Assertions', function() {
10+
it('console.assert', async ({devToolsPage, inspectedPage}) => {
11+
await devToolsPage.evaluate(() => {
12+
console.assert(false, 'expected failure 1');
13+
});
14+
await inspectedPage.goToResource('cross_tool/default.html');
15+
assert.isOk(expectedErrors.some(error => error.includes('expected failure 1')));
16+
});
17+
18+
it('console.error', async ({devToolsPage, inspectedPage}) => {
19+
await devToolsPage.evaluate(() => {
20+
function foo() {
21+
console.error('expected failure 2');
22+
}
23+
foo();
24+
});
25+
await inspectedPage.goToResource('cross_tool/default.html');
26+
assert.isOk(expectedErrors.some(error => error.includes('expected failure 2')));
27+
});
28+
});

test/e2e_non_hosted/conductor/state-provider.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export class StateProvider {
5252
debugNotice: DebugModeNotice;
5353
settingsCallbackMap: Map<Mocha.Suite, E2E.SuiteSettings>;
5454
browserMap: Map<string, BrowserWrapper>;
55-
static serverPort: Number;
55+
static serverPort: number;
5656

5757
private constructor() {
5858
this.debugNotice = new DebugModeNotice();
@@ -87,7 +87,7 @@ export class StateProvider {
8787
const browserKey = JSON.stringify(browserSettings);
8888
let browser = this.browserMap.get(browserKey);
8989
if (!browser) {
90-
browser = await Launcher.browserSetup(browserSettings, StateProvider.serverPort);
90+
browser = await Launcher.browserSetup(browserSettings);
9191
this.browserMap.set(browserKey, browser);
9292
}
9393
// Suite needs to be aware of the browser instance to be able to create the
@@ -99,7 +99,7 @@ export class StateProvider {
9999
const settings = await this.getSettings(suite);
100100
const browser = suite.browser;
101101
const browsingContext = await browser.createBrowserContext();
102-
const inspectedPage = await setupInspectedPage(browsingContext);
102+
const inspectedPage = await setupInspectedPage(browsingContext, StateProvider.serverPort);
103103
const devToolsPage = await setupDevToolsPage(browsingContext, settings);
104104
const state = {
105105
devToolsPage,

test/e2e_non_hosted/shared/browser-helper.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {TestConfig} from '../../conductor/test_config.js';
1313
export class BrowserWrapper {
1414
browser: puppeteer.Browser;
1515

16-
constructor(b: puppeteer.Browser, readonly serverPort: Number) {
16+
constructor(b: puppeteer.Browser) {
1717
this.browser = b;
1818
}
1919

@@ -22,14 +22,14 @@ export class BrowserWrapper {
2222
}
2323
}
2424
export class Launcher {
25-
static async browserSetup(settings: BrowserSettings, serverPort: Number) {
25+
static async browserSetup(settings: BrowserSettings) {
2626
const browser = await Launcher.launchChrome(settings);
2727
setupBrowserProcessIO(browser);
2828
// Close default devtools.
2929
const devToolsTarget = await browser.waitForTarget(target => target.url().startsWith('devtools://'));
3030
const page = await devToolsTarget.page();
3131
await page?.close();
32-
return new BrowserWrapper(browser, serverPort);
32+
return new BrowserWrapper(browser);
3333
}
3434

3535
private static launchChrome(settings: BrowserSettings) {

test/e2e_non_hosted/shared/target-helper.ts

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,24 @@ import type * as puppeteer from 'puppeteer-core';
77
import {PageWrapper} from './page-wrapper.js';
88

99
export class InspectedPage extends PageWrapper {
10-
// Place to port current "target" page helper functions to.
10+
constructor(page: puppeteer.Page, readonly serverPort: number) {
11+
super(page);
12+
this.serverPort = serverPort;
13+
}
14+
async goTo(url: string, options: puppeteer.WaitForOptions = {}) {
15+
await this.page.goto(url, options);
16+
}
17+
18+
async goToResource(path: string, options: puppeteer.WaitForOptions = {}) {
19+
await this.goTo(`${this.getResourcesPath()}/${path}`, options);
20+
}
21+
22+
getResourcesPath(host = 'localhost') {
23+
return `https://${host}:${this.serverPort}/test/e2e/resources`;
24+
}
1125
}
1226

13-
export async function setupInspectedPage(context: puppeteer.BrowserContext) {
14-
const target = await context.newPage();
15-
return new InspectedPage(target);
27+
export async function setupInspectedPage(context: puppeteer.BrowserContext, serverPort: number) {
28+
const page = await context.newPage();
29+
return new InspectedPage(page, serverPort);
1630
}

0 commit comments

Comments
 (0)