From 73931eaf97b6a8f09a4ab1e1445cf9c133bcb4a1 Mon Sep 17 00:00:00 2001 From: diosmosis <benaka@piwik.pro> Date: Sun, 21 Sep 2014 12:15:22 -0700 Subject: [PATCH] Allow .contains assertion to be used in screenshot tests as first assertion and allow .contains to be chained w/ .not property. --- .../screenshot-testing/support/chai-extras.js | 21 ++++++++++++------- .../support/page-renderer.js | 2 +- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/tests/lib/screenshot-testing/support/chai-extras.js b/tests/lib/screenshot-testing/support/chai-extras.js index 5c24340d1a..ec2d37296d 100644 --- a/tests/lib/screenshot-testing/support/chai-extras.js +++ b/tests/lib/screenshot-testing/support/chai-extras.js @@ -187,7 +187,8 @@ chai.Assertion.addChainableMethod('capture', function () { // add `contains` assertion chai.Assertion.addChainableMethod('contains', function () { - var url = this.__flags['object'], + var self = this, + url = this.__flags['object'], elementSelector = arguments[0], pageSetupFn = arguments[1], done = arguments[2]; @@ -205,21 +206,27 @@ chai.Assertion.addChainableMethod('contains', function () { } pageRenderer.capture(null, function (err) { + var obj = self._obj, + indent = " "; + if (err) { - var indent = " "; err.stack = err.message + "\n" + indent + getPageLogsString(pageRenderer.pageLogs, indent); done(err); return; } - if (!pageRenderer.contains(elementSelector)) { - var error = new AssertionError("Page does not contain element '" + elementSelector + "'."); - error.stack = getPageLogsString(pageRenderer.pageLogs, indent); + try { + self.assert( + pageRenderer.contains(elementSelector), + "Expected page to contain element '" + elementSelector + "', but could not find it in page.", + "Expected page to not contain element '" + elementSelector + "', but found it in page." + ); - done(error); - } else { done(); + } catch (error) { + error.stack = getPageLogsString(pageRenderer.pageLogs, indent); + done(error); } }); }); \ No newline at end of file diff --git a/tests/lib/screenshot-testing/support/page-renderer.js b/tests/lib/screenshot-testing/support/page-renderer.js index aa0fb12f87..de3819a4d3 100644 --- a/tests/lib/screenshot-testing/support/page-renderer.js +++ b/tests/lib/screenshot-testing/support/page-renderer.js @@ -38,7 +38,7 @@ PageRenderer.prototype.setViewportSize = function (w, h) { }; PageRenderer.prototype.getCurrentUrl = function () { - return this.webpage.url; + return this.webpage ? this.webpage.url : null; }; // event queueing functions -- GitLab