@@ -171,19 +171,24 @@ const useLocalBrowser = process.env.USE_LOCAL_BROWSER === 'true';
171171// }
172172
173173// Define browser configurations
174+ // BroadcastChannel API support: Safari 15.4+, Edge 84+, Firefox 91+, Chrome 102+, Opera 76+
174175const allBrowserConfigs = [
175- // { name: 'chrome', browserName: 'chrome', os: 'Windows', osVersion: '11' },
176- // { name: 'firefox', browserName: 'firefox', os: 'Windows', osVersion: '11' },
177- // { name: 'edge', browserName: 'edge', os: 'Windows', osVersion: '11' },
178- // we need safari 15.4 + cause vitest/browser relies on BroadcastChannel API
179- { name : 'safari ' , browserName : 'safari ' , os : 'OS X ' , osVersion : 'Monterey ' } , // Safari 15+ has BroadcastChannel support
176+ { name : 'chrome' , browserName : 'chrome' , os : 'Windows' , osVersion : '11' } ,
177+ { name : 'firefox' , browserName : 'firefox' , os : 'Windows' , osVersion : '11' } ,
178+ { name : 'edge' , browserName : 'edge' , os : 'Windows' , osVersion : '11' } ,
179+ { name : ' safari' , browserName : 'safari' , os : 'OS X' , osVersion : 'Monterey' } ,
180+ { name : 'opera ' , browserName : 'opera ' , os : 'Windows ' , osVersion : '11 ' } ,
180181] ;
181182
182- // Filter browsers based on VITEST_BROWSER environment variable
183- const browserFilter = process . env . VITEST_BROWSER ;
184- const browserConfigs = browserFilter
185- ? allBrowserConfigs . filter ( config => config . name === browserFilter . toLowerCase ( ) )
186- : allBrowserConfigs ;
183+ // Get browser from VITEST_BROWSER env var (default to chrome)
184+ const browserName = process . env . VITEST_BROWSER || 'chrome' ;
185+ const browserConfig = allBrowserConfigs . find ( c => c . name === browserName . toLowerCase ( ) ) ;
186+
187+ if ( ! browserConfig ) {
188+ throw new Error ( `Browser "${ browserName } " not found. Available: ${ allBrowserConfigs . map ( c => c . name ) . join ( ', ' ) } ` ) ;
189+ }
190+
191+ const browserConfigs = [ browserConfig ] ;
187192
188193// Build local browser capabilities
189194function buildLocalCapabilities ( browserName : string ) {
@@ -203,13 +208,13 @@ function buildLocalCapabilities(browserName: string) {
203208function buildBrowserStackCapabilities ( config : typeof allBrowserConfigs [ 0 ] ) {
204209 return {
205210 browserName : config . browserName ,
206- 'goog:chromeOptions' : {
207- args : [
208- '--disable-blink-features=AutomationControlled' ,
209- '--disable-dev-shm-usage' ,
210- '--no-sandbox' ,
211- ] ,
212- } ,
211+ // 'goog:chromeOptions': {
212+ // args: [
213+ // '--disable-blink-features=AutomationControlled',
214+ // '--disable-dev-shm-usage',
215+ // '--no-sandbox',
216+ // ],
217+ // },
213218 'bstack:options' : {
214219 os : config . os ,
215220 osVersion : config . osVersion ,
@@ -260,6 +265,16 @@ export default defineConfig({
260265 name : 'console-capture-plugin' ,
261266 enforce : 'pre' , // Run before other plugins
262267 configureServer ( server ) {
268+ // Check if console capture is enabled (default to false)
269+ const consoleCaptureEnabled = process . env . VITEST_CONSOLE_CAPTURE === 'true' ;
270+
271+ if ( ! consoleCaptureEnabled ) {
272+ console . log ( '[Console Capture] Disabled (set VITEST_CONSOLE_CAPTURE=true to enable)' ) ;
273+ return ;
274+ }
275+
276+ console . log ( '[Console Capture] Enabled' ) ;
277+
263278 // Add middleware to handle console log posts from browser
264279 server . middlewares . use ( ( req , res , next ) => {
265280 if ( req . url === '/__vitest_console__' && req . method === 'POST' ) {
@@ -442,7 +457,7 @@ export default defineConfig({
442457 browser : {
443458 enabled : true ,
444459 provider : 'webdriverio' ,
445- headless : useLocalBrowser ? ( process . env . CI === 'true' || process . env . HEADLESS === 'true' ) : false ,
460+ headless : false ,
446461 // Vitest 3 browser mode configuration
447462 instances : buildBrowserInstances ( ) ,
448463 // Increase browser connection timeout for Safari on BrowserStack (default is 60s)
0 commit comments