Exemplo n.º 1
0
        /// <summary>
        /// To be called from concrete test fixtures to initialize the test run.
        /// </summary>
        protected static AppiumDriver <IWebElement> InitializeDriver()
        {
            try
            {
                Trace.Listeners.Add(new TextWriterTraceListener("AppiumTestCaseExecution.log", "appiumTestCaseListener"));

                ExecutionErrors = new List <ExecutionError>();
                BaseProjectPath = Path.GetFullPath(Path.Combine(TestRunLocation, @"..\..\..\"));

                SensitiveInformation.GetHostAndCredentials(BaseProjectPath, out Host, out Username, out Password);

                ParameterRetriever testParams = new ParameterRetriever();
                PerfectoTestingParameters = testParams.GetVSOExecParam(BaseProjectPath, false);

                CurrentDevice = PerfectoTestingParameters.Devices.FirstOrDefault();
                if (string.IsNullOrEmpty(CurrentDevice.DeviceDetails.RunIdentifier))
                {
                    CurrentDevice.DeviceDetails.RunIdentifier = string.Format("{0:yyyy-MM-dd_hh-mm-ss-tt}", DateTime.Now);
                }

                CheckForValidDeviceConfiguration();

                Trace.Listeners.Add(new ConsoleTraceListener());
                Trace.AutoFlush = true;

                var runMessage = string.Format("Starting test runs for {0} with RunId of {1}", CurrentDevice.DeviceDetails.Name, CurrentDevice.DeviceDetails.RunIdentifier);
                Trace.WriteLine(runMessage);

                DesiredCapabilities capabilities = new DesiredCapabilities();
                capabilities.SetCapability("automationName", "Appium");
                capabilities.SetCapability("user", Username);
                capabilities.SetCapability("password", Password);
                capabilities.SetCapability("newCommandTimeout", "120");
                capabilities.SetPerfectoLabExecutionId(Host);
                capabilities.SetCapability("deviceName", CurrentDevice.DeviceDetails.DeviceID);
                capabilities.SetCapability("scriptName", "Parallel-" + TestCaseName);

                if (AppSettingsRetriever.IsWindTunnelEnabled())
                {
                    capabilities.SetCapability("windTunnelPersona", "Georgia");
                }

                var url = new Uri(string.Format("http://{0}/nexperience/perfectomobile/wd/hub", Host));
                if (CurrentDevice.DeviceDetails.OS.ToUpperInvariant() == "IOS")
                {
                    DriverInstance = new IOSDriver <IWebElement>(url, capabilities, new TimeSpan(0, 2, 0));
                }
                else if (CurrentDevice.DeviceDetails.OS.ToUpperInvariant() == "ANDROID")
                {
                    DriverInstance = new AndroidDriver <IWebElement>(url, capabilities, new TimeSpan(0, 2, 0));
                }
                else
                {
                    throw new ArgumentException("Unknown Device OS from config file: " + CurrentDevice.DeviceDetails.OS);
                }

                startedVitals.Add("outputs.monitors.cpu.total");
                startedVitals.Add("outputs.monitors.memory.used");
                StartVitals(1, startedVitals);

                DriverInstance.Context = "NATIVE_APP";
                CloseApp();
                OpenApp();
                DriverInstance.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(15));

                return(DriverInstance);
            }
            catch (Exception ex)
            {
                var message = string.Format("Failed to aqcuire new driver instance for {0} with message {1} and stacktrace {2}",
                                            CurrentDevice, ex.Message, ex.StackTrace);
                Console.WriteLine(message);
                throw new Exception(message, ex);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// To be called from concrete test fixtures to initialize the test run.
        /// </summary>
        protected static RemoteWebDriverExtended InitializeDriver()
        {
            string model = "Unknown device model";

            try
            {
                Trace.Listeners.Add(new TextWriterTraceListener("webTestCaseExecution.log", "webTestCaseListener"));

                ExecutionErrors = new List <ExecutionError>();
                BaseProjectPath = Path.GetFullPath(Path.Combine(TestRunLocation, @"..\..\..\"));

                SensitiveInformation.GetHostAndCredentials(BaseProjectPath, out Host, out Username, out Password);

                ParameterRetriever testParams = new ParameterRetriever();
                PerfectoTestingParameters = testParams.GetVSOExecParam(BaseProjectPath, false);

                CurrentDevice = PerfectoTestingParameters.Devices.FirstOrDefault();
                if (string.IsNullOrEmpty(CurrentDevice.DeviceDetails.RunIdentifier))
                {
                    CurrentDevice.DeviceDetails.RunIdentifier = string.Format("{0:yyyy-MM-dd_hh-mm-ss-tt}", DateTime.Now);
                }

                CheckForValidConfiguration();

                model = CurrentDevice.DeviceDetails.Name ?? "Unknown device Model";

                Trace.Listeners.Add(new ConsoleTraceListener());
                Trace.AutoFlush = true;

                var browserName = "mobileOS";

                if (CurrentDevice.DeviceDetails.IsDesktopBrowser)
                {
                    browserName = CurrentDevice.DeviceDetails.BrowserName;
                }

                DesiredCapabilities capabilities = new DesiredCapabilities(browserName, string.Empty, new Platform(PlatformType.Any));
                capabilities.SetCapability("user", Username);
                capabilities.SetCapability("password", Password);
                capabilities.SetCapability("newCommandTimeout", "120");
                capabilities.SetPerfectoLabExecutionId(Host);

                capabilities.SetCapability("scriptName", "Parallel-" + TestCaseName);

                if (CurrentDevice.DeviceDetails.IsDesktopBrowser)
                {
                    capabilities.SetCapability("platformName", CurrentDevice.DeviceDetails.OS);
                    capabilities.SetCapability("platformVersion", CurrentDevice.DeviceDetails.OSVersion);
                    capabilities.SetCapability("browserName", CurrentDevice.DeviceDetails.BrowserName);
                    capabilities.SetCapability("resolution", "1366x768");
                    capabilities.SetCapability("version", CurrentDevice.DeviceDetails.BrowserVersion);
                }
                else
                {
                    capabilities.SetCapability("deviceName", CurrentDevice.DeviceDetails.DeviceID);

                    //WindTunnel only for devices and only when available
                    if (AppSettingsRetriever.IsWindTunnelEnabled())
                    {
                        capabilities.SetCapability("windTunnelPersona", "Georgia");
                    }
                }

                var url = new Uri(string.Format("https://{0}/nexperience/perfectomobile/wd/hub", Host));
                RemoteWebDriverExtended driver = new RemoteWebDriverExtended(url, capabilities, new TimeSpan(0, 2, 0));
                driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(15));
                DriverInstance = driver;

                startedVitals.Add("outputs.monitors.cpu.total");
                startedVitals.Add("outputs.monitors.memory.used");
                StartVitals(1, startedVitals);

                return(driver);
            }
            catch (Exception e)
            {
                HandleGeneralException(e, DriverInstance);
            }
            return(null);
        }