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
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();
// 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;
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);
}
}
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';
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);
});
- } 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) {
},
options.inject || null
);
-
- } catch (e) {
- console.error("Error in run_test:", e);
- phantom.exit(1);
- }
}
module.exports = {