/// <summary> /// Constructor. /// </summary> /// <param name="nodeJSPath">Path to default nodeJs exe file</param> /// <param name="workingDir">Default working directory</param> /// <param name="settings">Appium server settings to be used</param> public AppiumServerRunner(string nodeJSPath, string workingDir, IAppiumServerSettings settings) { //set defaults _defaultFilename = nodeJSPath; _defaultWorkingDir = workingDir; _args = new List <IAppiumServerArgument>(); // setup runner Setup(settings); }
public AppiumServerRunnerMock(string nodeExec, string workingDir, IAppiumServerSettings settings) : base(nodeExec, workingDir, settings) { }
/// <summary> /// Sets up the runner acording to given <paramref name="settings"/>. /// </summary> /// <param name="settings">Appium server settings</param> public void Setup(IAppiumServerSettings settings) { if (_args == null) { new List <IAppiumServerArgument>(); } else { _args.Clear(); } // basic runner setup _filename = _defaultFilename; _workingDir = _defaultWorkingDir; // add dev mode arguments if (settings.UseDeveloperMode) { if (settings.UseExternalNodeJSBinary) { _filename = settings.ExternalNodeJSBinary; } if (settings.UseExternalAppiumPackage) { _workingDir = settings.ExternalAppiumPackage; } if (settings.UseNodeJSDebugging) { _args.Add(new NodeJSDebugArgument(settings.NodeJSDebugPort)); } if (settings.BreakOnApplicationStart) { _args.Add(new BreakOnAppStartArgument()); } } // basic node args _args.Add(new ServerRunnerArgument()); _args.Add(new ServerAddressArgument(settings.IPAddress)); _args.Add(new ServerPortArgument(settings.Port)); if (!settings.UseAndroidBrowser) { if (settings.UseApplicationPath) { _args.Add(new ApplicationPathArgument(settings.ApplicationPath)); } // Android specific arguments if (settings.UseAndroidActivity) { _args.Add(new AndroidActivityArgument(settings.AndroidActivity)); } if (settings.UseAndroidPackage) { _args.Add(new AndroidPackageArgument(settings.AndroidPackage)); } if (settings.UseAndroidWaitForActivity) { _args.Add(new AndroidWaitActivityArgument(settings.AndroidWaitForActivity)); } if (settings.UseAndroidWaitForPackage) { _args.Add(new AndroidWaitForPackageArgument(settings.AndroidWaitForPackage)); } } else { _args.Add(new AndroidBrowserArgument(settings.AndroidBrowser)); } if (settings.LaunchAVD) { _args.Add(new AVDToLaunchArgument(settings.AVDToLaunch)); } if (settings.UseAndroidDeviceReadyTimeout) { _args.Add(new AndroidDeviceReadyTimeoutArgument(settings.AndroidDeviceReadyTimeout)); } if (settings.PerformFullAndroidReset) { _args.Add(new FullResetArgument()); } if (settings.UseAndroidIntentAction) { _args.Add(new AndroidIntentActionArgument(settings.AndroidIntentAction)); } if (settings.UseAndroidIntentCategory) { _args.Add(new AndroidIntentCategoryArgument(settings.AndroidIntentCategory)); } if (settings.UseAndroidIntentFlags) { _args.Add(new AndroidIntentFlagsArgument(settings.AndroidIntentFlags)); } if (settings.UseAndroidIntentArguments) { _args.Add(new AndroidIntentArgumentsArgument(settings.AndroidIntentArguments)); } // preference-related arguments if (settings.QuietLogging) { _args.Add(new QuietLoggingArgument()); } if (settings.NoReset) { _args.Add(new NoResetArgument()); } if (settings.PrelaunchApplication) { _args.Add(new PrelauchApplicationArgument()); } if (settings.UseAVDLaunchArguments) { _args.Add(new AVDArgsToLaunchArgument(settings.AVDLaunchArguments)); } if (settings.UseSDKPath) { Environment.SetEnvironmentVariable("ANDROID_HOME", settings.SDKPath); } if (settings.UseCoverageClass) { _args.Add(new AndroidCoverageArgument(settings.CoverageClass)); } if (settings.UseBootstrapPort) { _args.Add(new AndroidBootstrapPortArgument(settings.BootstrapPort)); } if (settings.UseSelendroidPort) { _args.Add(new SelendroidPortArgument(settings.SelendroidPort)); } if (settings.UseChromeDriverPort) { _args.Add(new ChromeDriverPortArgument(settings.ChromeDriverPort)); } if (settings.ShowTimestamps) { _args.Add(new ShowTimestampLogArgument()); } if (settings.UseLogToFile) { _args.Add(new LogToFileArgument(settings.LogToFile)); } if (settings.UseLogToWebHook) { _args.Add(new LogToWebHookArgument(settings.LogToWebHook)); } if (settings.OverrideExistingSessions) { _args.Add(new OverrideExistingSessionArgument()); } if (settings.KillProcessUsingServerPortBeforeLaunch) { // TODO: Need to implement this and uncomment the UI component // 1) Find all processes running on the port // 2) kill the process running on the port } if (settings.UseGridSeleniumConfigFile) { _args.Add(new SeleniumGridArgument(settings.GridSeleniumConfigFile)); } if (settings.UseCustomServerFlags) { _args.Add(new CustomDeveloperArguments(settings.CustomServerFlags)); } #region Capabilities _args.Add(new PlatformNameArgument(settings.PlatformName)); _args.Add(new PlatformVersionArgument(Dictionaries.GetPlatformVersion(settings.PlatformVersion))); _args.Add(new AutomationNameArgument(settings.AutomationName)); if (settings.UseDeviceName) { _args.Add(new DeviceNameArgument(settings.DeviceName)); } if (settings.UseLanguage) { _args.Add(new LanguageArgument(settings.Language)); } if (settings.UseLocale) { _args.Add(new LocaleArgument(settings.Locale)); } #endregion Capabilities }