From 1c274da64dd6ea5d681efd3808883f61942f951a Mon Sep 17 00:00:00 2001
From: Benaka Moorthi <benaka.moorthi@gmail.com>
Date: Sun, 18 Aug 2013 17:19:29 -0400
Subject: [PATCH] Refs #4087, rewrote UI integration tests to use phantomjs or
 slimerjs and added (disabled) UI tests to travis build config.

Notes:
  * Modified main page-loading JavaScript to use ajaxHelper so it's possible to know when all AJAX requests are made.
  * Add setUrl method to ajaxHelper so it can be used when a doing AJAX w/ a URL instead of an object containing query parameters.
---
 .travis.yml                                   |   3 +-
 core/AssetManager.php                         |   2 +
 plugins/CoreHome/javascripts/broadcast.js     |  17 +--
 plugins/CoreHome/stylesheets/coreHome.less    |   1 -
 plugins/Zeitgeist/javascripts/ajaxHelper.js   |  61 ++++++--
 tests/PHPUnit/IntegrationTestCase.php         |  12 +-
 tests/PHPUnit/TestingEnvironment.php          |   7 +
 tests/PHPUnit/UI/UIIntegrationTest.php        | 122 ++++++++++------
 tests/resources/screenshot-capture/capture.js | 126 ++++++++++++++++
 .../jquery.waitforimages.js                   | 136 ++++++++++++++++++
 .../screenshot-override/open_sans.woff        | Bin 0 -> 21956 bytes
 .../screenshot-override/open_sans_b.woff      | Bin 0 -> 22748 bytes
 .../screenshot-override/open_sans_bi.woff     | Bin 0 -> 21184 bytes
 .../screenshot-override/open_sans_i.woff      | Bin 0 -> 21092 bytes
 .../screenshot-override/override.css          |  28 ++++
 .../resources/screenshot-override/override.js |  41 ++++++
 tests/travis/prepare.sh                       |  14 ++
 tests/travis/upload_artifacts.sh              |  34 +++--
 18 files changed, 526 insertions(+), 78 deletions(-)
 create mode 100644 tests/resources/screenshot-capture/capture.js
 create mode 100644 tests/resources/screenshot-override/jquery.waitforimages.js
 create mode 100644 tests/resources/screenshot-override/open_sans.woff
 create mode 100644 tests/resources/screenshot-override/open_sans_b.woff
 create mode 100644 tests/resources/screenshot-override/open_sans_bi.woff
 create mode 100644 tests/resources/screenshot-override/open_sans_i.woff
 create mode 100644 tests/resources/screenshot-override/override.css
 create mode 100644 tests/resources/screenshot-override/override.js

diff --git a/.travis.yml b/.travis.yml
index 5a28f29340..0ade48a0fe 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -12,9 +12,10 @@ env:
     - TEST_SUITE=PluginTests
     - TEST_SUITE=CoreTests
     - TEST_SUITE=IntegrationTests
+    #- TEST_DIR=UI
   global:
     secure: "AMhZmPZx4SUcuZRBzGHlQPxzM4D8FvFB3UThDa52gbi9KIBrwcumzV2VGi6B\n5fgjwtB4XTE1In7qhY2HMikPWBmWYYOQ5QcMPJsqqHt4iMmahx8WKzne6NOk\nNpqAuje/fulNGeP2LJZi0nrub3Fh4VwXaOvpNloKNQN/2JuqPtM="
-  
+
 # Run PHP 5.4 for aa tests to generate
 # code coverage.
 
diff --git a/core/AssetManager.php b/core/AssetManager.php
index 086f538a3f..541157dc2f 100644
--- a/core/AssetManager.php
+++ b/core/AssetManager.php
@@ -284,6 +284,7 @@ class AssetManager
             'plugins/Zeitgeist/stylesheets/',
             'plugins/',
             'plugins/Dashboard/stylesheets/dashboard.less',
+            'tests/',
         );
 
         return self::prioritySort($priorityCssOrdered, $cssFiles);
@@ -380,6 +381,7 @@ class AssetManager
             'plugins/Zeitgeist/javascripts/',
             'plugins/CoreHome/javascripts/broadcast.js',
             'plugins/',
+            'tests/',
         );
 
         return self::prioritySort($priorityJsOrdered, $jsFiles);
diff --git a/plugins/CoreHome/javascripts/broadcast.js b/plugins/CoreHome/javascripts/broadcast.js
index 7b0a3bfe24..761404efbd 100644
--- a/plugins/CoreHome/javascripts/broadcast.js
+++ b/plugins/CoreHome/javascripts/broadcast.js
@@ -394,16 +394,13 @@ var broadcast = {
             }
         }
 
-        var ajaxRequest = {
-            type: 'POST',
-            url: urlAjax,
-            dataType: 'html',
-            async: true,
-            error: broadcast.customAjaxHandleError,	// Callback when the request fails
-            success: sectionLoaded, // Callback when the request succeeds
-            data: {}
-        };
-        globalAjaxQueue.push($.ajax(ajaxRequest));
+        var ajax = new ajaxHelper();
+        ajax.setUrl(urlAjax);
+        ajax.setErrorCallback(broadcast.customAjaxHandleError);
+        ajax.setCallback(sectionLoaded);
+        ajax.setFormat('html');
+        ajax.send();
+
         return false;
     },
 
diff --git a/plugins/CoreHome/stylesheets/coreHome.less b/plugins/CoreHome/stylesheets/coreHome.less
index 2c82ad95b4..71a130f999 100644
--- a/plugins/CoreHome/stylesheets/coreHome.less
+++ b/plugins/CoreHome/stylesheets/coreHome.less
@@ -40,7 +40,6 @@ h3 {
 .pageWrap {
   border-left: 1px solid #DDDDDD;
   border-right: 1px solid #DDDDDD;
-  max-height: 681px;
   min-height: 10px;
   overflow: visible;
   padding: 15px 15px 0;
diff --git a/plugins/Zeitgeist/javascripts/ajaxHelper.js b/plugins/Zeitgeist/javascripts/ajaxHelper.js
index f12d451bbe..b3915f5897 100644
--- a/plugins/Zeitgeist/javascripts/ajaxHelper.js
+++ b/plugins/Zeitgeist/javascripts/ajaxHelper.js
@@ -11,19 +11,32 @@
  * @type {Array} array holding XhrRequests with automatic cleanup
  */
 var globalAjaxQueue = [];
+globalAjaxQueue.active = 0;
 
 /**
- * Extend Array.push with automatic cleanup for finished requests
- *
- * @return {Object}
+ * Removes all finished requests from the queue.
+ * 
+ * @return {void}
  */
-globalAjaxQueue.push = function () {
-    // cleanup ajax queue
+globalAjaxQueue.clean = function () {
     for (var i = this.length; i--;) {
         if (!this[i] || this[i].readyState == 4) {
             this.splice(i, 1);
         }
     }
+};
+
+/**
+ * Extend Array.push with automatic cleanup for finished requests
+ *
+ * @return {Object}
+ */
+globalAjaxQueue.push = function () {
+    this.active += arguments.length;
+
+    // cleanup ajax queue
+    this.clean();
+
     // call original array push
     return Array.prototype.push.apply(this, arguments);
 };
@@ -40,6 +53,8 @@ globalAjaxQueue.abort = function () {
     }
     // remove all elements from array
     this.splice(0, this.length);
+
+    this.active = 0;
 };
 
 /**
@@ -85,6 +100,13 @@ function ajaxHelper() {
      */
     this.getParams =      {};
 
+    /**
+     * Base URL used in the AJAX request. Can be set by setUrl.
+     * @type {String}
+     * @see ajaxHelper.setUrl
+     */
+    this.getUrl = 'index.php?';
+
     /**
      * Params to be passed as GET params
      * @type {Object}
@@ -119,6 +141,10 @@ function ajaxHelper() {
      * @return {void}
      */
     this.addParams = function (params, type) {
+        if (typeof params == 'string') {
+            params = broadcast.getValuesFromUrl(params);
+        }
+
         for (var key in params) {
             if(type.toLowerCase() == 'get') {
                 this.getParams[key] = params[key];
@@ -128,6 +154,15 @@ function ajaxHelper() {
         }
     };
     
+    /**
+     * Sets the base URL to use in the AJAX request.
+     * 
+     * @param {string} url
+     */
+    this.setUrl = function (url) {
+        this.getUrl = url;
+    };
+
     /**
      * Gets this helper instance ready to send a bulk request. Each argument to this
      * function is a single request to use.
@@ -300,7 +335,10 @@ function ajaxHelper() {
 
         var parameters = this._mixinDefaultGetParams(this.getParams);
 
-        var url = 'index.php?';
+        var url = this.getUrl;
+        if (url[url.length - 1] != '?') {
+            url += '&';
+        }
 
         // we took care of encoding &segment properly already, so we don't use $.param for it ($.param URL encodes the values)
         if(parameters['segment']) {
@@ -328,10 +366,17 @@ function ajaxHelper() {
                         $(that.errorElement).html(response.message).fadeIn();
                         piwikHelper.lazyScrollTo(that.errorElement, 250);
                     }
-                    return;
+                } else {
+                    that.callback(response);
                 }
 
-                that.callback(response);
+                --globalAjaxQueue.active;
+                var piwik = window.piwik;
+                if (piwik
+                    && piwik.ajaxRequestFinished
+                ) {
+                    piwik.ajaxRequestFinished();
+                }
             },
             data:     this._mixinDefaultPostParams(this.postParams)
         };
diff --git a/tests/PHPUnit/IntegrationTestCase.php b/tests/PHPUnit/IntegrationTestCase.php
index cfcf72c581..ed567452ae 100755
--- a/tests/PHPUnit/IntegrationTestCase.php
+++ b/tests/PHPUnit/IntegrationTestCase.php
@@ -635,7 +635,7 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
                                         $abandonedCarts = false, $idGoal = false, $apiModule = false, $apiAction = false,
                                         $otherRequestParameters = array(), $supertableApi = false, $fileExtension = false)
     {
-        list($pathProcessed, $pathExpected) = $this->getProcessedAndExpectedDirs();
+        list($pathProcessed, $pathExpected) = self::getProcessedAndExpectedDirs();
 
         if ($periods === false) {
             $periods = 'day';
@@ -866,9 +866,9 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
         return $input;
     }
 
-    protected function getProcessedAndExpectedDirs()
+    protected static function getProcessedAndExpectedDirs()
     {
-        $path = $this->getPathToTestDirectory();
+        $path = self::getPathToTestDirectory();
         return array($path . '/processed/', $path . '/expected/');
     }
 
@@ -879,7 +879,7 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
             $filename .= ".$format";
         }
 
-        list($processedDir, $expectedDir) = $this->getProcessedAndExpectedDirs();
+        list($processedDir, $expectedDir) = self::getProcessedAndExpectedDirs();
 
         return array($processedDir . $filename, $expectedDir . $filename);
     }
@@ -1062,9 +1062,9 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * Path where expected/processed output files are stored. Can be overridden.
+     * Path where expected/processed output files are stored.
      */
-    public function getPathToTestDirectory()
+    public static function getPathToTestDirectory()
     {
         return dirname(__FILE__) . DIRECTORY_SEPARATOR . 'Integration';
     }
diff --git a/tests/PHPUnit/TestingEnvironment.php b/tests/PHPUnit/TestingEnvironment.php
index 99d2822ef6..171ce74901 100644
--- a/tests/PHPUnit/TestingEnvironment.php
+++ b/tests/PHPUnit/TestingEnvironment.php
@@ -23,5 +23,12 @@ class Piwik_TestingEnvironment
         Piwik_AddAction('FrontController.dispatch', function() {
             \Piwik\Plugins\CoreVisualizations\Visualizations\Cloud::$debugDisableShuffle = true;
         });
+        Piwik_AddAction('AssetManager.getCssFiles', function(&$cssFiles) {
+            $cssFiles[] = 'tests/resources/screenshot-override/override.css';
+        });
+        Piwik_AddAction('AssetManager.getJsFiles', function(&$jsFiles) {
+            $jsFiles[] = 'tests/resources/screenshot-override/jquery.waitforimages.js';
+            $jsFiles[] = 'tests/resources/screenshot-override/override.js';
+        });
     }
 }
\ No newline at end of file
diff --git a/tests/PHPUnit/UI/UIIntegrationTest.php b/tests/PHPUnit/UI/UIIntegrationTest.php
index 7d63301b8e..341756fa2b 100644
--- a/tests/PHPUnit/UI/UIIntegrationTest.php
+++ b/tests/PHPUnit/UI/UIIntegrationTest.php
@@ -13,7 +13,7 @@ use Piwik\Plugins\VisitsSummary\API;
 /**
  * Tests UI code by grabbing screenshots of webpages and comparing with expected files.
  * 
- * Uses cutycapt.
+ * Uses slimerjs or phantomjs.
  * 
  * TODO:
  * - allow instrumentation javascript to be injected before screenshot is taken (so we can, say,
@@ -22,10 +22,9 @@ use Piwik\Plugins\VisitsSummary\API;
 class Test_Piwik_Integration_UIIntegrationTest extends IntegrationTestCase
 {
     const IMAGE_TYPE = 'png';
-    const CUTYCAPT_DELAY = 1000;
+    const CAPTURE_PROGRAM = 'phantomjs';
     
     public static $fixture = null; // initialized below class definition
-    private static $useXvfb = false;
     
     public static function createAccessInstance()
     {
@@ -35,11 +34,21 @@ class Test_Piwik_Integration_UIIntegrationTest extends IntegrationTestCase
     
     public static function setUpBeforeClass()
     {
-        if (self::isXvfbAvailable()) {
-            self::$useXvfb = true;
-        } else if (!self::isCutyCaptAvailable()) {
-            self::markTestSkipped("cutycapt is not available, skipping UI integration tests. "
-                                . "(install with 'sudo apt-get intsall cutycapt')");
+        if (!self::isXvfbAvailable()) {
+            self::markTestSkipped("xvfb is not available, skipping UI integration tests. (install with 'sudo apt-get install xvfb')");
+        } else if (self::CAPTURE_PROGRAM == 'slimerjs'
+                   && !self::isSlimerJsAvailable()
+        ) {
+            self::markTestSkipped("slimerjs is not available, skipping UI integration tests. "
+                                . "(install by downloading http://slimerjs.org/download.html)");
+        } else if (self::CAPTURE_PROGRAM == 'phantomjs'
+                   && !self::isPhantomJsAvailable()
+        ) {
+            self::markTestSkipped("phantomjs is not available, skipping UI integration tests. "
+                                . "(install by downloading http://phantomjs.org/download.html)");
+        } else {
+            self::markTestSkipped("No way to take screenshots of URLs, skipping UI integration tests. (Enable by installing "
+                                . "phantomjs (http://phantomjs.org/download.html) or slimerjs (http://slimerjs.org/download.html).");
         }
         
         parent::setUpBeforeClass();
@@ -48,10 +57,35 @@ class Test_Piwik_Integration_UIIntegrationTest extends IntegrationTestCase
         
         // launch archiving so tests don't run out of time
         API::getInstance()->get(self::$fixture->idSite, 'year', '2012-08-09');
+
+        // make sure processed & expected dirs exist
+        list($processedDir, $expectedDir) = self::getProcessedAndExpectedDirs();
+        if (!is_dir($processedDir)) {
+            mkdir($processedDir);
+        }
+        if (!is_dir($expectedDir)) {
+            mkdir($expectedDir);
+        }
+
+        // run slimerjs/phantomjs w/ all urls so we only invoke it once
+        $urls = array();
+        foreach (self::getUrlsForTesting() as $testInfo) {
+            list($name, $urlQuery) = $testInfo;
+
+            list($processedScreenshotPath, $expectedScreenshotPath) = self::getProcessedAndExpectedScreenshotPaths($name);
+            $urls[] = array($processedScreenshotPath, self::getProxyUrl() . $urlQuery);
+        }
+        
+        echo "Generating screenshots...\n";
+        self::runCaptureProgram($urls);
     }
     
     public static function tearDownAfterClass()
     {
+        if (file_exists("C:\\nppdf32Log\\debuglog.txt")) { // remove slimerjs oddity
+            unlink("C:\\nppdf32Log\\debuglog.txt");
+        }
+
         if (!Zend_Registry::get('db')) {
             Piwik::createDatabaseObject();
         }
@@ -63,14 +97,6 @@ class Test_Piwik_Integration_UIIntegrationTest extends IntegrationTestCase
     {
         parent::setUp();
         
-        list($processedDir, $expectedDir) = $this->getProcessedAndExpectedDirs();
-        if (!is_dir($processedDir)) {
-            mkdir($processedDir);
-        }
-        if (!is_dir($expectedDir)) {
-            mkdir($expectedDir);
-        }
-        
         if (!Zend_Registry::get('db')) {
             Piwik::createDatabaseObject();
         }
@@ -84,7 +110,7 @@ class Test_Piwik_Integration_UIIntegrationTest extends IntegrationTestCase
         \Zend_Registry::set('db', false);
     }
     
-    public function getUrlsForTesting()
+    public static function getUrlsForTesting()
     {
         $generalParams = 'idSite=1&period=week&date=2012-08-09';
         $evolutionParams = 'idSite=1&period=day&date=2012-08-11&evolution_day_last_n=30';
@@ -196,33 +222,26 @@ class Test_Piwik_Integration_UIIntegrationTest extends IntegrationTestCase
      */
     public function testUIUrl($name, $urlQuery)
     {
-        list($processedDir, $expectedDir) = $this->getProcessedAndExpectedDirs();
-        
-        $processedScreenshotPath = $processedDir . "$name." . self::IMAGE_TYPE;
-        $expectedScreenshotPath = $expectedDir . "$name." . self::IMAGE_TYPE;
-        
-        // run cutycapt w/ url and output to /processed-ui-screenshots/$name.svg
-        $this->runCutyCapt($urlQuery, $processedScreenshotPath);
+        list($processedScreenshotPath, $expectedScreenshotPath) = self::getProcessedAndExpectedScreenshotPaths($name);
         
         // compare processed w/ expected
         $this->compareScreenshot($name, $expectedScreenshotPath, $processedScreenshotPath, $urlQuery);
     }
     
-    private function runCutyCapt($urlQuery, $processedPath)
+    private static function runCaptureProgram($urlInfo)
     {
-        $url = self::getProxyUrl() . $urlQuery;
-        
-        $cmd = "cutycapt --url=\"$url\" --out=\"$processedPath\" --min-width=1366 --delay=".self::CUTYCAPT_DELAY." 2>&1";
-        if (self::$useXvfb) {
-            $cmd = 'xvfb-run --server-args="-screen 0, 1024x768x24" ' . $cmd;
-        }
+        file_put_contents(PIWIK_INCLUDE_PATH . '/tmp/urls.txt', json_encode($urlInfo));
+        $cmd = self::CAPTURE_PROGRAM . " \"" . PIWIK_INCLUDE_PATH . "/tests/resources/screenshot-capture/capture.js\" 2>&1";
+        $cmd = 'xvfb-run --server-args="-screen 0, 1024x768x24" ' . $cmd;
         
         exec($cmd, $output, $result);
-        
-        if ($result !== 0) {
-            throw new Exception("cutycapt failed: " . implode("\n", $output) . "\n\ncommand used: $cmd");
+        $output = implode("\n", $output);
+        if ($result !== 0
+            || strpos($output, "ERROR") !== false
+        ) {
+            echo self::CAPTURE_PROGRAM . " failed: " . $output . "\n\ncommand used: $cmd\n";
+            throw new Exception("phantomjs failed");
         }
-
         return $output;
     }
     
@@ -241,21 +260,40 @@ class Test_Piwik_Integration_UIIntegrationTest extends IntegrationTestCase
         $this->assertTrue($expected == $processed, "screenshot compare failed for '$processedPath'");
     }
     
-    private static function isCutyCaptAvailable()
+    private static function isSlimerJsAvailable()
     {
-        exec("cutycapt --help 2>&1", $output, $result);
-        return $result === 0 || $result === 1;
+        return self::isProgramAvailable('slimerjs');
+    }
+
+    private static function isPhantomJsAvailable()
+    {
+        return self::isProgramAvaialble('phantomjs');
     }
     
     private static function isXvfbAvailable()
     {
-        exec("xvfb-run --help 2>&1", $output, $result);
+        return self::isProgramAvailable('xvfb-run');
+    }
+
+    private static function isProgramAvailable($name)
+    {
+        exec($name . ' --help 2>&1', $output, $result);
         return $result === 0 || $result === 1;
     }
+
+    private static function getProcessedAndExpectedScreenshotPaths($name)
+    {
+        list($processedDir, $expectedDir) = self::getProcessedAndExpectedDirs();
+
+        $processedScreenshotPath = $processedDir . "$name." . self::IMAGE_TYPE;
+        $expectedScreenshotPath = $expectedDir . "$name." . self::IMAGE_TYPE;
+
+        return array($processedScreenshotPath, $expectedScreenshotPath);
+    }
     
-    protected function getProcessedAndExpectedDirs()
+    protected static function getProcessedAndExpectedDirs()
     {
-        $path = $this->getPathToTestDirectory() . '/../UI';
+        $path = self::getPathToTestDirectory() . '/../UI';
         return array($path . '/processed-ui-screenshots/', $path . '/expected-ui-screenshots/');
     }
     
@@ -265,4 +303,4 @@ class Test_Piwik_Integration_UIIntegrationTest extends IntegrationTestCase
     }
 }
 
-Test_Piwik_Integration_UIIntegrationTest::$fixture = new Test_Piwik_Fixture_ManySitesImportedLogsWithXssAttempts();
+Test_Piwik_Integration_UIIntegrationTest::$fixture = new Test_Piwik_Fixture_ManySitesImportedLogsWithXssAttempts();
\ No newline at end of file
diff --git a/tests/resources/screenshot-capture/capture.js b/tests/resources/screenshot-capture/capture.js
new file mode 100644
index 0000000000..34ac2f8068
--- /dev/null
+++ b/tests/resources/screenshot-capture/capture.js
@@ -0,0 +1,126 @@
+var fs = require('fs');
+var app = typeof slimer === 'undefined' ? phantom : slimer;
+var readFileSync = fs.readFileSync || fs.read;
+
+var PageRenderer = function() {
+    this.start = new Date();
+
+    this.urlIndex = 0;
+    this.urls = JSON.parse(readFileSync('../../tmp/urls.txt'));
+
+    this.webpage = require('webpage').create();
+    this.outputPath = '';
+    this.url = '';
+
+    this._setupWebpageEvents();
+    this._setScriptTimeout();
+};
+
+PageRenderer.prototype = {
+    renderAll: function () {
+        this._saveCurrentUrl();
+    },
+
+    _saveCurrentUrl: function () {
+        if (this.urlIndex >= this.urls.length) {
+            app.exit();
+            return;
+        }
+
+        this.outputPath = this.urls[this.urlIndex][0];
+        this.url = this.urls[this.urlIndex][1];
+
+        console.log("SAVING " + this.url + " at " + this._getElapsedExecutionTime());
+
+        this.webpage.viewportSize = {width:1350, height:768};
+        this.webpage.open(this.url);
+
+        this._setPageTimeouts();
+    },
+
+    _setPageTimeouts: function () {
+        var url = this.url, self = this;
+        this.webpage.onLoadFinished = function () {
+            // check that we're still on the same url
+            if (url != self.url) {
+                return;
+            }
+
+            // in case there are no ajax requests, try triggering after a sec
+            setTimeout(function () {
+                if (url == self.url) {
+                    self.webpage.evaluate(function () {
+                        window.piwik.ajaxRequestFinished();
+                    });
+                }
+            }, 1000)
+
+            // only allowed at most one minute to load
+            setTimeout(function () {
+                if (url == self.url) {
+                    self.webpage.evaluate(function () {
+                        window.piwik._triggerRenderInsane();
+                    });
+                }
+            }, 1000 * 60);
+        };
+    },
+
+    _setupWebpageEvents: function () {
+        this.webpage.onError = function (message) {
+            console.log("Webpage error: " + message);
+        };
+
+        var self = this;
+        this.webpage.onConsoleMessage = function (message) {
+            if (message == "__AJAX_DONE__") {
+                try {
+                    self._setCorrectViewportSize();
+                    self.webpage.render(self.outputPath);
+
+                    self._renderNextUrl();
+                } catch (e) {
+                    console.log("ERROR: " + e.message);
+                    app.exit(1);
+                }
+            } else {
+                console.log("LOGGED: " + message);
+            }
+        };
+    },
+
+    _renderNextUrl: function () {
+        ++this.urlIndex;
+        this._saveCurrentUrl();
+    },
+
+    _setCorrectViewportSize: function () {
+        this.webpage.viewportSize = {width:1350, height:768};
+        var height = Math.max(768, this.webpage.evaluate(function() {
+            return document.body.offsetHeight;
+        }));
+        this.webpage.viewportSize = {width:1350, height: height};
+    },
+
+    _getElapsedExecutionTime: function () {
+        var now = new Date(),
+            elapsed = now.getTime() - this.start.getTime();
+
+        return (elapsed / 1000.0) + "s";
+    },
+
+    _setScriptTimeout: function () {
+        setTimeout(function() {
+            console.log("ERROR: Timed out!");
+            app.exit(1);
+        }, Math.max(1000 * 15 * this.urls.length, 1000 * 60 * 5));
+    },
+};
+
+try {
+    var renderer = new PageRenderer();
+    renderer.renderAll();
+} catch (e) {
+    console.log("ERROR: " + e.message);
+    app.exit(1);
+}
\ No newline at end of file
diff --git a/tests/resources/screenshot-override/jquery.waitforimages.js b/tests/resources/screenshot-override/jquery.waitforimages.js
new file mode 100644
index 0000000000..eba523b8bb
--- /dev/null
+++ b/tests/resources/screenshot-override/jquery.waitforimages.js
@@ -0,0 +1,136 @@
+/*! waitForImages jQuery Plugin - v1.5.0 - 2013-07-20
+* https://github.com/alexanderdickson/waitForImages
+* Copyright (c) 2013 Alex Dickson; Licensed MIT */
+;(function ($) {
+    // Namespace all events.
+    var eventNamespace = 'waitForImages';
+
+    // CSS properties which contain references to images.
+    $.waitForImages = {
+        hasImageProperties: ['backgroundImage', 'listStyleImage', 'borderImage', 'borderCornerImage', 'cursor']
+    };
+
+    // Custom selector to find `img` elements that have a valid `src` attribute and have not already loaded.
+    $.expr[':'].uncached = function (obj) {
+        // Ensure we are dealing with an `img` element with a valid `src` attribute.
+        if (!$(obj).is('img[src!=""]')) {
+            return false;
+        }
+
+        // Firefox's `complete` property will always be `true` even if the image has not been downloaded.
+        // Doing it this way works in Firefox.
+        var img = new Image();
+        img.src = obj.src;
+        return !img.complete;
+    };
+
+    $.fn.waitForImages = function (finishedCallback, eachCallback, waitForAll) {
+
+        var allImgsLength = 0;
+        var allImgsLoaded = 0;
+
+        // Handle options object.
+        if ($.isPlainObject(arguments[0])) {
+            waitForAll = arguments[0].waitForAll;
+            eachCallback = arguments[0].each;
+			// This must be last as arguments[0]
+			// is aliased with finishedCallback.
+            finishedCallback = arguments[0].finished;
+        }
+
+        // Handle missing callbacks.
+        finishedCallback = finishedCallback || $.noop;
+        eachCallback = eachCallback || $.noop;
+
+        // Convert waitForAll to Boolean
+        waitForAll = !! waitForAll;
+
+        // Ensure callbacks are functions.
+        if (!$.isFunction(finishedCallback) || !$.isFunction(eachCallback)) {
+            throw new TypeError('An invalid callback was supplied.');
+        }
+
+        return this.each(function () {
+            // Build a list of all imgs, dependent on what images will be considered.
+            var obj = $(this);
+            var allImgs = [];
+            // CSS properties which may contain an image.
+            var hasImgProperties = $.waitForImages.hasImageProperties || [];
+            // To match `url()` references.
+            // Spec: http://www.w3.org/TR/CSS2/syndata.html#value-def-uri
+            var matchUrl = /url\(\s*(['"]?)(.*?)\1\s*\)/g;
+
+            if (waitForAll) {
+
+                // Get all elements (including the original), as any one of them could have a background image.
+                obj.find('*').addBack().each(function () {
+                    var element = $(this);
+
+                    // If an `img` element, add it. But keep iterating in case it has a background image too.
+                    if (element.is('img:uncached')) {
+                        allImgs.push({
+                            src: element.attr('src'),
+                            element: element[0]
+                        });
+                    }
+
+                    $.each(hasImgProperties, function (i, property) {
+                        var propertyValue = element.css(property);
+                        var match;
+
+                        // If it doesn't contain this property, skip.
+                        if (!propertyValue) {
+                            return true;
+                        }
+
+                        // Get all url() of this element.
+                        while (match = matchUrl.exec(propertyValue)) {
+                            allImgs.push({
+                                src: match[2],
+                                element: element[0]
+                            });
+                        }
+                    });
+                });
+            } else {
+                // For images only, the task is simpler.
+                obj.find('img:uncached')
+                    .each(function () {
+                    allImgs.push({
+                        src: this.src,
+                        element: this
+                    });
+                });
+            }
+
+            allImgsLength = allImgs.length;
+            allImgsLoaded = 0;
+
+            // If no images found, don't bother.
+            if (allImgsLength === 0) {
+                finishedCallback.call(obj[0]);
+            }
+
+            $.each(allImgs, function (i, img) {
+
+                var image = new Image();
+
+                // Handle the image loading and error with the same callback.
+                $(image).on('load.' + eventNamespace + ' error.' + eventNamespace, function (event) {
+                    allImgsLoaded++;
+
+                    // If an error occurred with loading the image, set the third argument accordingly.
+                    eachCallback.call(img.element, allImgsLoaded, allImgsLength, event.type == 'load');
+
+                    if (allImgsLoaded == allImgsLength) {
+                        finishedCallback.call(obj[0]);
+                        return false;
+                    }
+
+                });
+
+                image.src = img.src;
+            });
+        });
+    };
+}(jQuery));
diff --git a/tests/resources/screenshot-override/open_sans.woff b/tests/resources/screenshot-override/open_sans.woff
new file mode 100644
index 0000000000000000000000000000000000000000..55b25f867099eb26c436b1c9fecff14a51290d46
GIT binary patch
literal 21956
zcmYg%V~{946YlD)ZJTFp>#S|twr$(CZQHhO+uptVe)s;ksd_5uXS&l}>8Y7aGI5a+
z76t$W_$^9<0Pz3S(UHIM|Cs-z|Gx+eD@p+X09yWX*#AMZ(hWyOftKNy3;mU~exaMk
z-2-c2rDyxgo&Lh~7xj^+n`s8lj`#ooz_PzOYQM;blR_^vwl%T(<thOHK*|6Bz#6^v
znh{L&9DZ%VReyE<iv}J51%SxJ(#`mn`|XRl2LM1$v9hnK$<#>C5CDLO{8xwZ7c6fq
z$m^!R<S(cBE93ow7`6rE-PFp_^_TMm004sf^`)BXq5@=LWN!@sz!wPs0E-L&Km-Dv
z3<qIpWAJM$o%<Va^?z_qF_5&<bN!7)_P?0%{{xT~pt!Z3mC-Nv%L5$%0DwYlhuZhs
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
V`l^D1+v7dzXWE*Ozus}S{{vS5Z1n&D

literal 0
HcmV?d00001

diff --git a/tests/resources/screenshot-override/open_sans_b.woff b/tests/resources/screenshot-override/open_sans_b.woff
new file mode 100644
index 0000000000000000000000000000000000000000..27619e7cea1c29f9d71567b78470fdd705c174dc
GIT binary patch
literal 22748
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

literal 0
HcmV?d00001

diff --git a/tests/resources/screenshot-override/open_sans_bi.woff b/tests/resources/screenshot-override/open_sans_bi.woff
new file mode 100644
index 0000000000000000000000000000000000000000..e12c3a9f273c2f0e4952293bb852406c2ab1eb0a
GIT binary patch
literal 21184
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

literal 0
HcmV?d00001

diff --git a/tests/resources/screenshot-override/open_sans_i.woff b/tests/resources/screenshot-override/open_sans_i.woff
new file mode 100644
index 0000000000000000000000000000000000000000..cedefb8f6ff406c6b77e75ae55ee88e2bd88dc17
GIT binary patch
literal 21092
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
F;UD<^W={YB

literal 0
HcmV?d00001

diff --git a/tests/resources/screenshot-override/override.css b/tests/resources/screenshot-override/override.css
new file mode 100644
index 0000000000..8bc65e63d3
--- /dev/null
+++ b/tests/resources/screenshot-override/override.css
@@ -0,0 +1,28 @@
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 400;
+  src: url(tests/resources/screenshot-override/open_sans.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 700;
+  src: url(tests/resources/screenshot-override/open_sans_b.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 400;
+  src: url(tests/resources/screenshot-override/open_sans_i.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 700;
+  src: url(tests/resources/screenshot-override/open_sans_bi.woff) format('woff');
+}
+
+* {
+    font-family: 'Open Sans';
+}
\ No newline at end of file
diff --git a/tests/resources/screenshot-override/override.js b/tests/resources/screenshot-override/override.js
new file mode 100644
index 0000000000..c354d5ca13
--- /dev/null
+++ b/tests/resources/screenshot-override/override.js
@@ -0,0 +1,41 @@
+(function ($) {
+
+    var DEBUG_LOGGING = true;
+    
+    if (DEBUG_LOGGING) {
+        var log = function(message) {
+            console.log(message);
+        };
+    } else {
+        var log = function() {};
+    }
+
+    var triggerRenderInsane = function () {
+        console.log("__AJAX_DONE__");
+    };
+    
+    var triggerRender = function () {
+        if (window.globalAjaxQueue.active === 0) { // sanity check
+            triggerRenderInsane();
+        }
+    };
+
+    var triggerRenderIfNoAjax = function () {
+        setTimeout(function () { // allow other javascript to execute in case they execute ajax/add images/set the src of images
+            if (window.globalAjaxQueue.active === 0) {
+                $('body').waitForImages({
+                    waitForAll: true,
+                    finished: function () {
+                        // wait some more to make sure other javascript is executed & the last image is rendered
+                        setTimeout(triggerRender, 1000);
+                    },
+                });
+            }
+        }, 1);
+    };
+
+    window.piwik = window.piwik || {};
+    window.piwik.ajaxRequestFinished = triggerRenderIfNoAjax;
+    window.piwik._triggerRenderInsane = triggerRenderInsane;
+
+}(jQuery));
\ No newline at end of file
diff --git a/tests/travis/prepare.sh b/tests/travis/prepare.sh
index b45bbe7039..04f50f0354 100755
--- a/tests/travis/prepare.sh
+++ b/tests/travis/prepare.sh
@@ -4,6 +4,20 @@ set -e
 # Install XMLStarlet
 sudo apt-get install -qq xmlstarlet
 
+# Install phantomjs 1.9.1 for UI tests
+if [ "$TEST_DIR" = "UI" ];
+then
+    cd tmp
+    wget "https://phantomjs.googlecode.com/files/phantomjs-1.9.1-linux-x86_64.tar.bz2" -O phantomjs.tar.bz2
+    tar xvjf phantomjs.tar.bz2
+    cd phantomjs*
+    export PATH=$PATH:`pwd`/bin
+    cd ../..
+
+    echo "Using phantomjs version:"
+    phantomjs --version
+fi
+
 # Copy Piwik configuration
 echo "Install config.ini.php"
 cp ./tests/PHPUnit/config.ini.travis.php ./config/config.ini.php
diff --git a/tests/travis/upload_artifacts.sh b/tests/travis/upload_artifacts.sh
index 1d829c4ca5..84cbab9efe 100755
--- a/tests/travis/upload_artifacts.sh
+++ b/tests/travis/upload_artifacts.sh
@@ -1,16 +1,30 @@
-if [ "$TEST_SUITE" != "IntegrationTests" ];
+#!/bin/bash
+
+if [ "$TEST_SUITE" = "IntegrationTests" ];
 then
-    echo "No artifacts for $TEST_SUITE tests.";
-    exit;
-fi
+    url="http://builds-artifacts.piwik.org/upload.php?auth_key=$ARTIFACTS_PASS&artifact_name=processed&branch=$TRAVIS_BRANCH&build_id=$TRAVIS_JOB_NUMBER"
+
+    echo "Uploading artifacts for $TEST_SUITE..."
 
-url="http://builds-artifacts.piwik.org/upload.php?auth_key=$ARTIFACTS_PASS&artifact_name=processed&branch=$TRAVIS_BRANCH&build_id=$TRAVIS_JOB_NUMBER"
+    cd ./tests/PHPUnit/Integration
 
-echo "Uploading artifacts for $TEST_SUITE..."
+    # upload processed tarball
+    tar -cjf processed.tar.bz2 processed --exclude='.gitkeep'
+    curl -X POST --data-binary @processed.tar.bz2 "$url"
+else
+    if [ "$TEST_DIR" = "UI" ];
+    then
+        url="http://builds-artifacts.piwik.org/upload.php?auth_key=$ARTIFACTS_PASS&artifact_name=processed-ui-screenshots&branch=$TRAVIS_BRANCH&build_id=$TRAVIS_JOB_NUMBER"
 
-cd ./tests/PHPUnit/Integration
+        echo "Uploading artifacts for $TEST_DIR..."
 
-# upload processed tarball
-tar -cjf processed.tar.bz2 processed --exclude='.gitkeep'
-curl -X POST --data-binary @processed.tar.bz2 "$url"
+        cd ./tests/PHPUnit/UI
 
+        # upload processed tarball
+        tar -cjf processed-ui-screenshots.tar.bz2 processed-ui-screenshots --exclude='.gitkeep'
+        curl -X POST --data-binary @processed-ui-screenshots.tar.bz2 "$url"
+    else
+        echo "No artifacts for $TEST_SUITE tests."
+        exit
+    fi
+fi
\ No newline at end of file
-- 
GitLab