0

[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:
Peter Kvitek
2024-12-27 13:20:09 -08:00
committed by Chromium LUCI CQ
parent d3af20eccb
commit e7eded1c15
3 changed files with 54 additions and 0 deletions

@ -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