Skip to content

Commit 6cb32cb

Browse files
authored
Merge pull request #22 from FlaUI/capabilities
Capabilities
2 parents 8a250e5 + fc2ab29 commit 6cb32cb

File tree

3 files changed

+39
-5
lines changed

3 files changed

+39
-5
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ public class FlaUIDriverOptions : DriverOptions
5858
{
5959
PlatformName = "windows"
6060
};
61+
options.AddAdditionalOption("appium:automationName", "flaui");
6162
options.AddAdditionalOption("appium:app", path);
6263
return options;
6364
}
@@ -79,6 +80,7 @@ import { remote } from 'webdriverio'
7980
const driver = await remote({
8081
capabilities: {
8182
platformName: 'windows',
83+
'appium:automationName': 'flaui'
8284
'appium:app': 'C:\\YourApp.exe'
8385
}
8486
});

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: 19 additions & 5 deletions
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()
@@ -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

Comments
 (0)