Skip to content

Commit a0340cd

Browse files
committed
Add timeouts capability
1 parent 8da1140 commit a0340cd

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

src/FlaUI.WebDriver.UITests/SessionTests.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using FlaUI.WebDriver.UITests.TestUtil;
44
using OpenQA.Selenium;
55
using System;
6+
using System.Collections.Generic;
67

78
namespace FlaUI.WebDriver.UITests
89
{
@@ -90,6 +91,23 @@ public void NewSession_AppWorkingDir_IsSupported()
9091
Assert.That(title, Is.EqualTo("FlaUI WPF Test App"));
9192
}
9293

94+
[Test]
95+
public void NewSession_Timeouts_IsSupported()
96+
{
97+
var driverOptions = FlaUIDriverOptions.TestApp();
98+
driverOptions.AddAdditionalOption("timeouts", new Dictionary<string, int>()
99+
{
100+
["script"] = 10000,
101+
["pageLoad"] = 50000,
102+
["implicit"] = 3000
103+
});
104+
using var driver = new RemoteWebDriver(WebDriverFixture.WebDriverUrl, driverOptions);
105+
106+
Assert.That(driver.Manage().Timeouts().AsynchronousJavaScript, Is.EqualTo(TimeSpan.FromSeconds(10)));
107+
Assert.That(driver.Manage().Timeouts().PageLoad, Is.EqualTo(TimeSpan.FromSeconds(50)));
108+
Assert.That(driver.Manage().Timeouts().ImplicitWait, Is.EqualTo(TimeSpan.FromSeconds(3)));
109+
}
110+
93111
[Test]
94112
public void NewSession_NotSupportedCapability_Throws()
95113
{

src/FlaUI.WebDriver/Controllers/SessionController.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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()
@@ -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

Comments
 (0)