mirror of
https://github.com/niklasvh/html2canvas.git
synced 2023-08-10 21:13:10 +03:00
webdriver grunt task
This commit is contained in:
parent
630bed968e
commit
05f3af4901
16
grunt.js
16
grunt.js
@ -13,7 +13,7 @@ module.exports = function(grunt) {
|
|||||||
post: '})(window,document);'
|
post: '})(window,document);'
|
||||||
},
|
},
|
||||||
lint: {
|
lint: {
|
||||||
files: ['grunt.js', 'build/<%= pkg.name %>.js']
|
files: ['build/<%= pkg.name %>.js']
|
||||||
},
|
},
|
||||||
qunit: {
|
qunit: {
|
||||||
files: ['tests/qunit/index.html']
|
files: ['tests/qunit/index.html']
|
||||||
@ -55,7 +55,19 @@ module.exports = function(grunt) {
|
|||||||
uglify: {}
|
uglify: {}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var selenium = require("./tests/selenium.js");
|
||||||
|
grunt.registerTask('webdriver', 'Browser render tests', function(arg1) {
|
||||||
|
|
||||||
|
var done = this.async();
|
||||||
|
|
||||||
|
if (arguments.length === 0) {
|
||||||
|
selenium.tests();
|
||||||
|
} else if (arg1 === "baseline") {
|
||||||
|
selenium.baseline();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// Default task.
|
// Default task.
|
||||||
grunt.registerTask('default', 'concat lint qunit min');
|
grunt.registerTask('default', 'concat lint qunit webdriver min');
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
function createServer(port) {
|
function createServer(port) {
|
||||||
return http.createServer(function(request, response) {
|
return http.createServer(function(request, response) {
|
||||||
var uri = url.parse(request.url).pathname,
|
var uri = url.parse(request.url).pathname,
|
||||||
filename = path.join(process.cwd(), "../" + uri);
|
filename = path.join(process.cwd(), uri);
|
||||||
|
|
||||||
fs.exists(filename, function(exists) {
|
fs.exists(filename, function(exists) {
|
||||||
if(!exists) {
|
if(!exists) {
|
||||||
@ -73,9 +73,15 @@
|
|||||||
(new PNG(arraybuffer)).decode(func);
|
(new PNG(arraybuffer)).decode(func);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getBaselineFiles() {
|
||||||
|
return fs.readdirSync("tests/results/").filter(function(name) {
|
||||||
|
return /\.baseline$/.test(name);
|
||||||
|
}).map(function(item) {
|
||||||
|
return "tests/results/" + item;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function testPage(browser, url, done) {
|
function testPage(browser, url, done) {
|
||||||
|
|
||||||
browser.url(url)
|
browser.url(url)
|
||||||
.$(".html2canvas", 5000, function(){
|
.$(".html2canvas", 5000, function(){
|
||||||
this.execute(function(){
|
this.execute(function(){
|
||||||
@ -105,7 +111,7 @@
|
|||||||
|
|
||||||
var openResultFile = function(stats, browser) {
|
var openResultFile = function(stats, browser) {
|
||||||
var tests = stats[browser].tests,
|
var tests = stats[browser].tests,
|
||||||
filename = "results/" + browser + ".json",
|
filename = "tests/results/" + browser + ".json",
|
||||||
write = writeResultFile.bind(null, filename, JSON.stringify(stats[browser]));
|
write = writeResultFile.bind(null, filename, JSON.stringify(stats[browser]));
|
||||||
|
|
||||||
fs.exists(filename, function(exists) {
|
fs.exists(filename, function(exists) {
|
||||||
@ -118,44 +124,53 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
var setColor = function(color, text) {
|
var setColor = function(color, text) {
|
||||||
return color + text.amount + "% " + text.test;
|
return [color, " * ", ((isNaN(text.amount)) ? "NEW" : text.amount + "%"), " ", text.test].join("");
|
||||||
};
|
};
|
||||||
|
|
||||||
var parseResultFile = function(tests, browser, createResultFile, err, file) {
|
var parseResultFile = function(tests, browser, createResultFile, err, file) {
|
||||||
if (err) throw err;
|
if (err) throw err;
|
||||||
var data = JSON.parse(file),
|
var data = JSON.parse(file),
|
||||||
improved = [],
|
improved = [],
|
||||||
|
regressed = [],
|
||||||
|
newItems = [],
|
||||||
colors = {
|
colors = {
|
||||||
red: "\x1b[1;31m",
|
red: "\x1b[1;31m",
|
||||||
|
blue: "\x1b[1;36m",
|
||||||
|
violet: "\x1b[0;35m",
|
||||||
green: "\x1b[0;32m"
|
green: "\x1b[0;32m"
|
||||||
},
|
};
|
||||||
regressed = [];
|
|
||||||
|
|
||||||
Object.keys(tests).forEach(function(test){
|
Object.keys(tests).forEach(function(test){
|
||||||
var testResult = tests[test],
|
var testResult = tests[test],
|
||||||
dataResult = data.tests[test],
|
dataResult = data.tests[test],
|
||||||
dataObject = {
|
dataObject = {
|
||||||
amount: testResult - dataResult,
|
amount: (Math.abs(testResult - dataResult) < 0.02) ? 0 : testResult - dataResult,
|
||||||
test: test
|
test: test
|
||||||
};
|
};
|
||||||
|
|
||||||
if (testResult > dataResult) {
|
if (dataObject.amount > 0) {
|
||||||
improved.push(dataObject);
|
improved.push(dataObject);
|
||||||
} else if (testResult < dataResult) {
|
} else if (dataObject.amount < 0) {
|
||||||
regressed.push(dataObject);
|
regressed.push(dataObject);
|
||||||
|
} else if (dataResult === undefined) {
|
||||||
|
newItems.push(dataObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if (improved.length > 0 || regressed.length > 0) {
|
if (newItems.length > 0 || improved.length > 0 || regressed.length > 0) {
|
||||||
if (regressed.length === 0) {
|
if (regressed.length === 0) {
|
||||||
createResultFile(".baseline");
|
createResultFile(".baseline");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log(colors.violet, "********************");
|
||||||
console.log((regressed.length > 0) ? colors.red : colors.green, browser);
|
console.log((regressed.length > 0) ? colors.red : colors.green, browser);
|
||||||
|
|
||||||
improved.map(setColor.bind(null, colors.green)).concat(regressed.map(setColor.bind(null, colors.red))).forEach(function(item) {
|
improved.map(setColor.bind(null, colors.green))
|
||||||
console.log(" *", item);
|
.concat(regressed.map(setColor.bind(null, colors.red)))
|
||||||
|
.concat(newItems.map(setColor.bind(null, colors.blue)))
|
||||||
|
.forEach(function(item) {
|
||||||
|
console.log(item);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -202,7 +217,7 @@
|
|||||||
|
|
||||||
function processPage(index) {
|
function processPage(index) {
|
||||||
var page = pages[index++];
|
var page = pages[index++];
|
||||||
testPage(browser, "http://localhost:" + port + "/tests/" + page + "?selenium", function(result) {
|
testPage(browser, "http://localhost:" + port + "/" + page + "?selenium", function(result) {
|
||||||
if (numPages > index) {
|
if (numPages > index) {
|
||||||
processPage(index);
|
processPage(index);
|
||||||
} else {
|
} else {
|
||||||
@ -215,9 +230,20 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
walkDir("cases", function(err, results) {
|
exports.tests = function() {
|
||||||
if (err) throw err;
|
getBaselineFiles().forEach(fs.unlinkSync.bind(fs));
|
||||||
runBrowsers(results.slice(0, 2));
|
walkDir("tests/cases", function(err, results) {
|
||||||
});
|
if (err) throw err;
|
||||||
|
runBrowsers(results);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.baseline = function() {
|
||||||
|
getBaselineFiles().forEach(function(file) {
|
||||||
|
var newName = file.substring(0, file.length - 9);
|
||||||
|
fs.renameSync(file, newName);
|
||||||
|
console.log(newName, "created");
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
})();
|
})();
|
Loading…
x
Reference in New Issue
Block a user