Skip to content

Commit 12731a8

Browse files
committed
feat: add support for Webdriver launcher to setViewportPlugin
1 parent 17cfc0d commit 12731a8

File tree

4 files changed

+26
-0
lines changed

4 files changed

+26
-0
lines changed

packages/test-runner-commands/src/setViewportPlugin.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { TestRunnerPlugin } from '@web/test-runner-core';
22
import type { ChromeLauncher } from '@web/test-runner-chrome';
33
import type { PlaywrightLauncher } from '@web/test-runner-playwright';
4+
import type { WebdriverLauncher } from '@web/test-runner-webdriver';
45

56
export interface Viewport {
67
width: number;
@@ -50,6 +51,12 @@ export function setViewportPlugin(): TestRunnerPlugin {
5051
return true;
5152
}
5253

54+
if (session.browser.type === 'webdriver') {
55+
const browser = session.browser as WebdriverLauncher;
56+
await browser.setWindowSize(session.id, payload.width, payload.height);
57+
return true;
58+
}
59+
5360
throw new Error(
5461
`Setting viewport is not supported for browser type ${session.browser.type}.`,
5562
);

packages/test-runner-webdriver/src/IFrameManager.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { TestRunnerCoreConfig } from '@web/test-runner-core';
22
import { Browser, Element } from 'webdriverio';
33
import { validateBrowserResult } from './coverage.js';
4+
import { setWindowSize } from 'webdriverio/build/commands/browser.js';
45

56
/**
67
* Manages tests to be executed in iframes on a page.
@@ -155,6 +156,13 @@ export class IFrameManager {
155156
return this.driver.keys(keys);
156157
}
157158

159+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
160+
async setWindowSize(_: string, _width: number, _height: number) {
161+
throw new Error(
162+
'Unsupported operation. In order to set window size in Webdriver, set "concurrency" to 1.',
163+
);
164+
}
165+
158166
// eslint-disable-next-line @typescript-eslint/no-unused-vars
159167
async performActions(_: string, _actions: object[]) {
160168
throw new Error(

packages/test-runner-webdriver/src/SessionManager.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,10 @@ export class SessionManager {
8080
return { testCoverage: this.config.coverage ? testCoverage : undefined };
8181
}
8282

83+
async setWindowSize(_: string, width: number, height: number) {
84+
return this.driver.setWindowSize(width, height);
85+
}
86+
8387
async performActions(_: string, actions: object[]) {
8488
return this.driver.performActions(actions);
8589
}

packages/test-runner-webdriver/src/webdriverLauncher.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,13 @@ export class WebdriverLauncher implements BrowserLauncher {
229229
return this.driverManager.sendKeys(sessionId, keys);
230230
}
231231

232+
setWindowSize(sessionId: string, width: number, height: number) {
233+
if (!this.driverManager) {
234+
throw new Error('Not initialized');
235+
}
236+
return this.driverManager.setWindowSize(sessionId, width, height);
237+
}
238+
232239
takeScreenshot(sessionId: string, locator: string) {
233240
if (!this.driverManager) {
234241
throw new Error('Not initialized');

0 commit comments

Comments
 (0)