1+ import type { Capabilities } from '@wdio/types'
12import type {
23 BrowserProvider ,
34 BrowserProviderInitializationOptions ,
45 TestProject ,
56} from 'vitest/node'
6- import type { RemoteOptions } from 'webdriverio'
77
88const webdriverBrowsers = [ 'firefox' , 'chrome' , 'edge' , 'safari' ] as const
99type WebdriverBrowser = ( typeof webdriverBrowsers ) [ number ]
@@ -22,7 +22,7 @@ export class WebdriverBrowserProvider implements BrowserProvider {
2222 private browserName ! : WebdriverBrowser
2323 private project ! : TestProject
2424
25- private options ?: RemoteOptions
25+ private options ?: Capabilities . WebdriverIOConfig
2626
2727 getSupportedBrowsers ( ) : readonly string [ ] {
2828 return webdriverBrowsers
@@ -34,20 +34,32 @@ export class WebdriverBrowserProvider implements BrowserProvider {
3434 ) : Promise < void > {
3535 this . project = ctx
3636 this . browserName = browser
37- this . options = options as RemoteOptions
37+ this . options = options as Capabilities . WebdriverIOConfig
3838 }
3939
4040 async switchToTestFrame ( ) : Promise < void > {
4141 const page = this . browser !
42- const iframe = await page . findElement (
43- 'css selector' ,
44- 'iframe[data-vitest]' ,
45- )
46- await page . switchToFrame ( iframe )
42+ // support wdio@9
43+ if ( page . switchFrame ) {
44+ await page . switchFrame ( page . $ ( 'iframe[data-vitest]' ) )
45+ }
46+ else {
47+ const iframe = await page . findElement (
48+ 'css selector' ,
49+ 'iframe[data-vitest]' ,
50+ )
51+ await page . switchToFrame ( iframe )
52+ }
4753 }
4854
4955 async switchToMainFrame ( ) : Promise < void > {
50- await this . browser ! . switchToParentFrame ( )
56+ const page = this . browser !
57+ if ( page . switchFrame ) {
58+ await page . switchFrame ( null )
59+ }
60+ else {
61+ await page . switchToParentFrame ( )
62+ }
5163 }
5264
5365 getCommandsContext ( ) : {
@@ -86,7 +98,7 @@ export class WebdriverBrowserProvider implements BrowserProvider {
8698 }
8799
88100 private buildCapabilities ( ) {
89- const capabilities : RemoteOptions [ 'capabilities' ] = {
101+ const capabilities : Capabilities . WebdriverIOConfig [ 'capabilities' ] = {
90102 ...this . options ?. capabilities ,
91103 browserName : this . browserName ,
92104 }
0 commit comments