@@ -95,6 +95,15 @@ public async Task<ActionResult> CreateNewSession([FromBody] CreateSessionRequest
9595 {
9696 session . NewCommandTimeout = TimeSpan . FromSeconds ( newCommandTimeout ) ;
9797 }
98+ if ( capabilities . TryGetValue ( "timeouts" , out var valueJson ) )
99+ {
100+ var timeoutsConfiguration = JsonSerializer . Deserialize < TimeoutsConfiguration > ( valueJson ) ;
101+ if ( timeoutsConfiguration == null )
102+ {
103+ throw WebDriverResponseException . InvalidArgument ( "Could not deserialize timeouts capability" ) ;
104+ }
105+ session . TimeoutsConfiguration = timeoutsConfiguration ;
106+ }
98107 _sessionRepository . Add ( session ) ;
99108 _logger . LogInformation ( "Created session with ID {SessionId} and capabilities {Capabilities}" , session . SessionId , capabilities ) ;
100109 return await Task . FromResult ( WebDriverResult . Success ( new CreateSessionResponse ( )
@@ -133,24 +142,24 @@ private bool IsMatchingCapabilitySet(IDictionary<string, JsonElement> capabiliti
133142
134143 if ( appPath != "Root" )
135144 {
136- if ( TryGetStringCapability ( capabilities , "appium:appArguments" , out _ ) )
145+ if ( capabilities . ContainsKey ( "appium:appArguments" ) )
137146 {
138147 matchedCapabilities . Add ( "appium:appArguments" , capabilities [ "appium:appArguments" ] ) ;
139148 }
140149 if ( ! appPath . EndsWith ( "!App" ) )
141150 {
142- if ( TryGetStringCapability ( capabilities , "appium:appWorkingDir" , out _ ) )
151+ if ( capabilities . ContainsKey ( "appium:appWorkingDir" ) )
143152 {
144153 matchedCapabilities . Add ( "appium:appWorkingDir" , capabilities [ "appium:appWorkingDir" ] ) ;
145154 }
146155 }
147156 }
148157 }
149- else if ( TryGetStringCapability ( capabilities , "appium:appTopLevelWindow" , out _ ) )
158+ else if ( capabilities . ContainsKey ( "appium:appTopLevelWindow" ) )
150159 {
151160 matchedCapabilities . Add ( "appium:appTopLevelWindow" , capabilities [ "appium:appTopLevelWindow" ] ) ;
152161 }
153- else if ( TryGetStringCapability ( capabilities , "appium:appTopLevelWindowTitleMatch" , out _ ) )
162+ else if ( capabilities . ContainsKey ( "appium:appTopLevelWindowTitleMatch" ) )
154163 {
155164 matchedCapabilities . Add ( "appium:appTopLevelWindowTitleMatch" , capabilities [ "appium:appTopLevelWindowTitleMatch" ] ) ;
156165 }
@@ -159,11 +168,16 @@ private bool IsMatchingCapabilitySet(IDictionary<string, JsonElement> capabiliti
159168 return false ;
160169 }
161170
162- if ( TryGetNumberCapability ( capabilities , "appium:newCommandTimeout" , out _ ) )
171+ if ( capabilities . ContainsKey ( "appium:newCommandTimeout" ) )
163172 {
164173 matchedCapabilities . Add ( "appium:newCommandTimeout" , capabilities [ "appium:newCommandTimeout" ] ) ; ;
165174 }
166175
176+ if ( capabilities . ContainsKey ( "timeouts" ) )
177+ {
178+ matchedCapabilities . Add ( "timeouts" , capabilities [ "timeouts" ] ) ;
179+ }
180+
167181 return matchedCapabilities . Count == capabilities . Count ;
168182 }
169183
0 commit comments