UNPKG

jsperf-img-svc

Version:

A simple micro service for loading jsperf result charts as a static image

56 lines (53 loc) 1.3 kB
'use strict'; 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(); }); });