@@ -22,15 +22,14 @@ const { Pages, suite } = require('../../lib/test')
2222const { Browser } = require ( 'selenium-webdriver' )
2323const BrowserBiDi = require ( 'selenium-webdriver/bidi/browser' )
2424const getScriptManager = require ( 'selenium-webdriver/bidi/scriptManager' )
25- const { ignore } = require ( '../../lib/test' )
2625const { getPermissionInstance, PermissionState } = require ( 'selenium-webdriver/bidi/permissions' )
2726const BrowsingContext = require ( 'selenium-webdriver/bidi/browsingContext' )
2827const { CreateContextParameters } = require ( 'selenium-webdriver/bidi/createContextParameters' )
2928
3029suite (
3130 function ( env ) {
32- ignore ( env . browsers ( Browser . CHROME ) ) . describe ( 'BiDi Permissions' , function ( ) {
33- let driver , permission , browser , script
31+ describe ( 'BiDi Permissions' , function ( ) {
32+ let driver , permission , browser , script , browserName
3433
3534 const GET_GEOLOCATION_PERMISSION =
3635 "async () => { const perm = await navigator.permissions.query({ name: 'geolocation' }); return perm.state; }"
4140 permission = await getPermissionInstance ( driver )
4241 browser = await BrowserBiDi ( driver )
4342 script = await getScriptManager ( [ ] , driver )
43+ browserName = ( await driver . getCapabilities ( ) ) . getBrowserName ( ) . toLowerCase ( )
4444 } )
4545
4646 afterEach ( function ( ) {
@@ -57,7 +57,10 @@ suite(
5757 true ,
5858 [ ] ,
5959 )
60- assert . strictEqual ( initialPermission . result . value , 'prompt' )
60+
61+ // Chrome's default permission state is 'denied', while Firefox uses 'prompt'
62+ const expectedDefaultState = [ 'chrome' , 'microsoftedge' ] . includes ( browserName ) ? 'denied' : 'prompt'
63+ assert . strictEqual ( initialPermission . result . value , expectedDefaultState )
6164
6265 const origin = await script . callFunctionInBrowsingContext ( context . id , GET_ORIGIN , true , [ ] )
6366 const originValue = origin . result . value
7881 true ,
7982 [ ] ,
8083 )
81- assert . strictEqual ( initialPermission . result . value , 'prompt' )
84+ // Chrome's default permission state is 'denied', while Firefox uses 'prompt'
85+ const expectedDefaultState = [ 'chrome' , 'microsoftedge' ] . includes ( browserName ) ? 'denied' : 'prompt'
86+ assert . strictEqual ( initialPermission . result . value , expectedDefaultState )
8287
8388 const origin = await script . callFunctionInBrowsingContext ( context . id , GET_ORIGIN , true , [ ] )
8489
@@ -119,32 +124,37 @@ suite(
119124 const origin = await script . callFunctionInBrowsingContext ( context1 . id , GET_ORIGIN , true , [ ] )
120125 const originValue = origin . result . value
121126
127+ // Get the actual permission states from each context
122128 const originalTabPermission = await script . callFunctionInBrowsingContext (
123129 context1 . id ,
124130 GET_GEOLOCATION_PERMISSION ,
125131 true ,
126132 [ ] ,
127133 )
128- assert . strictEqual ( originalTabPermission . result . value , 'prompt' )
129134
130135 const newTabPermission = await script . callFunctionInBrowsingContext (
131136 context2 . id ,
132137 GET_GEOLOCATION_PERMISSION ,
133138 true ,
134139 [ ] ,
135140 )
136- assert . strictEqual ( newTabPermission . result . value , 'prompt' )
137141
142+ const originalTabState = originalTabPermission . result . value
143+ const newTabState = newTabPermission . result . value
144+
145+ // Set permission only for the user context
138146 await permission . setPermission ( { name : 'geolocation' } , PermissionState . GRANTED , originValue , userContext )
139147
148+ // Check that the original tab's permission state hasn't changed
140149 const originalTabUpdatedPermission = await script . callFunctionInBrowsingContext (
141150 context1 . id ,
142151 GET_GEOLOCATION_PERMISSION ,
143152 true ,
144153 [ ] ,
145154 )
146- assert . strictEqual ( originalTabUpdatedPermission . result . value , 'prompt' )
155+ assert . strictEqual ( originalTabUpdatedPermission . result . value , originalTabState )
147156
157+ // Check that the new tab's permission state has been updated to GRANTED
148158 const newTabUpdatedPermission = await script . callFunctionInBrowsingContext (
149159 context2 . id ,
150160 GET_GEOLOCATION_PERMISSION ,
0 commit comments