public void VerifyRequestArgs() { //Act _request = new Request(_url); //Assert Assert.IsTrue(_request.Url == _url); //Act _request = new Request(_url, _browser); //Assert Assert.IsTrue(_request.Url == _url); Assert.IsTrue(_request.Browser == _browser); //Act _request = new Request(_url, _browser, _viewport); //Assert Assert.IsTrue(_request.Url == _url); Assert.IsTrue(_request.Browser == _browser); Assert.IsTrue(_request.ViewportResolution == _viewport); //Act _request = new Request(_url, _browser, _browserVersion); //Assert Assert.IsTrue(_request.Url == _url); Assert.IsTrue(_request.Browser == _browser); Assert.IsTrue(_request.BrowserVersion == _browserVersion); //Act _request = new Request(_url, _browser, _browserVersion, _viewport); //Assert Assert.IsTrue(_request.Url == _url); Assert.IsTrue(_request.Browser == _browser); Assert.IsTrue(_request.BrowserVersion == _browserVersion); Assert.IsTrue(_request.ViewportResolution == _viewport); }
//[Test] public void SaveComparisonToMongoDb() { var request1 = new Request(); request1.Url = "http://www.google.com?timestamp=" + GetTimestamp() + "&scrape=1"; var request2 = new Request(); request2.Url = "http://www.google.com?timestamp=" + GetTimestamp() + "&scrape=2"; var comparison = Compare(request1, request2); var persister = PersisterFactory.CreateComparePersisterInstance(); persister.Save(comparison); // verify by retrieving var mongoDb = new MongoDbPersister(); var collection = mongoDb.Database.GetCollection<Comparison>("comparisons"); // check id var query = Query.EQ("_id", comparison.Id); var results = collection.Find(query); Assert.AreEqual(1, results.Size(), "should only have 1 result returned from MongoDB because Id is unique"); var returned = results.First(); Assert.AreEqual(comparison.Id, returned.Id); // check type log.Debug("returned: " + returned); Assert.IsInstanceOf(typeof(Comparison), returned); }
//[Test] public void SaveRequestToMongoDb() { var request = new Request(); request.Url = "http://www.example.com?timestamp=" + GetTimestamp(); var persister = PersisterFactory.CreateRequestPersisterInstance(); persister.Save(request); // verify by retrieving var mongoDb = new MongoDbPersister(); var collection = mongoDb.Database.GetCollection<Request>("requests"); // check id var query = Query.EQ("_id", request.Id); var results = collection.Find(query); Assert.AreEqual(1, results.Size(), "should only have 1 result returned from MongoDB because Id is unique"); var returned = results.First(); Assert.AreEqual(request.Id, returned.Id); // check url query = Query.EQ("Url", request.Url); results = collection.Find(query); Assert.AreEqual(1, results.Size(), "should only have 1 result returned from MongoDB (if URL is unique)"); returned = results.First(); Assert.AreEqual(request.Url, returned.Url); // check type log.Debug("returned: " + returned); Assert.IsInstanceOf(typeof(Request), returned); }
public WebDriverFacade(IWebDriver web, Request request, ITakesScreenshot ss = null, IJavaScriptExecutor js = null) { _request = request; _web = web; _ss = ss ?? (ITakesScreenshot)web; _js = js ?? (IJavaScriptExecutor)web; web.Manage().Timeouts().SetScriptTimeout(new TimeSpan(0, 5, 0)); }
public void Setup() { _request = new Request() { Url = "http://www.google.com/", Browser = "phantomjs" }; _facade = new PhantomJsFacade(_request); }
// [Test] public void testFakeRequestUrl() { //Arrange Request expectedRequest = new Request("my.url.com"); //Act Request actualRequest = fakeTest.FakeRequest("my.url.com"); //Assert Assert.IsTrue(expectedRequest.Equals(actualRequest)); }
// [Test] public void testFakeRequestDefault() { //Arrange Request expectedRequest = new Request(); //Act Request actualRequest = fakeTest.FakeRequest(); //Assert Assert.IsTrue(expectedRequest.Equals(actualRequest)); }
public static void CompareFirefoxAndChrome() { var firefox = new Request("http://www.ancestrystage.com", Browsers.Firefox, "10.0"); var chrome = new Request("http://www.ancestrystage.com", Browsers.Chrome); var qb = new QualityBot.Service(); var comparisons = qb.CompareDynamic(firefox, chrome); var comparison = comparisons.Single(); DisplayComparisonInfo(comparison); }
public void VerifyCreateFacadeIBrowser() { var request = new Request { Url = "http://www.google.com", Browser = "firefox" }; var webdriver = NSubstitute.Substitute.For<IWebDriver, ITakesScreenshot, IJavaScriptExecutor>(); using (var facade = FacadeFactory.CreateFacade(webdriver, request)) { Assert.IsTrue(facade is WebDriverFacade); } }
public void VerifySaveToDisc() { //Arrange var uTest = "www.duh.com"; var req = new Request(url: uTest); var rP = new RequestPersister(); //Act rP.SaveToDisc(_path, req); //Assert Assert.IsTrue(Directory.GetFiles(_path).Length > 0); }
// [Test] public void testFakeRequestUrlNBrowser() { //Arrange string url = "my.url.com"; string browser = "mybrowser"; Request expectedRequest = new Request(url, browser); //Act Request actualRequest = fakeTest.FakeRequest(url, browser); //Assert Assert.IsTrue(expectedRequest.Equals(actualRequest)); }
public void VerifyRetrieveFromDisc() { //Arrange var uTest = "www.duh.com"; var req = new Request(url: uTest); var rP = new RequestPersister(); //Act rP.SaveToDisc(_path,req); var result = rP.RetrieveFromDisc(Directory.GetFiles(_path)[0]); //Assert Assert.IsTrue(result.Url == uTest); }
public static IBrowserFacade CreateFacade(IWebDriver webDriver, Request request) { IBrowserFacade facade; if (request.Browser == null || request.Browser.ToLower() != "phantomjs") { facade = new WebDriverFacade(webDriver, request); } else { facade = new PhantomJsFacade(request); } return facade; }
public static IBrowserFacade CreateFacade(Request request) { IBrowserFacade facade; if (request.Browser == null || request.Browser.ToLower() != "phantomjs") { var config = GetConfig(request); var web = GetWebDriver(config); facade = new WebDriverFacade(web, request); } else { facade = new PhantomJsFacade(request); } return facade; }
public Comparison[] Compare(Request requestA, Request requestB, bool persist = true) { var scrapeA = DoScrape(requestA); var scrapeB = DoScrape(requestB); // Pass Scrapes to Comparison var comparer = new Comparer(); var comparison = comparer.Compare(scrapeA, scrapeB); // Persist Scrapes SaveScrapes(persist, scrapeA, scrapeB); // Persist Comparison Obj SaveComparison(persist, comparison); return new[] { comparison }; }
public static void ComparePageOverTime() { var qb = new QualityBot.Service(); var request = new Request("http://www.ancestrystage.com"); request.Browser = Browsers.IE; request.BrowserVersion = "9"; var scrapeId1 = qb.ScrapeDynamic(request); Console.WriteLine("scrape ID: {0}", scrapeId1); Thread.Sleep(10000); var scrapeId2 = qb.ScrapeDynamic(request); Console.WriteLine("scrape ID: {0}", scrapeId2); var comparisons = qb.CompareScrapeIds(scrapeId1, scrapeId2, true); var comparison = comparisons.First(); DisplayComparisonInfo(comparison); }
public Comparison[] Compare(string urlA, string urlB, bool persist = true) { // Create Scrape(s) var requestA = new Request(urlA); var requestB = new Request(urlB); var scrapeA = DoScrape(requestA); var scrapeB = DoScrape(requestB); // Pass Scrape to Comparison var comparer = new Comparer(); var comparison = comparer.Compare(scrapeA, scrapeB); // Persist Scrapes SaveScrapes(persist, scrapeA, scrapeB); // Persist Comparison Obj SaveComparison(persist, comparison); return new[] { comparison }; }
/// <summary> /// Scrapes information from a web page. /// </summary> /// <param name="request">The request.</param> /// <param name="pageData">Information pulled from the page.</param> /// <returns>An object of type Scrape.</returns> public Scrape BuildScrape(Request request, PageData pageData) { var screenshotSize = new Rectangle(0, 0, pageData.Screenshot.Width, pageData.Screenshot.Height); var boundingRectangleIsDefined = BoundingRectangleIsDefined(request.BoundingRectangle); ValidateBoundingRectangle(request.BoundingRectangle, screenshotSize, boundingRectangleIsDefined); // If bounding rectangle is defined, use it, otherwise use the size of the screenshot var boundingRectangle = boundingRectangleIsDefined ? request.BoundingRectangle.Value : screenshotSize; // Identify page resources var pageResources = _webRequestUtil.HeadCheck(pageData.Resources); var page = AssembleScrape(request, pageData, pageResources); // Build elements _elementProvider.Load(pageData.ElementsJson, pageData.Html, boundingRectangle); var elements = _elementProvider.Elements().ToArray(); page.Elements.AddRange(elements); /* If user-defined area is set * Constrain to user-defined area * Else * Constrain to existing elements locations */ var clipRect = boundingRectangleIsDefined ? boundingRectangle : ConstrainRectangleToElements(page.Elements); // Crop image to bounding rectangle var image = ImageUtil.CropImage(pageData.Screenshot, clipRect); page.Screenshot = ImageUtil.ImageToBase64(image, ImageFormat.Png); // Offset elements LocationOnScreenshot. ConstrainElementsToBoundingRectangle(page, clipRect); // Cleanup image.Dispose(); pageData.Screenshot.Dispose(); return page; }
public Comparison[] CompareDynamic(dynamic requestA, dynamic requestB, bool persist = true) { var rA = new Request { BoundingRectangle = GetRectangle((string)requestA.boundingRectangle), Browser = requestA.browser, BrowserVersion = requestA.browserVersion, IncludeJquerySelector = requestA.includeJquerySelector, ExcludeJquerySelector = requestA.excludeJquerySelector, Script = requestA.script, ViewportResolution = GetSize((string)requestA.viewportResolution), Url = requestA.url }; var rB = new Request { BoundingRectangle = GetRectangle((string)requestB.boundingRectangle), Browser = requestB.browser, BrowserVersion = requestB.browserVersion, IncludeJquerySelector = requestB.includeJquerySelector, ExcludeJquerySelector = requestB.excludeJquerySelector, Script = requestB.script, ViewportResolution = GetSize((string)requestB.viewportResolution), Url = requestB.url }; var scrapeA = DoScrape(rA); var scrapeB = DoScrape(rB); // Pass Scrapes to Comparison var comparer = new Comparer(); var comparison = comparer.Compare(scrapeA, scrapeB); // Persist Scrapes SaveScrapes(persist, scrapeA, scrapeB); // Persist Comparison Obj SaveComparison(persist, comparison); return new[] { comparison }; }
public string ScrapeDynamic(dynamic request) { var sR = new Request { BoundingRectangle = GetRectangle((string)request.boundingRectangle), Browser = request.browser, BrowserVersion = request.browserVersion, IncludeJquerySelector = request.includeJquerySelector, ExcludeJquerySelector = request.excludeJquerySelector, Script = request.script, ViewportResolution = GetSize((string)request.viewportResolution), Url = request.url }; var scrape = DoScrape(sR); SaveScrapes(true, scrape); return scrape.IdString.Value; }
/// HELPER METHODS /// private Scrape Scrape(Request request) { var scraper = new Service(); var scrape = scraper.Scrape(request); return scrape; }
private Comparison Compare(Request requestA, Request requestB) { var scrapeA = Scrape(requestA); var scrapeB = Scrape(requestB); var comparer = new Comparer(); var compareResult = comparer.Compare(scrapeA, scrapeB); return compareResult; }
//[Test] public void TestSaveScrapeToFileSystem() { var url = "http://www.google.com?timestamp=" + GetTimestamp(); var scraper = new Service(); var request = new Request(url, _browser, _browserVersion, _resolution); var scrape = scraper.Scrape(request); var persister = PersisterFactory.CreateScrapePersisterInstance(@"C:\OutputDirectory\TestSaveScrapeToFileSystem"); // cleanup if (Directory.Exists(persister.OutputDir)) Directory.Delete(persister.OutputDir, true); // save persister.Save(scrape); // verify Assert.IsTrue(Directory.Exists(persister.OutputDir)); var files = Directory.GetFiles(persister.OutputDir); Assert.IsTrue(files.Any(f => f.Contains("Html.html"))); Assert.IsTrue(files.Any(f => f.Contains("scrape.json"))); Assert.IsTrue(files.Any(f => f.Contains("Screenshot.png"))); }
//[Test] public void TestSaveRequestToFileSystem() { var request = new Request(); request.Url = "http://www.example.com?timestamp=" + GetTimestamp(); var persister = PersisterFactory.CreateRequestPersisterInstance(@"C:\OutputDirectory\TestSaveRequestToFileSystem"); // cleanup if (Directory.Exists(persister.OutputDir)) Directory.Delete(persister.OutputDir, true); // save persister.Save(request); // verify Assert.IsTrue(Directory.Exists(persister.OutputDir)); var files = Directory.GetFiles(persister.OutputDir); Assert.IsTrue(files.Any(f => f.Contains("request.json"))); }
//[Test] public void TestSaveComparisonToFileSystem() { var timestamp = GetTimestamp(); var url1 = "http://www.google.com?timestamp=" + timestamp + "&url=1"; var url2 = "http://www.google.com?timestamp=" + timestamp + "&url=2"; var request1 = new Request(url1); var request2 = new Request(url2); var comparison = Compare(request1, request2); var persister = PersisterFactory.CreateComparePersisterInstance(@"C:\OutputDirectory\TestSaveComparisonToFileSystem"); // cleanup if (Directory.Exists(persister.OutputDir)) Directory.Delete(persister.OutputDir, true); // save persister.Save(comparison); // verify Assert.IsTrue(Directory.Exists(persister.OutputDir)); var files = Directory.GetFiles(persister.OutputDir); Assert.IsTrue(files.Any(f => f.Contains("comparison.json"))); Assert.IsTrue(files.Any(f => f.Contains("HtmlDiff.html"))); Assert.IsTrue(files.Any(f => f.Contains("HtmlDiff.png"))); Assert.IsTrue(files.Any(f => f.Contains("PixelDiff.png"))); }
private Scrape DoScrape(Request request) { Scrape scrape; using (var facade = FacadeFactory.CreateFacade(request)) { var data = facade.ScrapeData(); scrape = _scrapeBuilder.BuildScrape(request, data); } //SerializeData(scrape); return scrape; }
/// <summary> /// Scrapes the current page. /// </summary> /// <param name="webDriver">The WebDriver instance to use.</param> /// <param name="request">The request.</param> /// <returns>An object containing information about the web page as a Scrape object.</returns> public Scrape ScrapeCurrent(IWebDriver webDriver, Request request) { Scrape scrape; using (var facade = FacadeFactory.CreateFacade(webDriver, request)) { var data = facade.ScrapeData(false); scrape = _scrapeBuilder.BuildScrape(request, data); } return scrape; }
//[Test, Category("Integration")] public void VerifyScrapeWithPhantomJS() { //Arrange var qbService = new Service(); var request = new Request { Url = "http://www.google.com/", Browser = "phantomjs" }; //Act & Assert Assert.DoesNotThrow(() => { var result = qbService.Scrape(request); Assert.IsTrue(result.Url == request.Url); Assert.IsTrue(result.Browser == request.Browser); }); }
public PhantomJsFacade(Request request) { _request = request; Config(); }
// [Test] public void testFakeRequestUrlNBrowserNViewport() { //Arrange string url = "my.url.com"; string browser = "mybrowser"; Size viewportsize = new Size(800, 600); Request expectedRequest = new Request(url, browser, viewportsize); //Act Request actualRequest = fakeTest.FakeRequest(url, browser, viewportSize: viewportsize); //Assert Assert.IsTrue(expectedRequest.Equals(actualRequest)); }