Skip to content

Commit fffd493

Browse files
Lightning00BladeDevtools-frontend LUCI CQ
authored andcommitted
[recorder] Move the rest of the test to non hosted mode
Fixed: 416404920, 416405469, 416405217, 416405148 Change-Id: Id790da212aae08a4e9654a3fda6210f39d2566b9 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6594011 Reviewed-by: Alex Rudenko <alexrudenko@chromium.org> Commit-Queue: Nikolay Vitkov <nvitkov@chromium.org>
1 parent 19875ee commit fffd493

File tree

13 files changed

+1360
-1260
lines changed

13 files changed

+1360
-1260
lines changed

test/e2e/BUILD.gn

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ node_ts_library("tests") {
2929
"network",
3030
"panels",
3131
"performance",
32-
"recorder",
3332
"security",
3433
"settings",
3534
"sources",

test/e2e/helpers/recorder-helpers.ts

Lines changed: 79 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,36 @@ import type * as Recorder from '../../../front_end/panels/recorder/recorder.js';
1010
import {
1111
platform,
1212
selectOption,
13-
} from '../../shared/helper.js';
14-
import {getBrowserAndPagesWrappers} from '../../shared/non_hosted_wrappers.js';
13+
} from '../../../test/shared/helper.js';
14+
import type {DevToolsPage} from '../../e2e_non_hosted/shared/frontend-helper.js';
15+
import type {InspectedPage} from '../../e2e_non_hosted/shared/target-helper.js';
1516

1617
import {openCommandMenu} from './quick_open-helpers.js';
1718

1819
const RECORDER_CONTROLLER_TAG_NAME = 'devtools-recorder-controller' as const;
1920
const TEST_RECORDING_NAME = 'New Recording';
2021
const ControlOrMeta = platform === 'mac' ? 'Meta' : 'Control';
2122

22-
export async function getRecordingController(devToolsPage = getBrowserAndPagesWrappers().devToolsPage) {
23+
export async function record(devToolsPage: DevToolsPage, inspectedPage: InspectedPage) {
24+
await inspectedPage.bringToFront();
25+
await devToolsPage.bringToFront();
26+
await devToolsPage.page.waitForSelector('pierce/.settings');
27+
await inspectedPage.bringToFront();
28+
const element = await inspectedPage.waitForSelector('a[href="recorder2.html"]');
29+
await element?.click();
30+
await devToolsPage.bringToFront();
31+
}
32+
33+
export async function getRecordingController(devToolsPage: DevToolsPage) {
2334
return await devToolsPage.waitFor(
2435
RECORDER_CONTROLLER_TAG_NAME,
2536
);
2637
}
2738

28-
export async function onRecordingStateChanged(devToolsPage = getBrowserAndPagesWrappers().devToolsPage):
29-
Promise<unknown> {
39+
export async function onRecordingStateChanged(devToolsPage: DevToolsPage): Promise<UserFlow> {
3040
const view = await getRecordingController(devToolsPage);
3141
return await view.evaluate(el => {
32-
return new Promise(resolve => {
42+
return new Promise<UserFlow>(resolve => {
3343
el.addEventListener(
3444
'recordingstatechanged',
3545
(event: Event) => resolve(
@@ -41,8 +51,7 @@ export async function onRecordingStateChanged(devToolsPage = getBrowserAndPagesW
4151
});
4252
}
4353

44-
export async function onRecorderAttachedToTarget(devToolsPage = getBrowserAndPagesWrappers().devToolsPage):
45-
Promise<unknown> {
54+
export async function onRecorderAttachedToTarget(devToolsPage: DevToolsPage): Promise<unknown> {
4655
return await devToolsPage.evaluate(() => {
4756
return new Promise(resolve => {
4857
window.addEventListener('recorderAttachedToTarget', resolve, {
@@ -52,7 +61,7 @@ export async function onRecorderAttachedToTarget(devToolsPage = getBrowserAndPag
5261
});
5362
}
5463

55-
export async function onReplayFinished(devToolsPage = getBrowserAndPagesWrappers().devToolsPage): Promise<unknown> {
64+
export async function onReplayFinished(devToolsPage: DevToolsPage): Promise<unknown> {
5665
const view = await getRecordingController(devToolsPage);
5766
return await view.evaluate(el => {
5867
return new Promise(resolve => {
@@ -61,7 +70,7 @@ export async function onReplayFinished(devToolsPage = getBrowserAndPagesWrappers
6170
});
6271
}
6372

64-
export async function enableUntrustedEventMode(devToolsPage = getBrowserAndPagesWrappers().devToolsPage) {
73+
export async function enableUntrustedEventMode(devToolsPage: DevToolsPage) {
6574
await devToolsPage.evaluate(`(async () => {
6675
// TODO: have an explicit UI setting or perhaps a special event to configure this
6776
// instead of having a global setting.
@@ -71,19 +80,15 @@ export async function enableUntrustedEventMode(devToolsPage = getBrowserAndPages
7180
}
7281

7382
export async function enableAndOpenRecorderPanel(
74-
path: string, devToolsPage = getBrowserAndPagesWrappers().devToolsPage,
75-
inspectedPage = getBrowserAndPagesWrappers().inspectedPage
76-
77-
) {
83+
path: string, devToolsPage: DevToolsPage, inspectedPage: InspectedPage) {
7884
await inspectedPage.goToResource(path);
79-
await openCommandMenu(devToolsPage);
80-
await devToolsPage.typeText('Show Recorder');
81-
await devToolsPage.page.keyboard.press('Enter');
82-
await devToolsPage.waitFor(RECORDER_CONTROLLER_TAG_NAME);
85+
await openRecorderPanel(devToolsPage);
8386
}
8487

85-
async function createRecording(
86-
name: string, selectorAttribute?: string, devToolsPage = getBrowserAndPagesWrappers().devToolsPage) {
88+
async function createRecording(name: string, selectorAttribute?: string, devToolsPage?: DevToolsPage) {
89+
if (!devToolsPage) {
90+
throw new Error('DevToolsPage was not provided');
91+
}
8792
const newRecordingButton = await devToolsPage.waitForAria('Create recording');
8893
await newRecordingButton.click();
8994
const input = await devToolsPage.waitForAria('RECORDING NAME');
@@ -96,26 +101,30 @@ async function createRecording(
96101
}
97102
}
98103

99-
export async function createAndStartRecording(
100-
name?: string, selectorAttribute?: string, devToolsPage = getBrowserAndPagesWrappers().devToolsPage) {
104+
export async function createAndStartRecording(name?: string, selectorAttribute?: string, devToolsPage?: DevToolsPage) {
105+
if (!devToolsPage) {
106+
throw new Error('DevToolsPage was not provided');
107+
}
101108
await createRecording(name ?? TEST_RECORDING_NAME, selectorAttribute, devToolsPage);
102109
const onRecordingStarted = onRecordingStateChanged(devToolsPage);
103110
await devToolsPage.click('devtools-control-button');
104111
await devToolsPage.waitFor('devtools-recording-view');
105112
await onRecordingStarted;
106113
}
107114

108-
export async function changeNetworkConditions(
109-
condition: string, devToolsPage = getBrowserAndPagesWrappers().devToolsPage) {
110-
await devToolsPage.page.waitForSelector('pierce/#tab-network');
111-
await devToolsPage.click('pierce/#tab-network');
115+
export async function changeNetworkConditions(condition: string, devToolsPage: DevToolsPage) {
116+
await openCommandMenu(devToolsPage);
117+
await devToolsPage.typeText('Show Network');
118+
await devToolsPage.page.keyboard.press('Enter');
112119
await devToolsPage.page.waitForSelector('pierce/select[aria-label="Throttling"]');
113120
await devToolsPage.page.select('pierce/select[aria-label="Throttling"]', condition);
114121
}
115122

116-
export async function openRecorderPanel(devToolsPage = getBrowserAndPagesWrappers().devToolsPage) {
117-
await devToolsPage.click('[aria-label="Recorder"]');
118-
await devToolsPage.waitFor('devtools-recording-view');
123+
export async function openRecorderPanel(devToolsPage: DevToolsPage) {
124+
await openCommandMenu(devToolsPage);
125+
await devToolsPage.typeText('Show Recorder');
126+
await devToolsPage.page.keyboard.press('Enter');
127+
await devToolsPage.waitFor(RECORDER_CONTROLLER_TAG_NAME);
119128
}
120129

121130
interface StartRecordingOptions {
@@ -130,20 +139,22 @@ export async function startRecording(
130139
networkCondition: '',
131140
untrustedEvents: false,
132141
},
133-
devToolsPage = getBrowserAndPagesWrappers().devToolsPage,
142+
devToolsPage: DevToolsPage,
143+
inspectedPage: InspectedPage,
144+
134145
) {
135146
await devToolsPage.bringToFront();
136147
if (options.networkCondition) {
137-
await changeNetworkConditions(options.networkCondition);
148+
await changeNetworkConditions(options.networkCondition, devToolsPage);
138149
}
139-
await enableAndOpenRecorderPanel(path);
150+
await enableAndOpenRecorderPanel(path, devToolsPage, inspectedPage);
140151
if (options.untrustedEvents) {
141-
await enableUntrustedEventMode();
152+
await enableUntrustedEventMode(devToolsPage);
142153
}
143-
await createAndStartRecording(TEST_RECORDING_NAME, options.selectorAttribute);
154+
await createAndStartRecording(TEST_RECORDING_NAME, options.selectorAttribute, devToolsPage);
144155
}
145156

146-
export async function stopRecording(devToolsPage = getBrowserAndPagesWrappers().devToolsPage): Promise<unknown> {
157+
export async function stopRecording(devToolsPage: DevToolsPage): Promise<UserFlow> {
147158
await devToolsPage.bringToFront();
148159
await raf(devToolsPage.page);
149160
const onRecordingStopped = onRecordingStateChanged(devToolsPage);
@@ -230,15 +241,14 @@ export const processAndVerifyBaseRecording = (
230241
return parsed;
231242
};
232243

233-
async function setCode(flow: string, devToolsPage = getBrowserAndPagesWrappers().devToolsPage) {
244+
async function setCode(flow: string, devToolsPage: DevToolsPage) {
234245
const view = await getRecordingController(devToolsPage);
235246
await view.evaluate((el, flow) => {
236247
el.dispatchEvent(new CustomEvent('setrecording', {detail: flow}));
237248
}, flow);
238249
}
239250

240-
export async function clickSelectButtonItem(
241-
itemLabel: string, root: string, devToolsPage = getBrowserAndPagesWrappers().devToolsPage) {
251+
export async function clickSelectButtonItem(itemLabel: string, root: string, devToolsPage: DevToolsPage) {
242252
const selectMenu = await devToolsPage.waitFor(root);
243253
const selectMenuButton = await devToolsPage.waitFor(
244254
'select',
@@ -253,25 +263,29 @@ export async function clickSelectButtonItem(
253263
export async function setupRecorderWithScript(
254264
script: UserFlow,
255265
path = 'recorder/recorder.html',
266+
devToolsPage: DevToolsPage,
267+
inspectedPage: InspectedPage,
256268
): Promise<void> {
257-
await enableAndOpenRecorderPanel(path);
258-
await createAndStartRecording(script.title);
259-
await stopRecording();
260-
await setCode(JSON.stringify(script));
269+
await enableAndOpenRecorderPanel(path, devToolsPage, inspectedPage);
270+
await createAndStartRecording(script.title, undefined, devToolsPage);
271+
await stopRecording(devToolsPage);
272+
await setCode(JSON.stringify(script), devToolsPage);
261273
}
262274

263275
export async function setupRecorderWithScriptAndReplay(
264276
script: UserFlow,
265277
path = 'recorder/recorder.html',
278+
devToolsPage: DevToolsPage,
279+
inspectedPage: InspectedPage,
266280
): Promise<void> {
267-
await setupRecorderWithScript(script, path);
268-
const onceFinished = onReplayFinished();
269-
await clickSelectButtonItem('Normal (Default)', 'devtools-replay-section');
281+
await setupRecorderWithScript(script, path, devToolsPage, inspectedPage);
282+
const onceFinished = onReplayFinished(devToolsPage);
283+
await clickSelectButtonItem('Normal (Default)', 'devtools-replay-section', devToolsPage);
270284
await onceFinished;
271285
}
272286

273287
export async function getCurrentRecording(
274-
devToolsPage = getBrowserAndPagesWrappers().devToolsPage,
288+
devToolsPage: DevToolsPage,
275289
): Promise<UserFlow> {
276290
await devToolsPage.bringToFront();
277291
const controller = await devToolsPage.$(RECORDER_CONTROLLER_TAG_NAME);
@@ -283,11 +297,11 @@ export async function getCurrentRecording(
283297

284298
export async function startOrStopRecordingShortcut(
285299
execute: 'inspectedPage'|'devToolsPage' = 'devToolsPage',
286-
devToolsPage = getBrowserAndPagesWrappers().devToolsPage,
287-
inspectedPage = getBrowserAndPagesWrappers().inspectedPage,
300+
devToolsPage: DevToolsPage,
301+
inspectedPage: InspectedPage,
288302
) {
289303
const executeOn = execute === 'devToolsPage' ? devToolsPage.page : inspectedPage.page;
290-
const onRecordingStarted = onRecordingStateChanged();
304+
const onRecordingStarted = onRecordingStateChanged(devToolsPage);
291305
await executeOn.bringToFront();
292306
await executeOn.keyboard.down(ControlOrMeta);
293307
await executeOn.keyboard.down('e');
@@ -298,18 +312,26 @@ export async function startOrStopRecordingShortcut(
298312
return await onRecordingStarted;
299313
}
300314

301-
export async function fillCreateRecordingForm(path: string) {
302-
await enableAndOpenRecorderPanel(path);
303-
await createRecording(TEST_RECORDING_NAME);
315+
export async function fillCreateRecordingForm(
316+
path: string,
317+
devToolsPage: DevToolsPage,
318+
inspectedPage: InspectedPage,
319+
) {
320+
await enableAndOpenRecorderPanel(path, devToolsPage, inspectedPage);
321+
await createRecording(TEST_RECORDING_NAME, undefined, devToolsPage);
304322
}
305323

306-
export async function startRecordingViaShortcut(path: string) {
307-
await enableAndOpenRecorderPanel(path);
308-
await startOrStopRecordingShortcut();
324+
export async function startRecordingViaShortcut(
325+
path: string,
326+
devToolsPage: DevToolsPage,
327+
inspectedPage: InspectedPage,
328+
) {
329+
await enableAndOpenRecorderPanel(path, devToolsPage, inspectedPage);
330+
await startOrStopRecordingShortcut('devToolsPage', devToolsPage, inspectedPage);
309331
}
310332

311333
export async function replayShortcut(
312-
devToolsPage = getBrowserAndPagesWrappers().devToolsPage,
334+
devToolsPage: DevToolsPage,
313335
) {
314336
await devToolsPage.bringToFront();
315337
await devToolsPage.page.keyboard.down(ControlOrMeta);
@@ -319,7 +341,7 @@ export async function replayShortcut(
319341
}
320342

321343
export async function toggleCodeView(
322-
devToolsPage = getBrowserAndPagesWrappers().devToolsPage,
344+
devToolsPage: DevToolsPage,
323345
) {
324346
await devToolsPage.bringToFront();
325347
await devToolsPage.page.keyboard.down(ControlOrMeta);

test/e2e/recorder/BUILD.gn

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

0 commit comments

Comments
 (0)