@@ -20,9 +20,9 @@ public PlaywrightSession(IPlaywright playwright, IBrowser browser)
2020
2121 public IBrowser Browser { get ; }
2222
23- public static async Task < PlaywrightSession > StartAsync ( )
23+ public static async Task < PlaywrightSession > StartAsync ( string browserName = null )
2424 {
25- var exitCode = Playwright . Program . Main ( [ "install" , "chromium" ] ) ;
25+ var exitCode = Playwright . Program . Main ( [ "install" ] ) ;
2626 if ( exitCode is not 0 )
2727 {
2828 throw new Exception ( $ "Playwright exited with code { exitCode } ") ;
@@ -37,7 +37,15 @@ public static async Task<PlaywrightSession> StartAsync()
3737 browserTypeLaunchOptions . Headless = false ;
3838 }
3939
40- var browser = await session . Chromium . LaunchAsync ( browserTypeLaunchOptions ) . Timeout ( TimeSpan . FromMinutes ( 5 ) , "Timeout launching browser" ) ;
40+ var selectedBrowser = ( browserName ?? Environment . GetEnvironmentVariable ( "Playwright.BrowserName" ) ?? "chromium" ) . ToLowerInvariant ( ) ;
41+
42+ IBrowser browser = selectedBrowser switch
43+ {
44+ "chromium" => await session . Chromium . LaunchAsync ( browserTypeLaunchOptions ) . Timeout ( TimeSpan . FromMinutes ( 5 ) , "Timeout launching browser" ) ,
45+ "firefox" => await session . Firefox . LaunchAsync ( browserTypeLaunchOptions ) . Timeout ( TimeSpan . FromMinutes ( 5 ) , "Timeout launching browser" ) ,
46+ "webkit" => await session . Webkit . LaunchAsync ( browserTypeLaunchOptions ) . Timeout ( TimeSpan . FromMinutes ( 5 ) , "Timeout launching browser" ) ,
47+ _ => throw new ArgumentException ( $ "Unknown browser '{ selectedBrowser } '. Valid values: chromium, firefox, webkit.")
48+ } ;
4149
4250 return new PlaywrightSession ( session , browser ) ;
4351 }
0 commit comments