diff --git a/addons/website/static/src/js/website.tour.js b/addons/website/static/src/js/website.tour.js index 4285656e39a..25d8ac89a12 100644 --- a/addons/website/static/src/js/website.tour.js +++ b/addons/website/static/src/js/website.tour.js @@ -75,9 +75,8 @@ website.Tour = openerp.Class.extend({ website.Tour.busy = true; - if (automatic) { - this.localStorage.setItem("tour-"+this.id+"-test-automatic", true); - } + this.localStorage.setItem("tour-"+this.id+"-test-automatic", automatic); + this.automatic = automatic; if (this.path) { // redirect to begin of the tour in function of the language @@ -93,12 +92,13 @@ website.Tour = openerp.Class.extend({ website.Tour.waitReady.call(this, function () {self._running();}); }, running: function () { + var self = this; if (+this.localStorage.getItem("tour-"+this.id+"-test") >= this.steps.length-1) { this.endTour(); return; } - if (website.Tour.is_busy() || !this.testPathUrl()) return; + if (website.Tour.is_busy()) return; // launch tour with url this.checkRunningUrl(); @@ -106,6 +106,21 @@ website.Tour = openerp.Class.extend({ // mark tour as busy (only one test running) if (this.localStorage.getItem("tour-"+this.id+"-test") != null) { website.Tour.busy = true; + this.automatic = !!this.localStorage.getItem("tour-"+this.id+"-test-automatic"); + } + + if (!this.testPathUrl()) { + if (this.automatic) { + this.timer = setTimeout(function () { + self.reset(); + throw new Error("Wrong url for running " + self.id + + '\ntestPath: ' + self.testPath + + '\nhref: ' + window.location.href + + "\nreferrer: " + document.referrer + ); + },this.defaultOverLaps); + } + return; } var self = this; @@ -115,7 +130,6 @@ website.Tour = openerp.Class.extend({ var stepId = this.localStorage.getItem("tour-"+this.id+"-test"); if (stepId != null) { - this.automatic = !!this.localStorage.getItem("tour-"+this.id+"-test-automatic"); this.registerTour(); this.nextStep(stepId, this.automatic ? this.autoNextStep : null, this.automatic ? this.defaultOverLaps : null); } diff --git a/addons/website/tests/test_ui.py b/addons/website/tests/test_ui.py index a9c807689da..3c30dc8a762 100644 --- a/addons/website/tests/test_ui.py +++ b/addons/website/tests/test_ui.py @@ -41,7 +41,7 @@ class WebsiteUiSuite(unittest.TestSuite): # timeout in seconds def __init__(self, testfile, options, timeout=60.0): self._testfile = testfile - self._timeout = timeout + self._timeout = timeout + 5.0 self._options = options self._test = None self._ignore_filters = [ diff --git a/addons/website/tests/ui_suite/ui_test_runner.js b/addons/website/tests/ui_suite/ui_test_runner.js index dd023ee8081..f759ea69572 100644 --- a/addons/website/tests/ui_suite/ui_test_runner.js +++ b/addons/website/tests/ui_suite/ui_test_runner.js @@ -20,11 +20,9 @@ function waitFor (ready, callback, timeout, timeoutMessageCallback) { } function run (test, onload, inject) { - try { - var options = JSON.parse(phantom.args); - var timeout = options.timeout ? Math.round(parseFloat(options.timeout)*1000) : 60000; + var timeout = options.timeout ? Math.round(parseFloat(options.timeout)*1000-5000) : 60000; var scheme = options.scheme ? options.scheme+'://' : 'http://'; var host = options.host ? options.host : 'localhost'; @@ -96,14 +94,14 @@ function run (test, onload, inject) { var maxRetries = 10; var retryDelay = 1000; // ms - var tries = 0; + var tries = 0; page.open(url, function openPage (status) { if (status !== 'success') { tries++; if (tries < maxRetries) { - setTimeout(function () { - page.open(url, openPage); - }, retryDelay); + setTimeout(function () { + page.open(url, openPage); + }, retryDelay); } else { console.log('{ "event": "error", "message": "'+url+' failed to load '+tries+' times ('+status+')"}'); phantom.exit(1); @@ -116,15 +114,19 @@ function run (test, onload, inject) { }); - } catch (e) { - console.error("Error in run:", e); - phantom.exit(1); - } + setTimeout(function () { + page.evaluate(function (timeout) { + var message = ("Timeout after " +(timeout/1000)+ " s" + + "\nhref: " + window.location.href + + "\nreferrer: " + document.referrer + + "\n\n" + document.body.innerHTML).replace(/[^a-z0-9\s~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, "*"); + console.log(JSON.stringify({ "event": "error", "message": message})); + phantom.exit(1); + },timeout); + }, timeout); } function run_test (testname, options) { - try { - options = options || {}; run( function start (page, timeout) { @@ -146,11 +148,6 @@ function run_test (testname, options) { }, options.inject || null ); - - } catch (e) { - console.error("Error in run_test:", e); - phantom.exit(1); - } } module.exports = {