Skip to content

Commit 02b4f40

Browse files
authored
Add IsStarted to application interface (#44)
1 parent d96e467 commit 02b4f40

File tree

5 files changed

+23
-4
lines changed

5 files changed

+23
-4
lines changed

Aquality.Selenium.Core/src/Aquality.Selenium.Core/Applications/AqualityServices.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ protected AqualityServices()
1616

1717
protected static bool IsApplicationStarted()
1818
{
19-
return AppContainer.IsValueCreated && AppContainer.Value.Driver.SessionId != null;
19+
return AppContainer.IsValueCreated && AppContainer.Value.IsStarted;
2020
}
2121

2222
protected static TApplication GetApplication(Func<IServiceProvider, TApplication> startApplicationFunction, Func<IServiceCollection> serviceCollectionProvider = null)

Aquality.Selenium.Core/src/Aquality.Selenium.Core/Applications/IApplication.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@ public interface IApplication
1313
/// </summary>
1414
RemoteWebDriver Driver { get; }
1515

16+
/// <summary>
17+
/// Defines if the application is already started or not.
18+
/// </summary>
19+
bool IsStarted { get; }
20+
1621
/// <summary>
1722
/// Sets implicit wait timeout to browser.
1823
/// Method was extracted with purpose not to pass it to Driver if it is similar to previous value.

Aquality.Selenium.Core/src/Aquality.Selenium.Core/Aquality.Selenium.Core.xml

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Aquality.Selenium.Core/tests/Aquality.Selenium.Core.Tests/Applications/Browser/ChromeApplication.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ public ChromeApplication(ITimeoutConfiguration timeoutConfiguration)
1919

2020
public RemoteWebDriver Driver { get; }
2121

22+
public bool IsStarted => Driver.SessionId != null;
23+
2224
public void SetImplicitWaitTimeout(TimeSpan timeout)
2325
{
2426
if (timeout != implicitWait)

Aquality.Selenium.Core/tests/Aquality.Selenium.Core.Tests/Applications/WindowsApp/WindowsApplication.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,23 @@ namespace Aquality.Selenium.Core.Tests.Applications.WindowsApp
1010
public class WindowsApplication : IApplication
1111
{
1212
private TimeSpan implicitWait;
13+
private readonly Lazy<RemoteWebDriver> lazyDriver;
1314

1415
public WindowsApplication(string application, Uri driverServer, ITimeoutConfiguration timeoutConfiguration, AppiumOptions appiumOptions)
1516
{
1617
var options = appiumOptions ?? new AppiumOptions();
1718
options.AddAdditionalCapability("app", application);
18-
Driver = new WindowsDriver<WindowsElement>(driverServer, options, timeoutConfiguration.Command);
19-
Driver.Manage().Timeouts().ImplicitWait = timeoutConfiguration.Implicit;
19+
lazyDriver = new Lazy<RemoteWebDriver>(() =>
20+
{
21+
var value = new WindowsDriver<WindowsElement>(driverServer, options, timeoutConfiguration.Command);
22+
value.Manage().Timeouts().ImplicitWait = timeoutConfiguration.Implicit;
23+
return value;
24+
});
2025
}
2126

22-
public RemoteWebDriver Driver { get; }
27+
public RemoteWebDriver Driver => lazyDriver.Value;
28+
29+
public bool IsStarted => lazyDriver.IsValueCreated && Driver.SessionId != null;
2330

2431
public void SetImplicitWaitTimeout(TimeSpan timeout)
2532
{

0 commit comments

Comments
 (0)