From d57f4a83aa7295c1e23277b2c22e9be4cafb1112 Mon Sep 17 00:00:00 2001 From: Benaka Moorthi Date: Tue, 10 Sep 2013 12:59:51 -0400 Subject: [PATCH] Refs #4087, add UI screenshot tests to new repository, enable tests on travis and make sure new repo is built every time integration tests pass on piwik build. --- .gitignore | 5 +- .gitmodules | 3 + .travis.yml | 5 +- core/ViewDataTable.php | 4 +- .../CoreVisualizations/javascripts/jqplot.js | 6 +- tests/PHPUnit/TestingEnvironment.php | 11 ++ tests/PHPUnit/UI | 1 + tests/PHPUnit/UI/UIIntegrationTest.php | 139 ------------------ tests/PHPUnit/UITest.php | 40 ++--- tests/resources/screenshot-capture/capture.js | 38 +++-- .../screenshot-override/open_sans.woff | Bin 21956 -> 0 bytes .../screenshot-override/open_sans_b.woff | Bin 22748 -> 0 bytes .../screenshot-override/open_sans_bi.woff | Bin 21184 -> 0 bytes .../screenshot-override/open_sans_i.woff | Bin 21092 -> 0 bytes .../screenshot-override/override.css | 29 +--- .../resources/screenshot-override/override.js | 7 +- tests/travis/initiate_ui_tests.sh | 33 +++++ tests/travis/prepare.sh | 13 +- tests/travis/upload_artifacts.sh | 2 +- 19 files changed, 110 insertions(+), 226 deletions(-) create mode 100644 .gitmodules create mode 160000 tests/PHPUnit/UI delete mode 100644 tests/PHPUnit/UI/UIIntegrationTest.php delete mode 100644 tests/resources/screenshot-override/open_sans.woff delete mode 100644 tests/resources/screenshot-override/open_sans_b.woff delete mode 100644 tests/resources/screenshot-override/open_sans_bi.woff delete mode 100644 tests/resources/screenshot-override/open_sans_i.woff create mode 100755 tests/travis/initiate_ui_tests.sh diff --git a/.gitignore b/.gitignore index b6b2b2391e5..3258340e303 100644 --- a/.gitignore +++ b/.gitignore @@ -62,7 +62,4 @@ tests/lib/xhprof-0.9.2/extension/run-tests.php docs/ composer.phar vendor/ -/.htaccess -tests/PHPUnit/UI/processed-ui-screenshots -tests/PHPUnit/UI/expected-ui-screenshots - +/.htaccess \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000000..47afde004c3 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "tests/PHPUnit/UI"] + path = tests/PHPUnit/UI + url = https://github.com/piwik/piwik-ui-tests.git diff --git a/.travis.yml b/.travis.yml index 391de22321b..66330335b8a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,9 +12,9 @@ env: - TEST_SUITE=PluginTests - TEST_SUITE=CoreTests - TEST_SUITE=IntegrationTests - #- TEST_DIR=UI global: - secure: "AMhZmPZx4SUcuZRBzGHlQPxzM4D8FvFB3UThDa52gbi9KIBrwcumzV2VGi6B\n5fgjwtB4XTE1In7qhY2HMikPWBmWYYOQ5QcMPJsqqHt4iMmahx8WKzne6NOk\nNpqAuje/fulNGeP2LJZi0nrub3Fh4VwXaOvpNloKNQN/2JuqPtM=" + - secure: "AMhZmPZx4SUcuZRBzGHlQPxzM4D8FvFB3UThDa52gbi9KIBrwcumzV2VGi6B\n5fgjwtB4XTE1In7qhY2HMikPWBmWYYOQ5QcMPJsqqHt4iMmahx8WKzne6NOk\nNpqAuje/fulNGeP2LJZi0nrub3Fh4VwXaOvpNloKNQN/2JuqPtM=" + - secure: "DySde80fX3dw0osGY5s5lGiGLjMleUkkONsuRDC4xjT1hAQP94FGHpPXVZV8\nAQY0s8MQmcK2eRLOQrmE9Bh1XXbGqh40s66XhSWq0hulFHxQH5OLaZXccFeu\n5WxGkHXnNDIc+CVhXW/IIbHZPO1K6hffS8fuvP1o6mYgxwFL6Xw=" # Run PHP 5.4 for aa tests to generate # code coverage. @@ -43,6 +43,7 @@ before_script: after_success: - cd $TRAVIS_BUILD_DIR + - ./tests/travis/initiate_ui_tests.sh - ./tests/travis/generate_docs.sh after_script: diff --git a/core/ViewDataTable.php b/core/ViewDataTable.php index 76c2063b20f..fd4d171615f 100644 --- a/core/ViewDataTable.php +++ b/core/ViewDataTable.php @@ -1255,10 +1255,10 @@ private function overrideViewPropertiesWithQueryParams() // TODO: should mark properties that are overridable so not all properties can be overidden this way $queryParams = $_GET + $_POST; foreach ($queryParams as $name => $value) { - if (empty($queryParams[$name])) { + if (empty($value)) { continue; } - + $value = Common::getRequestVar($name, $default = null, $type = null, $queryParams); if (Properties::isCoreViewProperty($name)) { diff --git a/plugins/CoreVisualizations/javascripts/jqplot.js b/plugins/CoreVisualizations/javascripts/jqplot.js index 58de9aa1d88..6445781c853 100644 --- a/plugins/CoreVisualizations/javascripts/jqplot.js +++ b/plugins/CoreVisualizations/javascripts/jqplot.js @@ -101,7 +101,7 @@ tickOptions: { showMark: false, fontSize: '11px', - fontFamily: 'Arial' + fontFamily: window.piwik.jqplotLabelFont || 'Arial' }, rendererOptions: { drawBaseline: false @@ -860,7 +860,7 @@ RowEvolutionSeriesToggle.prototype.beforeReplot = function () { var ctx = legend.legendCanvas._ctx; ctx.save(); - ctx.font = '11px Arial'; + ctx.font = '11px ' + (window.piwik.jqplotLabelFont || 'Arial'); // render series names var x = 0; @@ -996,7 +996,7 @@ RowEvolutionSeriesToggle.prototype.beforeReplot = function () { var ctx = legend.pieLegendCanvas._ctx; ctx.save(); - ctx.font = '11px Arial'; + ctx.font = '11px ' + (window.piwik.jqplotLabelFont || 'Arial'); // render labels var height = legend.pieLegendCanvas._elem.height(); diff --git a/tests/PHPUnit/TestingEnvironment.php b/tests/PHPUnit/TestingEnvironment.php index a5b1509732b..d0f644cec8e 100644 --- a/tests/PHPUnit/TestingEnvironment.php +++ b/tests/PHPUnit/TestingEnvironment.php @@ -19,6 +19,17 @@ public static function addHooks() }); Piwik_AddAction('Config.createConfigSingleton', function($config) { $config->setTestEnvironment(); + + $pluginsToLoad = array( + "CorePluginsAdmin", "CoreAdminHome", "CoreHome", "Proxy", "API", "Widgetize", "Transitions", + "LanguagesManager", "Actions", "Dashboard", "MultiSites", "Referers", "UserSettings", "Goals", + "SEO", "UserCountry", "VisitsSummary", "VisitFrequency", "VisitTime", "VisitorInterest", + "ExampleAPI", "ExamplePlugin", "ExampleRssWidget", "Provider", "Feedback", "Login", "UsersManager", + "SitesManager", "Installation", "CoreUpdater", "PDFReports", "UserCountryMap", "Live", + "CustomVariables", "PrivacyManager", "ImageGraph", "DoNotTrack", "Annotations", "MobileMessaging", + "Overlay", "SegmentEditor", "VisitorGenerator", "DevicesDetection", "DBStats", + ); + $config->Plugins = array('Plugins' => $pluginsToLoad); }); Piwik_AddAction('FrontController.dispatch', function() { \Piwik\Plugins\CoreVisualizations\Visualizations\Cloud::$debugDisableShuffle = true; diff --git a/tests/PHPUnit/UI b/tests/PHPUnit/UI new file mode 160000 index 00000000000..4883aebca9c --- /dev/null +++ b/tests/PHPUnit/UI @@ -0,0 +1 @@ +Subproject commit 4883aebca9ccffa4f690c1b018a59b2545e60716 diff --git a/tests/PHPUnit/UI/UIIntegrationTest.php b/tests/PHPUnit/UI/UIIntegrationTest.php deleted file mode 100644 index efcc88ce577..00000000000 --- a/tests/PHPUnit/UI/UIIntegrationTest.php +++ /dev/null @@ -1,139 +0,0 @@ -compareScreenshot($name, $urlQuery); - } -} - -Test_Piwik_Integration_UIIntegrationTest::$fixture = new Test_Piwik_Fixture_ManySitesImportedLogsWithXssAttempts(); \ No newline at end of file diff --git a/tests/PHPUnit/UITest.php b/tests/PHPUnit/UITest.php index cadd50e3506..4bc4aba9a90 100644 --- a/tests/PHPUnit/UITest.php +++ b/tests/PHPUnit/UITest.php @@ -26,10 +26,8 @@ public static function createAccessInstance() public static function setUpBeforeClass() { - 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() + 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)"); @@ -51,17 +49,25 @@ public static function setUpBeforeClass() // make sure processed & expected dirs exist self::makeDirsAndLinks(); - // run slimerjs/phantomjs w/ all urls so we only invoke it once - $urls = array(); - foreach (static::getUrlsForTesting() as $testInfo) { - list($name, $urlQuery) = $testInfo; + // run slimerjs/phantomjs w/ all urls so we only invoke it once per 25 entries (travis needs + // there to be output) + $urlsToTest = static::getUrlsForTesting(); - list($processedScreenshotPath, $expectedScreenshotPath) = self::getProcessedAndExpectedScreenshotPaths($name); - $urls[] = array($processedScreenshotPath, self::getProxyUrl() . $urlQuery); + reset($urlsToTest); + for ($i = 0; $i < count($urlsToTest); $i += 25) { + $urls = array(); + for ($j = $i; $j != $i + 25 && $j < count($urlsToTest); ++$j) { + list($name, $urlQuery) = current($urlsToTest); + + list($processedScreenshotPath, $expectedScreenshotPath) = self::getProcessedAndExpectedScreenshotPaths($name); + $urls[] = array($processedScreenshotPath, self::getProxyUrl() . $urlQuery); + + next($urlsToTest); + } + + echo "Generating screenshots...\n"; + self::runCaptureProgram($urls); } - - echo "Generating screenshots...\n"; - self::runCaptureProgram($urls); } public static function tearDownAfterClass() @@ -100,7 +106,6 @@ private static function runCaptureProgram($urlInfo) { 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); $output = implode("\n", $output); @@ -140,11 +145,6 @@ private static function isPhantomJsAvailable() return self::isProgramAvailable('phantomjs'); } - private static function isXvfbAvailable() - { - return self::isProgramAvailable('xvfb-run'); - } - private static function isProgramAvailable($name) { exec($name . ' --help 2>&1', $output, $result); @@ -176,7 +176,7 @@ public static function getProxyUrl() private static function makeDirsAndLinks() { - $dirs = self::getProcessedAndExpectedDirs(); + $dirs = array_merge(self::getProcessedAndExpectedDirs(), array(PIWIK_INCLUDE_PATH . '/tmp/sessions')); foreach ($dirs as $dir) { if (!is_dir($dir)) { mkdir($dir); diff --git a/tests/resources/screenshot-capture/capture.js b/tests/resources/screenshot-capture/capture.js index d866803f70c..9a0d0a47750 100644 --- a/tests/resources/screenshot-capture/capture.js +++ b/tests/resources/screenshot-capture/capture.js @@ -2,6 +2,8 @@ var fs = require('fs'); var app = typeof slimer === 'undefined' ? phantom : slimer; var readFileSync = fs.readFileSync || fs.read; +var VERBOSE = false; + var PageRenderer = function() { this.start = new Date(); @@ -11,6 +13,9 @@ var PageRenderer = function() { this.outputPath = ''; this.url = ''; + this.webpage = require('webpage').create(); + this._setupWebpageEvents(); + this._setScriptTimeout(); }; @@ -36,32 +41,21 @@ PageRenderer.prototype = { this.webpage = require('webpage').create(); this._setupWebpageEvents(); - + this.webpage.viewportSize = {width:1350, height:768}; - var self = this; - this.webpage.open(this.url, function () { - self._setPageTimeouts(); - }); + this.webpage.open(this.url); + this._setPageTimeouts(); }, _setPageTimeouts: function () { var url = this.url, self = this; - // 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(); + console.log("__AJAX_DONE__"); }); } }, 1000 * 60); @@ -88,6 +82,18 @@ PageRenderer.prototype = { console.log("LOGGED: " + message); } }; + + if (VERBOSE) { + this.webpage.onResourceReceived = function (response) { + console.log('Response (#' + response.id + ', stage "' + response.stage + '", size "' + response.bodySize + + '", status "' + response.status + '"): ' + response.url); + }; + } + + this.webpage.onResourceError = function (resourceError) { + console.log('Unable to load resource (#' + resourceError.id + 'URL:' + resourceError.url + ')'); + console.log('Error code: ' + resourceError.errorCode + '. Description: ' + resourceError.errorString); + }; }, _renderNextUrl: function () { @@ -114,7 +120,7 @@ PageRenderer.prototype = { setTimeout(function() { console.log("ERROR: Timed out!"); app.exit(1); - }, Math.max(1000 * 15 * this.urls.length, 1000 * 60 * 5)); + }, Math.max(1000 * 15 * this.urls.length, 1000 * 60 * 10)); }, }; diff --git a/tests/resources/screenshot-override/open_sans.woff b/tests/resources/screenshot-override/open_sans.woff deleted file mode 100644 index 55b25f867099eb26c436b1c9fecff14a51290d46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21956 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 V`l^D1+v7dzXWE*Ozus}S{{vS5Z1n&D diff --git a/tests/resources/screenshot-override/open_sans_b.woff b/tests/resources/screenshot-override/open_sans_b.woff deleted file mode 100644 index 27619e7cea1c29f9d71567b78470fdd705c174dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22748 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 diff --git a/tests/resources/screenshot-override/open_sans_bi.woff b/tests/resources/screenshot-override/open_sans_bi.woff deleted file mode 100644 index e12c3a9f273c2f0e4952293bb852406c2ab1eb0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21184 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 F;UD<^W={YB diff --git a/tests/resources/screenshot-override/override.css b/tests/resources/screenshot-override/override.css index 8bc65e63d38..e77c6174f58 100644 --- a/tests/resources/screenshot-override/override.css +++ b/tests/resources/screenshot-override/override.css @@ -1,28 +1 @@ -@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 +/* empty */ \ No newline at end of file diff --git a/tests/resources/screenshot-override/override.js b/tests/resources/screenshot-override/override.js index c354d5ca132..aa3968e6868 100644 --- a/tests/resources/screenshot-override/override.js +++ b/tests/resources/screenshot-override/override.js @@ -27,7 +27,7 @@ waitForAll: true, finished: function () { // wait some more to make sure other javascript is executed & the last image is rendered - setTimeout(triggerRender, 1000); + setTimeout(triggerRender, 10000); }, }); } @@ -38,4 +38,9 @@ window.piwik.ajaxRequestFinished = triggerRenderIfNoAjax; window.piwik._triggerRenderInsane = triggerRenderInsane; + // in case there are no ajax requests, try triggering after a couple secs + setTimeout(function () { + triggerRenderIfNoAjax(); + }, 5000); + }(jQuery)); \ No newline at end of file diff --git a/tests/travis/initiate_ui_tests.sh b/tests/travis/initiate_ui_tests.sh new file mode 100755 index 00000000000..fe2035de98e --- /dev/null +++ b/tests/travis/initiate_ui_tests.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +# only initiate UI tests after integration tests for php 5.5 are completed +if [ "$TEST_SUITE" != "IntegrationTests" ] || [[ "$TRAVIS_PHP_VERSION" != 5\.5* ]]; then + echo "Not initiating UI tests (\$TEST_SUITE = $TEST_SUITE, \$TRAVIS_PHP_VERSION = $TRAVIS_PHP_VERSION)." + exit +fi + +if [ "$PIWIK_AUTOMATION" = "" ]; then + echo "Automation details are not present, skipping UI tests." + exit +fi + +git submodule update + +cd tests/PHPUnit/UI + +echo "$TRAVIS_COMMIT +$TRAVIS_BRANCH" > piwik_commit.txt + +git config --global user.email "hello@piwik.org" +git config --global user.name "Piwik Automation" + +git checkout master + +git add ./piwik_commit.txt +git commit -m "Travis: Initiating build for commit '$TRAVIS_COMMIT'." +git remote set-url origin "https://piwik-auto-commit-bot:$PIWIK_AUTOMATION@github.com/piwik/piwik-ui-tests.git" + +if ! git push origin master 2> /dev/null; then + echo "Failed to push!" + exit 1 +fi \ No newline at end of file diff --git a/tests/travis/prepare.sh b/tests/travis/prepare.sh index 04f50f03548..35b66a9c6b7 100755 --- a/tests/travis/prepare.sh +++ b/tests/travis/prepare.sh @@ -4,18 +4,11 @@ set -e # Install XMLStarlet sudo apt-get install -qq xmlstarlet -# Install phantomjs 1.9.1 for UI tests +# Install fonts 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 + sudo sh -c "echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections" + sudo apt-get install -qq ttf-mscorefonts-installer fi # Copy Piwik configuration diff --git a/tests/travis/upload_artifacts.sh b/tests/travis/upload_artifacts.sh index 84cbab9efeb..2519c53f67a 100755 --- a/tests/travis/upload_artifacts.sh +++ b/tests/travis/upload_artifacts.sh @@ -14,7 +14,7 @@ then 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" + url="http://builds-artifacts.piwik.org/upload.php?auth_key=$ARTIFACTS_PASS&artifact_name=processed-ui-screenshots&branch=ui-tests.$TRAVIS_BRANCH&build_id=$TRAVIS_JOB_NUMBER" echo "Uploading artifacts for $TEST_DIR..."