|
|
|
/* global process */
|
|
|
|
var WebDriver = require("selenium-webdriver");
|
|
|
|
var nThen = require('nthen');
|
|
|
|
|
|
|
|
if (process.env.TRAVIS_PULL_REQUEST && process.env.TRAVIS_PULL_REQUEST !== 'false') {
|
|
|
|
// We can't do saucelabs on pull requests so don't fail.
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
// https://wiki.saucelabs.com/display/DOCS/Platform+Configurator#/
|
|
|
|
var driver;
|
|
|
|
if (process.env.SAUCE_USERNAME !== undefined) {
|
|
|
|
var browserArray = process.env.BROWSER.split(':');
|
|
|
|
driver = new WebDriver.Builder().usingServer(
|
|
|
|
'http://'+ process.env.SAUCE_USERNAME+':'+process.env.SAUCE_ACCESS_KEY+'@ondemand.saucelabs.com:80/wd/hub'
|
|
|
|
).withCapabilities({
|
|
|
|
"tunnel-identifier": process.env.TRAVIS_JOB_NUMBER,
|
|
|
|
"build": process.env.TRAVIS_JOB_NUMBER,
|
|
|
|
"username": process.env.SAUCE_USERNAME,
|
|
|
|
"accessKey": process.env.SAUCE_ACCESS_KEY,
|
|
|
|
}).forBrowser(browserArray[0], browserArray[1], browserArray[2]).build();
|
|
|
|
} else {
|
|
|
|
driver = new WebDriver.Builder().withCapabilities({
|
|
|
|
browserName: process.env.BROWSER || "chrome"
|
|
|
|
}).build();
|
|
|
|
}
|
|
|
|
|
|
|
|
var SC_GET_DATA = "return (window.__CRYPTPAD_TEST__) ? window.__CRYPTPAD_TEST__.getData() : '[]'";
|
|
|
|
|
|
|
|
var failed = false;
|
|
|
|
var nt = nThen(function (waitFor) {
|
|
|
|
driver.get('http://localhost:3000/auth/').then(waitFor());
|
|
|
|
}).nThen(function (waitFor) {
|
|
|
|
console.log('initialized');
|
|
|
|
driver.manage().addCookie({name: 'test', value: 'auto'}).then(waitFor());
|
|
|
|
}).nThen;
|
|
|
|
|
|
|
|
[
|
|
|
|
['/register/', {}],
|
|
|
|
['/assert/', {}],
|
|
|
|
['/auth/', {}],
|
|
|
|
|
|
|
|
['/pad/#/1/edit/1KXFMz5L+nLgvHqXVJjyiQ/IUAE6IzVVg5UIYFOPglmVxvV/', {}],
|
|
|
|
['/pad/#/1/view/1KXFMz5L+nLgvHqXVJjyiQ/O4kuSnJyviGVlz3qpcr4Fxc8fIK6uTeB30MfMkh86O8/', {}],
|
|
|
|
|
|
|
|
['/code/#/1/edit/CWtkq8Qa2re7W1XvXZRDYg/2G7Gse5UZ8dLyGAXUdCV2fLL/', {}],
|
|
|
|
['/code/#/1/view/CWtkq8Qa2re7W1XvXZRDYg/G1pVa1EL26JRAjk28b43W7Ftc3AkdBblef1U58F3iDk/', {}],
|
|
|
|
|
|
|
|
['/slide/#/1/edit/uwKqgj8Ezh2dRaFUWSlrRQ/JkJtAb-hNzfESZEHreAeULU1/', {}],
|
|
|
|
['/slide/#/1/view/uwKqgj8Ezh2dRaFUWSlrRQ/Xa8jXl+jWMpwep41mlrhkqbRuVKGxlueH80Pbgeu5Go/', {}],
|
|
|
|
|
|
|
|
['/poll/#/1/edit/lHhnKHSs0HBsl2UGfSJoLw/ZXSsAq4BORIixuFaLVBFcxoq/', {}],
|
|
|
|
['/poll/#/1/view/lHhnKHSs0HBsl2UGfSJoLw/TGul8PhswwLh1klHpBto6yEntWtKES2+tetYrrYec4M/', {}]
|
|
|
|
|
|
|
|
].forEach(function (x) {
|
|
|
|
if (failed) { return; }
|
|
|
|
var url = 'http://localhost:3000' + x[0];
|
|
|
|
nt = nt(function (waitFor) {
|
|
|
|
var done = waitFor();
|
|
|
|
console.log('\n\n-----TEST ' + url + ' -----');
|
|
|
|
var waitTo = setTimeout(function () {
|
|
|
|
console.log("no report in 20 seconds, timing out");
|
|
|
|
failed = true;
|
|
|
|
done();
|
|
|
|
done = undefined;
|
|
|
|
}, 20000);
|
|
|
|
var logMore = function () {
|
|
|
|
if (!done) { return; }
|
|
|
|
driver.executeScript(SC_GET_DATA).then(waitFor(function (dataS) {
|
|
|
|
if (!done) { return; }
|
|
|
|
var data = JSON.parse(dataS);
|
|
|
|
data.forEach(function (d) {
|
|
|
|
if (d.type !== 'log') { return; }
|
|
|
|
console.log('>' + d.val);
|
|
|
|
});
|
|
|
|
data.forEach(function (d) {
|
|
|
|
if (d.type !== 'report') { return; }
|
|
|
|
console.log('RESULT: ' + d.val);
|
|
|
|
if (d.val !== 'passed') {
|
|
|
|
if (d.error) {
|
|
|
|
console.log(d.error.message);
|
|
|
|
console.log(d.error.stack);
|
|
|
|
}
|
|
|
|
failed = true;
|
|
|
|
}
|
|
|
|
clearTimeout(waitTo);
|
|
|
|
console.log('-----END TEST ' + url + ' -----');
|
|
|
|
done();
|
|
|
|
done = undefined;
|
|
|
|
});
|
|
|
|
if (done) { setTimeout(logMore, 50); }
|
|
|
|
}));
|
|
|
|
};
|
|
|
|
driver.manage().addCookie({
|
|
|
|
name: 'test',
|
|
|
|
value: encodeURIComponent(JSON.stringify({ test:'auto', opts: x[1] }))
|
|
|
|
});
|
|
|
|
driver.get(url).then(waitFor(logMore));
|
|
|
|
}).nThen;
|
|
|
|
});
|
|
|
|
|
|
|
|
nt(function (waitFor) {
|
|
|
|
driver.quit().then(waitFor(function () {
|
|
|
|
if (failed) { process.exit(100); }
|
|
|
|
}));
|
|
|
|
});
|