Skip to content

Commit 53037ed

Browse files
authored
Retry Appium local server starting (#35)
1 parent 9613b1a commit 53037ed

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

Aquality.Appium.Mobile/src/Aquality.Appium.Mobile/Applications/ApplicationFactory.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,16 @@ namespace Aquality.Appium.Mobile.Applications
1313
{
1414
public abstract class ApplicationFactory : IApplicationFactory
1515
{
16+
protected virtual IActionRetrier ActionRetrier => new CustomActionRetrier();
17+
1618
public abstract IMobileApplication Application { get; }
1719

1820
protected virtual AppiumDriver GetDriver(Uri serviceUrl)
1921
{
2022
var platformName = AqualityServices.ApplicationProfile.PlatformName;
2123
var driverOptions = AqualityServices.ApplicationProfile.DriverSettings.AppiumOptions;
2224
var commandTimeout = AqualityServices.Get<ITimeoutConfiguration>().Command;
23-
return new CustomActionRetrier().DoWithRetry(
25+
return ActionRetrier.DoWithRetry(
2426
() => CreateSession(platformName, serviceUrl, driverOptions, commandTimeout));
2527
}
2628

@@ -52,7 +54,8 @@ protected class CustomActionRetrier : ActionRetrier
5254
"appium settings app is not running",
5355
"socket hang up",
5456
"stream was destroyed",
55-
"invalid or unrecognized response"
57+
"invalid or unrecognized response",
58+
"has been expired"
5659
};
5760

5861
public CustomActionRetrier()

Aquality.Appium.Mobile/src/Aquality.Appium.Mobile/Applications/LocalApplicationFactory.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using OpenQA.Selenium.Appium.Service;
2+
using OpenQA.Selenium.Appium.Service.Exceptions;
23

34
namespace Aquality.Appium.Mobile.Applications
45
{
@@ -9,7 +10,7 @@ public override IMobileApplication Application
910
get
1011
{
1112
var service = new AppiumServiceBuilder().WithArguments(AqualityServices.LocalServiceSettings.ServerOptions).Build();
12-
service.Start();
13+
ActionRetrier.DoWithRetry(service.Start, new [] { typeof(AppiumServerHasNotBeenStartedLocallyException)} );
1314
var driver = GetDriver(service.ServiceUrl);
1415
LogApplicationIsReady();
1516
return new Application(driver, service);

0 commit comments

Comments
 (0)