jsperf-img-svc
Version:
A simple micro service for loading jsperf result charts as a static image
56 lines (53 loc) • 1.3 kB
JavaScript
var
_ = require('lodash'),
Promise = require('bluebird'),
webpage = require('webpage'),
system = require('system'),
config = JSON.parse(system.args[1]),
url = system.args[2],
page = _.assign(webpage.create(), {
onConsoleMessage: function(msg){
console.log(msg);
},
viewportSize: {width: 1420, height: 660}
});
page.open(url, function(){
(function getChart(){
return Promise
.resolve()
.then(function(){
return page.evaluate(function(selector){
return document.querySelectorAll(selector);
}, config.selector);
})
.then(function(result){
var hasChildren = result.length && page.evaluate(function(svg){
return svg.childElementCount > 0;
}, result[0]);
if (!hasChildren) {
return new Promise(function(resolve, reject){
setTimeout(resolve, 100);
})
.then(function(){
return getChart();
});
}
});
}())
.then(function(){
var data = page.evaluate(function(selector){
var svg = document.querySelector(selector);
var bcr = svg.getBoundingClientRect();
return {
width: bcr.width,
height: bcr.height,
data: new XMLSerializer().serializeToString(svg)
};
}, config.selector);
console.log(JSON.stringify(data));
})
.finally(function(){
phantom.exit();
});
});
;