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; } } }
/// <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); }
/// <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(); }
/// <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; }
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); } }
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); }
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); }
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); }
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; }
protected PageBase(ITestDriver driver, UIMap uiMap) { Driver = driver; _uiMap = uiMap; }
public PageLogin(ITestDriver driver) : base(driver, new PageLoginUIMap()) { }
/// <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); } }
protected BasePage(ITestDriver seleniumTestDriver) { SeleniumTestDriver = seleniumTestDriver; Url = seleniumTestDriver.DefaultUrl; }
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);
public static void Loadpages(ITestDriver driver) { TransportTripPage = new TransportTripPage(driver); _driver = driver; }
public PetStockHomePage(ITestDriver seleniumTestDriver) : base(seleniumTestDriver) { }
public static IPageLogin GetPageLogin(ITestDriver driver) => new PageLogin(driver);
public EngineTests(TestDriverFixture fixture) { driver = fixture.Driver; }
public PageUserRecords(ITestDriver driver) : base(driver, new PageRecordsUIMap()) { }