Skip to content

Commit e6d52db

Browse files
committed
[js] Ensure script command uses the browsing contexts correctly
1 parent 258df85 commit e6d52db

2 files changed

Lines changed: 20 additions & 12 deletions

File tree

javascript/node/selenium-webdriver/bidi/scriptManager.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@ class ScriptManager {
3232
this._driver = driver
3333
}
3434

35-
async init(browsingContextId) {
35+
async init(browsingContextIds) {
3636
if (!(await this._driver.getCapabilities()).get('webSocketUrl')) {
3737
throw Error('WebDriver instance must support BiDi protocol')
3838
}
3939

4040
this.bidi = await this._driver.getBidi()
41-
this._browsingContextId = browsingContextId
41+
this._browsingContextIds = browsingContextIds
4242
}
4343

4444
async disownRealmScript(realmId, handles) {
@@ -173,6 +173,14 @@ class ScriptManager {
173173
sandbox: sandbox,
174174
}
175175

176+
if (Array.isArray(this._browsingContextIds) && this._browsingContextIds.length > 0) {
177+
params.contexts = this._browsingContextIds
178+
}
179+
180+
if (typeof this._browsingContextIds === 'string') {
181+
params.contexts = new Array(this._browsingContextIds)
182+
}
183+
176184
const command = {
177185
method: 'script.addPreloadScript',
178186
params,
@@ -331,8 +339,8 @@ class ScriptManager {
331339
}
332340

333341
async subscribeAndHandleEvent(eventType, callback) {
334-
if (this._browsingContextIds != null) {
335-
await this.bidi.subscribe(eventType, this._browsingContextIds)
342+
if (this.browsingContextIds != null) {
343+
await this.bidi.subscribe(eventType, this.browsingContextIds)
336344
} else {
337345
await this.bidi.subscribe(eventType)
338346
}

javascript/node/selenium-webdriver/test/bidi/script_test.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -540,9 +540,9 @@ suite(
540540
assert.equal(windowRealm.browsingContext, windowId)
541541
})
542542

543-
it('can add preload script', async function () {
543+
it('can add preload script test', async function () {
544544
const id = await driver.getWindowHandle()
545-
const manager = await ScriptManager(id, driver)
545+
const manager = await ScriptManager([], driver)
546546

547547
await manager.addPreloadScript("() => { window.foo='bar'; }")
548548

@@ -587,7 +587,7 @@ suite(
587587

588588
it('can access preload script properties', async function () {
589589
const id = await driver.getWindowHandle()
590-
const manager = await ScriptManager(id, driver)
590+
const manager = await ScriptManager([], driver)
591591

592592
await manager.addPreloadScript('() => { window.preloadScriptFunction = () => window.baz = 42; }')
593593

@@ -603,7 +603,7 @@ suite(
603603

604604
it('can add preload script to sandbox', async function () {
605605
const id = await driver.getWindowHandle()
606-
const manager = await ScriptManager(id, driver)
606+
const manager = await ScriptManager([], driver)
607607

608608
await manager.addPreloadScript('() => { window.foo = 1; }')
609609
await manager.addPreloadScript('() => { window.bar = 2; }', [], 'sandbox')
@@ -639,7 +639,7 @@ suite(
639639

640640
it('can remove properties set by preload script', async function () {
641641
const id = await driver.getWindowHandle()
642-
const manager = await ScriptManager(id, driver)
642+
const manager = await ScriptManager([], driver)
643643

644644
await manager.addPreloadScript('() => { window.foo = 42; }')
645645
await manager.addPreloadScript('() => { window.foo = 50; }', [], 'sandbox_1')
@@ -658,7 +658,7 @@ suite(
658658

659659
it('can remove preload script', async function () {
660660
const id = await driver.getWindowHandle()
661-
const manager = await ScriptManager(id, driver)
661+
const manager = await ScriptManager([], driver)
662662

663663
let script = await manager.addPreloadScript("() => { window.foo='bar'; }")
664664

@@ -683,7 +683,7 @@ suite(
683683

684684
it('cannot remove same preload script twice', async function () {
685685
const id = await driver.getWindowHandle()
686-
const manager = await ScriptManager(id, driver)
686+
const manager = await ScriptManager([], driver)
687687

688688
let script = await manager.addPreloadScript("() => { window.foo='bar'; }")
689689

@@ -696,7 +696,7 @@ suite(
696696

697697
it('can remove one of preload script', async function () {
698698
const id = await driver.getWindowHandle()
699-
const manager = await ScriptManager(id, driver)
699+
const manager = await ScriptManager([], driver)
700700

701701
let script_1 = await manager.addPreloadScript("() => { window.bar='foo'; }")
702702

0 commit comments

Comments
 (0)