public static string GenerateScriptMethodTest(DeviceConfig deviceConfigAndroid, DeviceConfig deviceConfigIOS, TpLocatorEstrategy locatorEstrategy, XPathSelector.XPathType individualExpressionType, bool staticMethod, string appiumDriverName, out string functionCall, out string appiumConfig) { functionCall = ""; appiumConfig = ""; #region validation string msg = ""; if (!Support.MyNode.CheckDeviceConfigCompatibility(deviceConfigAndroid, deviceConfigIOS, out msg)) { return(msg); } #endregion StringBuilder scriptCallFunction = new StringBuilder(); List <string> functionList = new List <string>(); List <string> scriptList = new List <string>(); StringBuilder appiumConfigList = new StringBuilder(); string elementName = "e"; int qtdEvents = deviceConfigAndroid.Events.Count; for (int i = 0; i < qtdEvents; i++) { MyNode nAndroid = deviceConfigAndroid.Events[i]; MyNode nIOS = deviceConfigIOS.Events[i]; string scriptFunction = GenerateScriptMethodTest(nAndroid, nIOS, locatorEstrategy, individualExpressionType, staticMethod, elementName, appiumDriverName, out functionCall); if (!functionList.Contains(functionCall)) { functionList.Add(functionCall); scriptList.Add(scriptFunction); scriptCallFunction.AppendLine(_tab3 + functionCall); } } #region appium config appiumConfigList.AppendLine(); if (!EnabledEvaluation) { appiumConfigList.AppendLine(_tab3 + "_locator = new LocatorStrategy(_driver, null);"); appiumConfigList.AppendLine(); } else { #region Evaluation string strategy = locatorEstrategy.ToString(); if (locatorEstrategy == TpLocatorEstrategy.IndividualExpression) { strategy += individualExpressionType.ToString(); } appiumConfigList.AppendLine(_tab3 + "Exec.Create(\"" + deviceConfigAndroid.AppName + "\", ProjectConfig.OutputDeviceID, \"" + deviceConfigAndroid.TestCaseName + "\", " + deviceConfigAndroid.Events.Count + ",\"" + strategy + "\", ProjectConfig.OutputPath);"); appiumConfigList.AppendLine(_tab3 + "Exec.Instance.Start();"); #endregion appiumConfigList.AppendLine(); appiumConfigList.AppendLine(_tab3 + "_locator = new LocatorStrategy(_driver, Exec.Instance);"); appiumConfigList.AppendLine(); } #endregion scriptCallFunction.AppendLine(); scriptCallFunction.AppendLine(_tab3 + "Exec.Instance.EndSuccefull();"); functionCall = scriptCallFunction.ToString(); appiumConfig = appiumConfigList.ToString(); return(string.Join("\n", scriptList.ToArray())); }
public static string GenerateVisualStudioProjectTest(DeviceConfig deviceConfigAndroid, DeviceConfig deviceConfigIOS, TpLocatorEstrategy locatorEstrategy, XPathSelector.XPathType individualExpressionType) { string dirProjectTemplate = Path.GetDirectoryName(Application.ExecutablePath) + @"\Resources\UnitTestProjectTemplate"; string dirOutPut = Path.GetDirectoryName(Application.ExecutablePath) + @"\output"; if (!Directory.Exists(dirOutPut)) { Directory.CreateDirectory(dirOutPut); } string output = dirOutPut + @"\UnitTestProject-" + DateTime.Now.ToString("yyyy-MM-dd HHmmss"); if (_onlyTestClass) { output += "-TestClass"; } string appTestName = deviceConfigAndroid.TestCaseName.Replace(".", "").Replace("-", "").Replace(" ", ""); string appTest = ""; StringBuilder script = new StringBuilder(); string nl = Environment.NewLine; string functionCall; string appiumConfig; string nameSpace = appTestName; string className = appTestName + locatorEstrategy.ToString(); if (locatorEstrategy == TpLocatorEstrategy.IndividualExpression) { className += individualExpressionType.ToString(); } if (!_onlyTestClass) { Utils.DirectoryCopy(dirProjectTemplate, output); File.Move(output + @"\Properties\AssemblyInfo.txt", output + @"\Properties\AssemblyInfo.cs"); appTest = File.ReadAllText(output + @"\AppTest.txt"); string unitProjectTest = File.ReadAllText(output + @"\UnitTestProject.csproj"); string projectConfig = File.ReadAllText(output + @"\ProjectConfig.txt"); string locatorStrategy = File.ReadAllText(output + @"\LocatorStrategy.txt"); unitProjectTest = unitProjectTest.Replace("@AppTest", className + ".cs"); File.WriteAllText(output + @"\ProjectConfig.cs", projectConfig); File.Delete(output + @"\ProjectConfig.txt"); unitProjectTest = unitProjectTest.Replace("AppTest", appTestName); File.WriteAllText(output + @"\UnitTestProject.csproj", unitProjectTest); File.WriteAllText(output + @"\LocatorStrategy.cs", locatorStrategy); File.Delete(output + @"\LocatorStrategy.txt"); } else { appTest = File.ReadAllText(dirProjectTemplate + @"\AppTest.txt"); Directory.CreateDirectory(output); } script.AppendLine(ScriptGenerate.GenerateScriptMethodTest(deviceConfigAndroid, deviceConfigIOS, locatorEstrategy, individualExpressionType, false, "_driver", out functionCall, out appiumConfig)); appTest = appTest.Replace("@Namespace", nameSpace); appTest = appTest.Replace("@ClassName", className); appTest = appTest.Replace("/*REPLACE: appium config*/", appiumConfig); appTest = appTest.Replace("/*REPLACE: call sequence*/", functionCall); appTest = appTest.Replace("/*REPLACE: script*/", script.ToString()); File.WriteAllText(output + @"\" + className + ".cs", appTest); File.Delete(output + @"\AppTest.txt"); return(output); }