@@ -35,6 +35,7 @@ namespace Microsoft.Playwright.TestAdapter;
3535public class PlaywrightSettingsProvider : ISettingsProvider
3636{
3737 private static PlaywrightSettingsXml ? _settings = null ! ;
38+ private static PlaywrightSettings ? _playwrightSettings ;
3839
3940 public static void LoadViaEnvIfNeeded ( )
4041 {
@@ -56,6 +57,12 @@ public static string BrowserName
5657 {
5758 get
5859 {
60+ if ( _playwrightSettings != null )
61+ {
62+ var browser = _playwrightSettings . Browser . ToString ( ) . ToLowerInvariant ( ) ;
63+ ValidateBrowserName ( browser , "PlaywrightSettings.Browser property" , string . Empty ) ;
64+ return browser ;
65+ }
5966 var browserFromEnv = Environment . GetEnvironmentVariable ( "BROWSER" ) ? . ToLowerInvariant ( ) ;
6067 // GitHub Codespaces and DevContainers sets the BROWSER environment variable, ignore it if its bogus.
6168 if ( ! string . IsNullOrEmpty ( browserFromEnv ) && ! browserFromEnv ! . StartsWith ( "/vscode/" ) )
@@ -77,23 +84,16 @@ public static float? ExpectTimeout
7784 {
7885 get
7986 {
80- if ( _settings == null )
81- {
82- return null ;
83- }
84- if ( _settings . ExpectTimeout . HasValue )
85- {
86- return _settings . ExpectTimeout . Value ;
87- }
88- return null ;
87+ var expectTimeout = _playwrightSettings ? . ExpectTimeout ? . TotalMilliseconds ;
88+ return expectTimeout . HasValue ? Convert . ToSingle ( expectTimeout . Value ) : _settings ? . ExpectTimeout ;
8989 }
9090 }
9191
9292 public static BrowserTypeLaunchOptions LaunchOptions
9393 {
9494 get
9595 {
96- var launchOptions = _settings ? . LaunchOptions ?? new BrowserTypeLaunchOptions ( ) ;
96+ var launchOptions = _playwrightSettings ? . LaunchOptions ?? _settings ? . LaunchOptions ?? new BrowserTypeLaunchOptions ( ) ;
9797 if ( Environment . GetEnvironmentVariable ( "HEADED" ) == "1" )
9898 {
9999 launchOptions . Headless = false ;
@@ -124,5 +124,8 @@ public void Load(XmlReader reader)
124124 _settings = new PlaywrightSettingsXml ( reader ) ;
125125 Environment . SetEnvironmentVariable ( "PW_INTERNAL_ADAPTER_SETTINGS" , JsonSerializer . Serialize ( _settings ) ) ;
126126 }
127+
128+ public static void Load ( PlaywrightSettings settings )
129+ => _playwrightSettings = settings ;
127130}
128131
0 commit comments