[headless] Add secondary screen Target.createTarget() test
https://crrev.com/c/6125752 added support for Target.createTarget() window origin specification. This CL adds a test to verify that if the specified position is on the secondary screen the current screen reported by getScreenDetails() API is correct. Change-Id: Ic6a422dfdc67c27800852ca7d2a1afa172321204 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6127487 Commit-Queue: Andrey Kosyakov <caseq@chromium.org> Auto-Submit: Peter Kvitek <kvitekp@chromium.org> Reviewed-by: Andrey Kosyakov <caseq@chromium.org> Cr-Commit-Position: refs/heads/main@{#1400576}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
d3af20eccb
commit
e7eded1c15
headless/test
@ -0,0 +1,2 @@
|
||||
Tests Target.createTarget() on a secodnary screen.
|
||||
Screen: #2
|
@ -0,0 +1,45 @@
|
||||
// Copyright 2024 The Chromium Authors
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
(async function(testRunner) {
|
||||
const {session, dp} = await testRunner.startBlank(
|
||||
'Tests Target.createTarget() on a secodnary screen.');
|
||||
|
||||
await dp.Browser.grantPermissions({permissions: ['windowManagement']});
|
||||
|
||||
const {sessionId} =
|
||||
(await testRunner.browserP().Target.attachToBrowserTarget({})).result;
|
||||
const bp = (new TestRunner.Session(testRunner, sessionId)).protocol;
|
||||
|
||||
const HttpInterceptor =
|
||||
await testRunner.loadScript('../helpers/http-interceptor.js');
|
||||
const httpInterceptor = await (new HttpInterceptor(testRunner, bp)).init();
|
||||
httpInterceptor.setDisableRequestedUrlsLogging(true);
|
||||
|
||||
httpInterceptor.addResponse(
|
||||
'https://example.com/index.html', `<html></html>`);
|
||||
|
||||
const {targetId} = (await session.protocol.Target.createTarget({
|
||||
'url': 'about:blank',
|
||||
'left': 800,
|
||||
'top': 100,
|
||||
'width': 400,
|
||||
'height': 300
|
||||
})).result;
|
||||
|
||||
const createdTargetSession = await session.attachChild(targetId);
|
||||
|
||||
await createdTargetSession.navigate('https://example.com/index.html');
|
||||
|
||||
const screen = await createdTargetSession.evaluateAsync(async () => {
|
||||
console.log(`Window: ${screenX},${screenY} ${outerWidth}x${outerHeight}`);
|
||||
const cs = (await getScreenDetails()).currentScreen;
|
||||
return cs.label;
|
||||
});
|
||||
|
||||
// Expect screen #2.
|
||||
testRunner.log(`Screen: ${screen}`);
|
||||
|
||||
testRunner.completeTest();
|
||||
})
|
@ -702,12 +702,14 @@ HEADLESS_PROTOCOL_TEST_WITH_COMMAND_LINE_EXTRAS(
|
||||
#define MAYBE_ScreenRotationSecondaryScreen \
|
||||
DISABLED_ScreenRotationSecondaryScreen
|
||||
#define MAYBE_MoveWindowBetweenScreens DISABLED_MoveWindowBetweenScreens
|
||||
#define MAYBE_CreateTargetSecondaryScreen DISABLED_CreateTargetSecondaryScreen
|
||||
#else
|
||||
#define MAYBE_WindowOpenOnSecondaryScreen WindowOpenOnSecondaryScreen
|
||||
#define MAYBE_RequestFullscreenOnSecondaryScreen \
|
||||
RequestFullscreenOnSecondaryScreen
|
||||
#define MAYBE_ScreenRotationSecondaryScreen ScreenRotationSecondaryScreen
|
||||
#define MAYBE_MoveWindowBetweenScreens MoveWindowBetweenScreens
|
||||
#define MAYBE_CreateTargetSecondaryScreen CreateTargetSecondaryScreen
|
||||
#endif
|
||||
|
||||
HEADLESS_PROTOCOL_TEST_WITH_COMMAND_LINE_EXTRAS(
|
||||
@ -730,4 +732,9 @@ HEADLESS_PROTOCOL_TEST_WITH_COMMAND_LINE_EXTRAS(
|
||||
"sanity/move-window-between-screens.js",
|
||||
"--screen-info={label='#1'}{label='#2'}{0,600 label='#3'}{label='#4'}")
|
||||
|
||||
HEADLESS_PROTOCOL_TEST_WITH_COMMAND_LINE_EXTRAS(
|
||||
MAYBE_CreateTargetSecondaryScreen,
|
||||
"sanity/create-target-secondary-screen.js",
|
||||
"--screen-info={label='#1'}{label='#2'}")
|
||||
|
||||
} // namespace headless
|
||||
|
Reference in New Issue
Block a user