@@ -100,16 +100,41 @@ export const startBrowsers = async ({
100100 ) ;
101101 const wsEndpoints = browsers . map ( ( browser ) => browser . wsEndpoint ( ) ) ;
102102 saveWsEndpoints ( wsEndpoints ) ;
103+ browsers . forEach ( ( browser ) => browser . disconnect ( ) ) ;
103104 return browsers ;
104105} ;
105106
106107export const closeBrowsers = async (
107108 config : JestPuppeteerConfig ,
108109 browsers : Browser [ ] ,
109110) => {
110- await Promise . all (
111- browsers . map ( async ( browser ) => closeBrowser ( config , browser ) ) ,
112- ) ;
111+ if ( config . connect ) {
112+ await Promise . all (
113+ browsers . map ( async ( browser ) => closeBrowser ( config , browser ) ) ,
114+ ) ;
115+ }
116+
117+ const closeRequests : Promise < void > [ ] = [ ] ;
118+ const puppeteer = getPuppeteer ( ) ;
119+ const wsEndpoints = readWsEndpoints ( ) ;
120+ while ( wsEndpoints . length ) {
121+ const wsEndpoint = wsEndpoints . pop ( ) ! ;
122+ closeRequests . push (
123+ puppeteer
124+ . connect ( {
125+ ...( config . launch ?. browser === "firefox" && {
126+ protocol : "webDriverBiDi" ,
127+ } ) ,
128+ ...config . connect ,
129+ ...config . launch ,
130+ browserURL : undefined ,
131+ browserWSEndpoint : wsEndpoint ,
132+ } )
133+ . then ( ( browser ) => browser . close ( ) ) ,
134+ ) ;
135+ }
136+ await Promise . all ( closeRequests ) ;
137+ saveWsEndpoints ( [ ] ) ;
113138} ;
114139
115140const getWorkerWsEndpoint = ( ) : string => {
@@ -128,6 +153,7 @@ export const connectBrowserFromWorker = async (
128153 const wsEndpoint = getWorkerWsEndpoint ( ) ;
129154 const puppeteer = getPuppeteer ( ) ;
130155 return puppeteer . connect ( {
156+ ...( config . launch ?. browser === "firefox" && { protocol : "webDriverBiDi" } ) ,
131157 ...config . connect ,
132158 ...config . launch ,
133159 browserURL : undefined ,
0 commit comments