Skip to content

Commit 2f76052

Browse files
Liviu RauDevtools-frontend LUCI CQ
authored andcommitted
Migrate test/e2e/emulation/responsive_test.ts
Fixed: 416405313 Change-Id: I201740af51109543b6e034cd9f1630c1fd18a9d8 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6781161 Auto-Submit: Liviu Rau <[email protected]> Commit-Queue: Simon Zünd <[email protected]> Reviewed-by: Simon Zünd <[email protected]>
1 parent ace6a84 commit 2f76052

File tree

6 files changed

+124
-110
lines changed

6 files changed

+124
-110
lines changed

test/e2e/emulation/BUILD.gn

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ node_ts_library("emulation") {
1010
"dual-screen_test.ts",
1111
"foldable-device_test.ts",
1212
"media-query-inspector_test.ts",
13-
"responsive_test.ts",
1413
]
1514

1615
deps = [

test/e2e/emulation/responsive_test.ts

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

test/e2e/helpers/emulation-helpers.ts

Lines changed: 68 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
// found in the LICENSE file.
44
import type * as puppeteer from 'puppeteer-core';
55

6+
import type {DevToolsPage} from '../../e2e_non_hosted/shared/frontend-helper.js';
7+
import type {InspectedPage} from '../../e2e_non_hosted/shared/target-helper.js';
68
import {
79
$,
8-
click,
910
clickElement,
1011
getBrowserAndPages,
1112
goToResource,
12-
waitFor,
1313
} from '../../shared/helper.js';
1414
import {getBrowserAndPagesWrappers} from '../../shared/non_hosted_wrappers.js';
1515

@@ -36,44 +36,49 @@ export const reloadDockableFrontEnd = async () => {
3636
await reloadDevTools({canDock: true});
3737
};
3838

39-
export const deviceModeIsEnabled = async (inspectedPage = getBrowserAndPagesWrappers().inspectedPage) => {
39+
export const deviceModeIsEnabled =
40+
async (inspectedPage: InspectedPage = getBrowserAndPagesWrappers().inspectedPage) => {
4041
// Check the userAgent string to see whether emulation is really enabled.
4142
const userAgent = await inspectedPage.evaluate(() => navigator.userAgent);
4243
return userAgent.includes('Mobile');
4344
};
4445

45-
export const clickDeviceModeToggler = async (devToolsPage = getBrowserAndPagesWrappers().devToolsPage) => {
46+
export const clickDeviceModeToggler =
47+
async (devToolsPage: DevToolsPage = getBrowserAndPagesWrappers().devToolsPage) => {
4648
const deviceToolbarToggler = await devToolsPage.waitFor(DEVICE_TOOLBAR_TOGGLER_SELECTOR);
4749
await devToolsPage.clickElement(deviceToolbarToggler);
4850
};
4951

5052
export const openDeviceToolbar = async (
51-
devToolsPage = getBrowserAndPagesWrappers().devToolsPage,
52-
inspectedPage = getBrowserAndPagesWrappers().inspectedPage) => {
53+
devToolsPage: DevToolsPage = getBrowserAndPagesWrappers().devToolsPage,
54+
inspectedPage: InspectedPage = getBrowserAndPagesWrappers().inspectedPage) => {
5355
if (await deviceModeIsEnabled(inspectedPage)) {
5456
return;
5557
}
5658
await clickDeviceModeToggler(devToolsPage);
5759
await devToolsPage.waitFor(DEVICE_TOOLBAR_SELECTOR);
5860
};
5961

60-
export const showMediaQueryInspector = async () => {
62+
export const showMediaQueryInspector =
63+
async (devToolsPage: DevToolsPage = getBrowserAndPagesWrappers().devToolsPage) => {
6164
const inspector = await $(MEDIA_QUERY_INSPECTOR_SELECTOR);
6265
if (inspector) {
6366
return;
6467
}
65-
await click(DEVICE_TOOLBAR_OPTIONS_SELECTOR);
68+
await devToolsPage.click(DEVICE_TOOLBAR_OPTIONS_SELECTOR);
6669
const {frontend} = getBrowserAndPages();
6770
await frontend.keyboard.press('ArrowDown');
6871
await frontend.keyboard.press('Enter');
69-
await waitFor(MEDIA_QUERY_INSPECTOR_SELECTOR);
72+
await devToolsPage.waitFor(MEDIA_QUERY_INSPECTOR_SELECTOR);
7073
};
7174

72-
export const startEmulationWithDualScreenPage = async () => {
75+
export const startEmulationWithDualScreenPage = async (
76+
devToolsPage: DevToolsPage = getBrowserAndPagesWrappers().devToolsPage,
77+
inspectedPage: InspectedPage = getBrowserAndPagesWrappers().inspectedPage) => {
7378
await reloadDockableFrontEnd();
7479
await goToResource('emulation/dual-screen-inspector.html');
75-
await waitFor('.tabbed-pane-left-toolbar');
76-
await openDeviceToolbar();
80+
await devToolsPage.waitFor('.tabbed-pane-left-toolbar');
81+
await openDeviceToolbar(devToolsPage, inspectedPage);
7782
};
7883

7984
export const getButtonDisabled = async (spanButton: puppeteer.ElementHandle<HTMLButtonElement>) => {
@@ -82,24 +87,25 @@ export const getButtonDisabled = async (spanButton: puppeteer.ElementHandle<HTML
8287
});
8388
};
8489

85-
export const clickDevicesDropDown = async (devToolsPage = getBrowserAndPagesWrappers().devToolsPage) => {
90+
export const clickDevicesDropDown = async (devToolsPage: DevToolsPage = getBrowserAndPagesWrappers().devToolsPage) => {
8691
const toolbar = await devToolsPage.waitFor(DEVICE_TOOLBAR_SELECTOR);
8792
await devToolsPage.click(DEVICE_LIST_DROPDOWN_SELECTOR, {root: toolbar});
8893
};
8994

90-
export const clickDevicePostureDropDown = async () => {
91-
const toolbar = await waitFor(DEVICE_TOOLBAR_SELECTOR);
92-
await click(DEVICE_POSTURE_DROPDOWN_SELECTOR, {root: toolbar});
95+
export const clickDevicePostureDropDown =
96+
async (devToolsPage: DevToolsPage = getBrowserAndPagesWrappers().devToolsPage) => {
97+
const toolbar = await devToolsPage.waitFor(DEVICE_TOOLBAR_SELECTOR);
98+
await devToolsPage.click(DEVICE_POSTURE_DROPDOWN_SELECTOR, {root: toolbar});
9399
};
94100

95-
export const clickZoomDropDown = async () => {
96-
const toolbar = await waitFor(DEVICE_TOOLBAR_SELECTOR);
97-
await click(ZOOM_LIST_DROPDOWN_SELECTOR, {root: toolbar});
101+
export const clickZoomDropDown = async (devToolsPage: DevToolsPage = getBrowserAndPagesWrappers().devToolsPage) => {
102+
const toolbar = await devToolsPage.waitFor(DEVICE_TOOLBAR_SELECTOR);
103+
await devToolsPage.click(ZOOM_LIST_DROPDOWN_SELECTOR, {root: toolbar});
98104
};
99105

100-
export const clickWidthInput = async () => {
101-
const toolbar = await waitFor(DEVICE_TOOLBAR_SELECTOR);
102-
await click(SCREEN_DIM_INPUT_SELECTOR, {root: toolbar});
106+
export const clickWidthInput = async (devToolsPage: DevToolsPage = getBrowserAndPagesWrappers().devToolsPage) => {
107+
const toolbar = await devToolsPage.waitFor(DEVICE_TOOLBAR_SELECTOR);
108+
await devToolsPage.click(SCREEN_DIM_INPUT_SELECTOR, {root: toolbar});
103109
};
104110

105111
export const selectToggleButton = async () => {
@@ -108,38 +114,39 @@ export const selectToggleButton = async () => {
108114
return toggleButton;
109115
};
110116

111-
export const selectEdit = async () => {
112-
await clickDevicesDropDown();
113-
await click(EDIT_MENU_ITEM_SELECTOR);
114-
await waitForNotExpanded(DEVICE_LIST_DROPDOWN_SELECTOR);
117+
export const selectEdit = async (devToolsPage: DevToolsPage = getBrowserAndPagesWrappers().devToolsPage) => {
118+
await clickDevicesDropDown(devToolsPage);
119+
await devToolsPage.click(EDIT_MENU_ITEM_SELECTOR);
120+
await waitForNotExpanded(DEVICE_LIST_DROPDOWN_SELECTOR, devToolsPage);
115121
};
116122

117-
export const selectDevice = async (name: string, devToolsPage = getBrowserAndPagesWrappers().devToolsPage) => {
123+
export const selectDevice =
124+
async (name: string, devToolsPage: DevToolsPage = getBrowserAndPagesWrappers().devToolsPage) => {
118125
await clickDevicesDropDown(devToolsPage);
119126
await devToolsPage.click(`[aria-label*="${name}, unchecked"]`);
120127
await waitForNotExpanded(DEVICE_LIST_DROPDOWN_SELECTOR, devToolsPage);
121128
};
122129

123-
export const selectTestDevice = async () => {
124-
await clickDevicesDropDown();
125-
await click(TEST_DEVICE_MENU_ITEM_SELECTOR);
126-
await waitForNotExpanded(DEVICE_LIST_DROPDOWN_SELECTOR);
130+
export const selectTestDevice = async (devToolsPage: DevToolsPage = getBrowserAndPagesWrappers().devToolsPage) => {
131+
await clickDevicesDropDown(devToolsPage);
132+
await devToolsPage.click(TEST_DEVICE_MENU_ITEM_SELECTOR);
133+
await waitForNotExpanded(DEVICE_LIST_DROPDOWN_SELECTOR, devToolsPage);
127134
};
128135

129136
// Test if span button works when emulating a dual screen device.
130-
export const selectDualScreen = async () => {
131-
await clickDevicesDropDown();
132-
await click(SURFACE_DUO_MENU_ITEM_SELECTOR);
133-
await waitForNotExpanded(DEVICE_LIST_DROPDOWN_SELECTOR);
137+
export const selectDualScreen = async (devToolsPage: DevToolsPage = getBrowserAndPagesWrappers().devToolsPage) => {
138+
await clickDevicesDropDown(devToolsPage);
139+
await devToolsPage.click(SURFACE_DUO_MENU_ITEM_SELECTOR);
140+
await waitForNotExpanded(DEVICE_LIST_DROPDOWN_SELECTOR, devToolsPage);
134141
};
135142

136-
export const selectFoldableDevice = async () => {
137-
await clickDevicesDropDown();
138-
await click(FOLDABLE_DEVICE_MENU_ITEM_SELECTOR);
139-
await waitForNotExpanded(DEVICE_LIST_DROPDOWN_SELECTOR);
143+
export const selectFoldableDevice = async (devToolsPage: DevToolsPage = getBrowserAndPagesWrappers().devToolsPage) => {
144+
await clickDevicesDropDown(devToolsPage);
145+
await devToolsPage.click(FOLDABLE_DEVICE_MENU_ITEM_SELECTOR);
146+
await waitForNotExpanded(DEVICE_LIST_DROPDOWN_SELECTOR, devToolsPage);
140147
};
141148

142-
const waitForNotExpanded = async (selector: string, devToolsPage = getBrowserAndPagesWrappers().devToolsPage) => {
149+
const waitForNotExpanded = async (selector: string, devToolsPage: DevToolsPage) => {
143150
const toolbar = await devToolsPage.waitFor(DEVICE_TOOLBAR_SELECTOR);
144151
const dropdown = await devToolsPage.waitFor(selector, toolbar);
145152
await devToolsPage.waitForFunction(async () => {
@@ -148,14 +155,16 @@ const waitForNotExpanded = async (selector: string, devToolsPage = getBrowserAnd
148155
});
149156
};
150157

151-
export const waitForZoomDropDownNotExpanded = async () => {
152-
await waitForNotExpanded(ZOOM_LIST_DROPDOWN_SELECTOR);
158+
export const waitForZoomDropDownNotExpanded =
159+
async (devToolsPage: DevToolsPage = getBrowserAndPagesWrappers().devToolsPage) => {
160+
await waitForNotExpanded(ZOOM_LIST_DROPDOWN_SELECTOR, devToolsPage);
153161
};
154162

155-
export const clickDevicePosture = async (name: string) => {
156-
await clickDevicePostureDropDown();
157-
await click(`[aria-label*="${name}, unchecked"]`);
158-
await waitForNotExpanded(DEVICE_POSTURE_DROPDOWN_SELECTOR);
163+
export const clickDevicePosture =
164+
async (name: string, devToolsPage: DevToolsPage = getBrowserAndPagesWrappers().devToolsPage) => {
165+
await clickDevicePostureDropDown(devToolsPage);
166+
await devToolsPage.click(`[aria-label*="${name}, unchecked"]`);
167+
await waitForNotExpanded(DEVICE_POSTURE_DROPDOWN_SELECTOR, devToolsPage);
159168
};
160169

161170
export const getDevicePostureDropDown = async () => {
@@ -170,29 +179,29 @@ export const clickToggleButton = async () => {
170179
await clickElement(toggleButton);
171180
};
172181

173-
export const getWidthOfDevice = async () => {
182+
export const getWidthOfDevice = async (devToolsPage: DevToolsPage = getBrowserAndPagesWrappers().devToolsPage) => {
174183
// Read the width of spanned duo to make sure spanning works.
175-
const widthInput = await waitFor(SCREEN_DIM_INPUT_SELECTOR);
184+
const widthInput = await devToolsPage.waitFor(SCREEN_DIM_INPUT_SELECTOR);
176185
return await widthInput.evaluate(e => (e as HTMLInputElement).value);
177186
};
178187

179-
export const getZoom = async () => {
188+
export const getZoom = async (devToolsPage: DevToolsPage = getBrowserAndPagesWrappers().devToolsPage) => {
180189
// Read the width of spanned duo to make sure spanning works.
181-
const widthInput = await waitFor(ZOOM_LIST_DROPDOWN_SELECTOR);
190+
const widthInput = await devToolsPage.waitFor(ZOOM_LIST_DROPDOWN_SELECTOR);
182191
return await widthInput.evaluate(e => (e as HTMLInputElement).innerText);
183192
};
184193

185-
export const toggleAutoAdjustZoom = async () => {
186-
await clickZoomDropDown();
187-
await click(AUTO_AUTO_ADJUST_ZOOM_SELECTOR);
188-
await waitForZoomDropDownNotExpanded();
194+
export const toggleAutoAdjustZoom = async (devToolsPage: DevToolsPage = getBrowserAndPagesWrappers().devToolsPage) => {
195+
await clickZoomDropDown(devToolsPage);
196+
await devToolsPage.click(AUTO_AUTO_ADJUST_ZOOM_SELECTOR);
197+
await waitForZoomDropDownNotExpanded(devToolsPage);
189198
};
190199

191200
const IPAD_MENU_ITEM_SELECTOR = '[aria-label*="iPad"]';
192201

193-
// Test if span button is clickable when emulating a non-dual-screen device.
194-
export const selectNonDualScreenDevice = async () => {
195-
await clickDevicesDropDown();
196-
await click(IPAD_MENU_ITEM_SELECTOR);
197-
await waitForNotExpanded(DEVICE_LIST_DROPDOWN_SELECTOR);
202+
export const selectNonDualScreenDevice =
203+
async (devToolsPage: DevToolsPage = getBrowserAndPagesWrappers().devToolsPage) => {
204+
await clickDevicesDropDown(devToolsPage);
205+
await devToolsPage.click(IPAD_MENU_ITEM_SELECTOR);
206+
await waitForNotExpanded(DEVICE_LIST_DROPDOWN_SELECTOR, devToolsPage);
198207
};

test/e2e_non_hosted/BUILD.gn

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ node_ts_library("tests") {
2424
"coverage",
2525
"css_overview",
2626
"elements",
27+
"emulation",
2728
"inline_editor",
2829
"inspector",
2930
"issues",
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Copyright 2025 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("../../../scripts/build/typescript/typescript.gni")
6+
7+
ts_e2e_library("emulation") {
8+
sources = [ "responsive_test.ts" ]
9+
10+
deps = [
11+
"../../e2e/helpers",
12+
"../shared",
13+
]
14+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// Copyright 2024 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+
import {assert} from 'chai';
5+
6+
import {
7+
clickWidthInput,
8+
clickZoomDropDown,
9+
getZoom,
10+
openDeviceToolbar,
11+
toggleAutoAdjustZoom,
12+
waitForZoomDropDownNotExpanded,
13+
} from '../../e2e/helpers/emulation-helpers.js';
14+
15+
describe('Custom devices', () => {
16+
it('can preserve zoom', async ({devToolsPage, inspectedPage}) => {
17+
await openDeviceToolbar(devToolsPage, inspectedPage);
18+
19+
await clickZoomDropDown(devToolsPage);
20+
await devToolsPage.page.keyboard.press('ArrowDown');
21+
await devToolsPage.page.keyboard.press('Enter');
22+
await waitForZoomDropDownNotExpanded(devToolsPage);
23+
assert.strictEqual(await getZoom(devToolsPage), '50%');
24+
25+
await clickWidthInput(devToolsPage);
26+
await devToolsPage.page.keyboard.press('ArrowDown');
27+
assert.strictEqual(await getZoom(devToolsPage), '100%');
28+
29+
await clickZoomDropDown(devToolsPage);
30+
await devToolsPage.page.keyboard.press('ArrowDown');
31+
await devToolsPage.page.keyboard.press('Enter');
32+
await waitForZoomDropDownNotExpanded(devToolsPage);
33+
assert.strictEqual(await getZoom(devToolsPage), '50%');
34+
35+
await toggleAutoAdjustZoom(devToolsPage);
36+
37+
await clickWidthInput(devToolsPage);
38+
await devToolsPage.page.keyboard.press('ArrowDown');
39+
assert.strictEqual(await getZoom(devToolsPage), '50%');
40+
});
41+
});

0 commit comments

Comments
 (0)