private bool EvalTestPartPredicate(IDeclaredElement element, Predicate <TestPart> predicate)
            {
#if RESHARPER_45_OR_NEWER
                using (ReadLockCookie.Create())
#endif
                {
                    if (!element.IsValid())
                    {
                        return(false);
                    }

                    try
                    {
                        PsiReflectionPolicy reflectionPolicy = new PsiReflectionPolicy(element.GetManager());
                        ICodeElementInfo    elementInfo      = reflectionPolicy.Wrap(element);
                        if (elementInfo == null)
                        {
                            return(false);
                        }

                        ITestDriver      driver    = CreateTestDriver();
                        IList <TestPart> testParts = driver.GetTestParts(reflectionPolicy, elementInfo);
                        return(GenericCollectionUtils.Exists(testParts, predicate));
                    }
                    catch (Exception ex)
                    {
                        HandleEmbeddedProcessCancelledException(ex);
                        throw;
                    }
                }
            }
Beispiel #2
0
        /// <summary>
        /// Performs any cleanup necessary when quitting the WebBrowser.
        /// </summary>
        protected static void Quit()
        {
            var driver = client?.Browser?.Driver;

            xrmApp?.Dispose();

            // Ensuring that the driver gets disposed. Previously we were left with orphan processes and were unable to clean up profile folders.
            driver?.Dispose();

            xrmApp     = null;
            client     = null;
            testDriver = null;
            testConfig?.Flush();

            if (!string.IsNullOrEmpty(currentProfileDirectory) && Directory.Exists(currentProfileDirectory))
            {
                var directoryToDelete = currentProfileDirectory;
                currentProfileDirectory = null;

                // CrashpadMetrics-active.pma file can continue to be locked even after quitting Chrome. Requires retries.
                Policy
                .Handle <UnauthorizedAccessException>()
                .WaitAndRetry(3, retry => (retry * 5).Seconds())
                .ExecuteAndCapture(() =>
                {
                    Directory.Delete(directoryToDelete, true);
                });
            }
        }
        protected TestModel PopulateTestTree(Assembly assembly)
        {
            TestModel testModel = new TestModel();

            var testFrameworkManager = RuntimeAccessor.ServiceLocator.Resolve <ITestFrameworkManager>();
            var logger = new MarkupStreamLogger(TestLog.Default);

            var testFrameworkSelector = new TestFrameworkSelector()
            {
                Filter       = testFrameworkHandle => testFrameworkHandle.Id == TestFrameworkHandle.Id,
                FallbackMode = TestFrameworkFallbackMode.Strict
            };

            ITestDriver testDriver = testFrameworkManager.GetTestDriver(testFrameworkSelector, logger);

            var testIsolationProvider = (ITestIsolationProvider)RuntimeAccessor.ServiceLocator.ResolveByComponentId("Gallio.LocalTestIsolationProvider");
            var testIsolationOptions  = new TestIsolationOptions();

            using (ITestIsolationContext testIsolationContext = testIsolationProvider.CreateContext(testIsolationOptions, logger))
            {
                var testPackage = new TestPackage();
                testPackage.AddFile(new FileInfo(AssemblyUtils.GetFriendlyAssemblyCodeBase(assembly)));
                var testExplorationOptions = new TestExplorationOptions();

                var messageSink = TestModelSerializer.CreateMessageSinkToPopulateTestModel(testModel);

                new LogProgressMonitorProvider(logger).Run(progressMonitor =>
                {
                    testDriver.Explore(testIsolationContext, testPackage, testExplorationOptions,
                                       messageSink, progressMonitor);
                });
            }

            return(testModel);
        }
Beispiel #4
0
        /// <summary>
        /// Delete a test
        /// </summary>
        public void DeleteTest(string id)
        {
            TestInfo testInfo = Tests.Where(t => t.Id == id).First();

            ITestDriver driver = testDriverManager.GetTestDriver(testInfo.TestTypeId);

            driver.RemoveTest(id);
            testDriverManager.RefreshTests();
        }
Beispiel #5
0
        /// <summary>
        /// Performs any cleanup necessary when quitting the WebBrowser.
        /// </summary>
        protected static void Quit()
        {
            if (xrmApp == null)
            {
                return;
            }

            xrmApp.Dispose();
            xrmApp     = null;
            client     = null;
            testDriver = null;
        }
Beispiel #6
0
 public static void Initialize()
 {
     if (Driver == null)
     {
         Driver = DriverFactory.GetTestDriver(Config.BrowserType,
                                              Config.ImplicitWaitTimeOutInMilliseconds,
                                              Config.DefaultExplilicitWaitTimeOutInMilliseconds,
                                              false,
                                              Config.DriverLocation);
         CreatePages();
     }
 }
        private IEnumerable <TestData> GetGallioTestcases(TestFrameworkLogger frameworkLogger, IEnumerable <string> sources)
        {
            try
            {
                var testFrameworkManager = RuntimeAccessor.ServiceLocator.Resolve <ITestFrameworkManager>();
                var loader = new ReflectionOnlyAssemblyLoader();

                IList <ICodeElementInfo> assemblyInfos = sources.Select(source => LoadAssembly(source, loader)).Where(assembly => assembly != null).ToList();

                var testFrameworkSelector = new TestFrameworkSelector()
                {
                    Filter = testFrameworkHandle => testFrameworkHandle.Id != "MSTestAdapter.TestFramework" || testFrameworkHandle.Id != "NUnitAdapter.TestFramework",

                    FallbackMode = TestFrameworkFallbackMode.Approximate
                };

                ITestDriver driver = testFrameworkManager.GetTestDriver(testFrameworkSelector, frameworkLogger);
                var         testExplorationOptions = new TestExplorationOptions();

                var             tests           = new List <TestData>();
                MessageConsumer messageConsumer = new MessageConsumer()
                                                  .Handle <TestDiscoveredMessage>(message =>
                {
                    if (message.Test.IsTestCase)
                    {
                        tests.Add((message.Test));
                    }
                })
                                                  .Handle <AnnotationDiscoveredMessage>(message => message.Annotation.Log(frameworkLogger, true));

                driver.Describe(loader.ReflectionPolicy, assemblyInfos,
                                testExplorationOptions, messageConsumer, NullProgressMonitor.CreateInstance());

                bool reset = ResetCollectionForExposedTests(tests);

                if (reset)
                {
                    tests = null;
                }

                return(tests);
            }
            catch (Exception ex)
            {
                frameworkLogger.Log(LogSeverity.Error, "Gallio failed to load tests", ex);

                return(null);
            }
        }
Beispiel #8
0
        public override ICollection Load(string location, ProjectData projectData, IWarningHandler warningHandler)
        {
            // Skip loading if the extension is not fully initalized unless we are not
            // running in Visual Studio (because we are running in MSTest instead).
            if (!TipShellExtension.IsInitialized && ShellEnvironment.IsRunningInVisualStudio)
            {
                return(EmptyArray <TestElement> .Instance);
            }

            // Explore the tests.
            ITestFrameworkManager testFrameworkManager = RuntimeAccessor.ServiceLocator.Resolve <ITestFrameworkManager>();
            WarningLogger         logger = new WarningLogger(warningHandler);

            ReflectionOnlyAssemblyLoader loader = new ReflectionOnlyAssemblyLoader();

            loader.AddHintDirectory(Path.GetDirectoryName(location));

            IAssemblyInfo assembly = loader.ReflectionPolicy.LoadAssemblyFrom(location);

            var testFrameworkSelector = new TestFrameworkSelector()
            {
                Filter       = testFrameworkHandle => testFrameworkHandle.Id != "MSTestAdapter.TestFramework",
                FallbackMode = TestFrameworkFallbackMode.Approximate
            };

            ITestDriver            driver = testFrameworkManager.GetTestDriver(testFrameworkSelector, logger);
            TestExplorationOptions testExplorationOptions = new TestExplorationOptions();

            ArrayList       tests           = new ArrayList();
            MessageConsumer messageConsumer = new MessageConsumer()
                                              .Handle <TestDiscoveredMessage>(message =>
            {
                if (message.Test.IsTestCase)
                {
                    tests.Add(GallioTestElementFactory.CreateTestElement(message.Test, location, projectData));
                }
            })
                                              .Handle <AnnotationDiscoveredMessage>(message =>
            {
                message.Annotation.Log(logger, true);
            });

            driver.Describe(loader.ReflectionPolicy, new ICodeElementInfo[] { assembly },
                            testExplorationOptions, messageConsumer, NullProgressMonitor.CreateInstance());

            return(tests);
        }
Beispiel #9
0
        public Runner()
        {
            // Create a runtime setup.
            // There are a few things you can tweak here if you need.
            _setup = new Gallio.Runtime.RuntimeSetup();
            //_setup.RuntimePath = @"C:\Users\ack\bin\GallioBundle-3.2.750.0\bin"; // @"C:\Users\ack\bin\Gallio2"; //Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); //@"C:\Users\ack\bin\GallioBundle-3.2.750.0\bin";
            var binPath = new BinPathLocator().Locate();

            _isInitialized = File.Exists(Path.Combine(binPath, "Gallio.dll"));
            if (!_isInitialized)
            {
                return;
            }
            _setup.RuntimePath = binPath; //@"C:\Users\ack\src\AutoTest.Net\lib\Gallio";

            // Create a logger.
            // You can use the NullLogger but you will probably want a wrapper around your own ILogger thingy.
            _logger = Gallio.Runtime.Logging.NullLogger.Instance;

            // Initialize the runtime.
            // You only do this once.
            lock (_gallioLock)
            {
                if (!_runtimeInitialized)
                {
                    RuntimeBootstrap.Initialize(_setup, _logger);
                    _runtimeInitialized = true;
                }
            }

            // Create a test framework selector.
            // This is used by Gallio to filter the set of frameworks it will support.
            // You can set a predicate Filter here.  I've hardcoded MbUnit here but you could leave the filter out and set it to null.
            // The fallback mode tells Gallio what to do if it does not recognize the test framework associated with the test assembly.
            // Strict means don't do anything.  You might want to use Default or Approximate.  See docs.
            // You can also set options, probably don't care.
            var testFrameworkSelector = new TestFrameworkSelector()
            {
                Filter       = testFrameworkHandle => testFrameworkHandle.Id == "MbUnit.TestFramework",
                FallbackMode = TestFrameworkFallbackMode.Strict
            };

            // Now we need to get a suitably configured ITestDriver...
            var testFrameworkManager = RuntimeAccessor.ServiceLocator.Resolve <ITestFrameworkManager>();

            _testDriver = testFrameworkManager.GetTestDriver(testFrameworkSelector, _logger);
        }
        public Runner()
        {
            // Create a runtime setup.
            // There are a few things you can tweak here if you need.
            _setup = new Gallio.Runtime.RuntimeSetup();
            //_setup.RuntimePath = @"C:\Users\ack\bin\GallioBundle-3.2.750.0\bin"; // @"C:\Users\ack\bin\Gallio2"; //Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); //@"C:\Users\ack\bin\GallioBundle-3.2.750.0\bin";
            var binPath = new BinPathLocator().Locate();
            _isInitialized = File.Exists(Path.Combine(binPath, "Gallio.dll"));
            if (!_isInitialized)
                return;
            _setup.RuntimePath = binPath; //@"C:\Users\ack\src\AutoTest.Net\lib\Gallio";

            // Create a logger.
            // You can use the NullLogger but you will probably want a wrapper around your own ILogger thingy.
            _logger = Gallio.Runtime.Logging.NullLogger.Instance;

            // Initialize the runtime.
            // You only do this once.
            lock (_gallioLock)
            {
                if (!_runtimeInitialized)
                {
                    RuntimeBootstrap.Initialize(_setup, _logger);
                    _runtimeInitialized = true;
                }
            }

            // Create a test framework selector.
            // This is used by Gallio to filter the set of frameworks it will support.
            // You can set a predicate Filter here.  I've hardcoded MbUnit here but you could leave the filter out and set it to null.
            // The fallback mode tells Gallio what to do if it does not recognize the test framework associated with the test assembly.
            // Strict means don't do anything.  You might want to use Default or Approximate.  See docs.
            // You can also set options, probably don't care.
            var testFrameworkSelector = new TestFrameworkSelector()
            {
                Filter = testFrameworkHandle => testFrameworkHandle.Id == "MbUnit.TestFramework",
                FallbackMode = TestFrameworkFallbackMode.Strict
            };

            // Now we need to get a suitably configured ITestDriver...
            var testFrameworkManager = RuntimeAccessor.ServiceLocator.Resolve<ITestFrameworkManager>();
            _testDriver = testFrameworkManager.GetTestDriver(testFrameworkSelector, _logger);
        }
Beispiel #11
0
 public TestDriverFixture()
 {
     Driver = new InMemoryTestDriver();
 }
            private bool ForEachDriver <T>(MultiMap <TestFrameworkSelection, T> testFrameworkPartitions,
                                           Func <ITestDriver, IList <T>, int, bool> func)
                where T : class
            {
                var testDriverPartitions = new Dictionary <TestDriverFactory, TestDriverData <T> >();

                foreach (var testFrameworkPartition in testFrameworkPartitions)
                {
                    if (testFrameworkPartition.Value.Count != 0)
                    {
                        TestFrameworkSelection testFrameworkSelection = testFrameworkPartition.Key;
                        ComponentHandle <ITestFramework, TestFrameworkTraits> testFrameworkHandle = testFrameworkSelection.TestFrameworkHandle;
                        TestDriverFactory testDriverFactory = testFrameworkHandle.GetComponent().GetTestDriverFactory();

                        TestDriverData <T> testDriverData;
                        if (!testDriverPartitions.TryGetValue(testDriverFactory, out testDriverData))
                        {
                            testDriverData = new TestDriverData <T>(testFrameworkSelection.TestFrameworkOptions);
                            testDriverPartitions.Add(testDriverFactory, testDriverData);
                        }
                        else
                        {
                            testDriverData.ItemIndex = new HashSet <T>(ReferentialEqualityComparer <T> .Instance);
                            GenericCollectionUtils.AddAll(testDriverData.Items, testDriverData.ItemIndex);
                        }

                        testDriverData.TestFrameworkHandles.Add(testFrameworkHandle);

                        foreach (var item in testFrameworkPartition.Value)
                        {
                            if (testDriverData.ItemIndex == null)
                            {
                                testDriverData.Items.Add(item);
                            }
                            else if (!testDriverData.ItemIndex.Contains(item))
                            {
                                testDriverData.Items.Add(item);
                                testDriverData.ItemIndex.Add(item);
                            }
                        }
                    }
                }

                int testDriverCount = testDriverPartitions.Count;

                foreach (var testDriverPartition in testDriverPartitions)
                {
                    TestDriverFactory  testDriverFactory = testDriverPartition.Key;
                    TestDriverData <T> testDriverData    = testDriverPartition.Value;

                    try
                    {
                        ITestDriver driver = testDriverFactory(testDriverData.TestFrameworkHandles,
                                                               testDriverData.TestFrameworkOptions, logger);
                        if (func(driver, testDriverData.Items, testDriverCount))
                        {
                            return(true);
                        }
                    }
                    catch (Exception ex)
                    {
                        //UnhandledExceptionPolicy.Report("An unhandled exception occurred while invoking a test driver.", ex);
                        throw new ModelException("An exception occurred while invoking a test driver.", ex);
                    }
                }

                return(false);
            }
Beispiel #13
0
 public BigPondSignInPage(ITestDriver seleniumTestDriver)
     : base(seleniumTestDriver)
 {
 }
 public ComputerDatabaseHomePage(ITestDriver driver, ComputerDatabaseHomePageUiMap uiMap) : base(driver, uiMap)
 {
 }
 public static IComputerDatabaseHomePage GetComputerDatabaseHomePage(ITestDriver driver) => new ComputerDatabaseHomePage(driver, new ComputerDatabaseHomePageUiMap());
 protected WebComponentBase(ITestDriver driver, IUIMap uiMap)
 {
     this.Driver = driver;
     _uiMap      = uiMap;
 }
Beispiel #17
0
 protected PageBase(ITestDriver driver, UIMap uiMap)
 {
     Driver = driver;
     _uiMap = uiMap;
 }
Beispiel #18
0
 public PageLogin(ITestDriver driver) : base(driver, new PageLoginUIMap())
 {
 }
Beispiel #19
0
        /// <inheritdoc />
        public Report Run(TestPackage testPackage, TestExplorationOptions testExplorationOptions, TestExecutionOptions testExecutionOptions, IProgressMonitor progressMonitor)
        {
            if (testPackage == null)
            {
                throw new ArgumentNullException("testPackageConfig");
            }
            if (testExplorationOptions == null)
            {
                throw new ArgumentNullException("testExplorationOptions");
            }
            if (testExecutionOptions == null)
            {
                throw new ArgumentNullException("testExecutionOptions");
            }
            if (progressMonitor == null)
            {
                throw new ArgumentNullException("progressMonitor");
            }

            ThrowIfDisposed();
            if (state != State.Initialized)
            {
                throw new InvalidOperationException("The test runner must be initialized before this operation is performed.");
            }

            testPackage            = testPackage.Copy();
            testExplorationOptions = testExplorationOptions.Copy();
            testExecutionOptions   = testExecutionOptions.Copy();
            GenericCollectionUtils.ForEach(testRunnerOptions.Properties, x => testPackage.AddProperty(x.Key, x.Value));

            using (progressMonitor.BeginTask("Running the tests.", 10))
            {
                Stopwatch stopwatch = Stopwatch.StartNew();
                Report    report    = new Report()
                {
                    TestPackage    = new TestPackageData(testPackage),
                    TestModel      = new TestModelData(),
                    TestPackageRun = new TestPackageRun()
                    {
                        StartTime = DateTime.Now
                    }
                };
                var reportLockBox = new LockBox <Report>(report);

                eventDispatcher.NotifyRunStarted(new RunStartedEventArgs(testPackage, testExplorationOptions,
                                                                         testExecutionOptions, reportLockBox));

                bool success;
                using (Listener listener = new Listener(eventDispatcher, tappedLogger, reportLockBox))
                {
                    try
                    {
                        ITestDriver testDriver = testFrameworkManager.GetTestDriver(
                            testPackage.CreateTestFrameworkSelector(), tappedLogger);

                        using (testIsolationContext.BeginBatch(progressMonitor.SetStatus))
                        {
                            testDriver.Run(testIsolationContext, testPackage, testExplorationOptions,
                                           testExecutionOptions, listener, progressMonitor.CreateSubProgressMonitor(10));
                        }

                        success = true;
                    }
                    catch (Exception ex)
                    {
                        success = false;

                        tappedLogger.Log(LogSeverity.Error,
                                         "A fatal exception occurred while running tests.  Possible causes include invalid test runner parameters and stack overflows.",
                                         ex);
                        report.TestModel.Annotations.Add(new AnnotationData(AnnotationType.Error,
                                                                            CodeLocation.Unknown, CodeReference.Unknown,
                                                                            "A fatal exception occurred while running tests.  See log for details.", null));
                    }
                    finally
                    {
                        report.TestPackageRun.EndTime             = DateTime.Now;
                        report.TestPackageRun.Statistics.Duration = stopwatch.Elapsed.TotalSeconds;
                    }
                }

                eventDispatcher.NotifyRunFinished(new RunFinishedEventArgs(success, report));

                return(report);
            }
        }
Beispiel #20
0
 protected BasePage(ITestDriver seleniumTestDriver)
 {
     SeleniumTestDriver = seleniumTestDriver;
     Url = seleniumTestDriver.DefaultUrl;
 }
Beispiel #21
0
 public WaiterrantHomePage(ITestDriver seleniumTestDriver) : base(seleniumTestDriver)
 {
 }
 public static IEditOrDeleteComputerPage GetEditOrDeleteComputerPage(ITestDriver driver) => new EditOrDeleteComputerPage(driver, new EditOrDeleteComputerPageUiMap());
 public EditOrDeleteComputerPage(ITestDriver driver, EditOrDeleteComputerPageUiMap uiMap) : base(driver, uiMap)
 {
 }
 public static IAddANewComputerPage GetAddANewComputerPage(ITestDriver driver) => new AddANewComputerPage(driver, new AddANewComputerPageUiMap());
 public AddANewComputerPage(ITestDriver driver, AddANewComputerPageUiMap uiMap) : base(driver, uiMap)
 {
 }
 public static IPageUserRecords GetPageUserRecords(ITestDriver driver) => new PageUserRecords(driver);
Beispiel #27
0
 public static void Loadpages(ITestDriver driver)
 {
     TransportTripPage = new TransportTripPage(driver);
     _driver           = driver;
 }
Beispiel #28
0
 public PetStockHomePage(ITestDriver seleniumTestDriver) : base(seleniumTestDriver)
 {
 }
Beispiel #29
0
 public static IPageLogin GetPageLogin(ITestDriver driver) => new PageLogin(driver);
Beispiel #30
0
 public EngineTests(TestDriverFixture fixture)
 {
     driver = fixture.Driver;
 }
 public PageUserRecords(ITestDriver driver) : base(driver, new PageRecordsUIMap())
 {
 }