html2canvas/tests/utils.js

67 lines
1.8 KiB
JavaScript

var fs = require('fs');
var wd = require('wd');
var path = require('path');
var Promise = require('bluebird');
var _ = require('lodash');
Promise.promisifyAll(fs);
var colors = {
red: "\x1b[1;31m",
blue: "\x1b[1;36m",
violet: "\x1b[0;35m",
green: "\x1b[0;32m",
clear: "\x1b[0m"
};
function isHtmlFile(filename) {
return path.extname(filename) === '.html';
}
function getTests(path) {
return fs.readdirAsync(path).map(function(name) {
var filename = path + "/" + name;
return fs.statAsync(filename).then(function(stat) {
return stat.isDirectory() ? getTests(filename) : filename;
});
}).then(function(t) {
return _.flatten(t).filter(isHtmlFile);
});
}
function initBrowser(settings) {
var browser = wd.remote({
hostname: 'localhost',
port: 4445,
user: process.env.SAUCE_USERNAME,
pwd: process.env.SAUCE_ACCESS_KEY
}, 'promiseChain');
if (process.env.TRAVIS_JOB_NUMBER) {
settings["tunnel-identifier"] = process.env.TRAVIS_JOB_NUMBER;
settings["name"] = process.env.TRAVIS_COMMIT.substring(0, 10);
settings["build"] = process.env.TRAVIS_BUILD_NUMBER;
} else {
settings["name"] = "Manual run";
}
return browser.resolve(Promise).init(settings).then(function(b) {
return Promise.resolve(b).disposer(function() {
return browser.quit();
});
});
}
function loadTestPage(browser, test, port) {
return function(settings) {
return browser.get("http://localhost:" + port + "/" + test + "?selenium").then(function() {
return settings;
});
};
}
module.exports.colors = colors;
module.exports.getTests = getTests;
module.exports.initBrowser = initBrowser;
module.exports.loadTestPage = loadTestPage;