kitchensink
Version:
Dispatch's awesome components and style guide
84 lines (63 loc) • 2.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = screenshot;
var _nightmare = require('nightmare');
var _nightmare2 = _interopRequireDefault(_nightmare);
var _child_process = require('child_process');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function screenshot(options) {
//const server = spawn('npm', ['start'], { cwd: process.cwd() });
var nightmare = (0, _nightmare2.default)({ show: true }).wait(5000);
var outputDirectory = options.output || './screenshots';
console.log(outputDirectory)
function log(value) {
process.stdout.clearLine();
process.stdout.cursorTo(0);
process.stdout.write(value);
}
var components = ['Scroll List'];
function takeScreenshots(componentsToScreenshot, callback) {
var componentName = componentsToScreenshot.pop();
nightmare.goto('http://localhost:9000/components/' + encodeURIComponent(componentName)).viewport(2000, 2000).wait('.sandbox').evaluate(function () {
var sandboxElement = document.getElementsByClassName('sandbox')[0];
var component = sandboxElement.childNodes[1];
return {
x: component.offsetLeft + sandboxElement.offsetLeft,
y: component.offsetTop + sandboxElement.offsetTop,
width: component.offsetWidth,
height: component.offsetHeight
};
}).then(function (clipRegion) {
return nightmare.screenshot(outputDirectory + '/' + componentName + '.png', clipRegion);
}).then(function () {
if (componentsToScreenshot.length >= 1) {
log(componentsToScreenshot.length + ' screenshots left');
takeScreenshots(componentsToScreenshot, callback);
} else {
callback();
}
}).catch(callback);
}
function start() {
log('Loading...');
nightmare.wait(5000).goto('http://localhost:9000').then(function () {
log('Starting screenshots');
takeScreenshots(components, function (error) {
nightmare.end();
//server.kill('SIGHUP');
if (error) {
log('There was an error: ' + error + '\n');
} else {
log('Finished taking screenshots!\n');
}
process.exit();
});
}).catch(function () {
console.log('this is an error');
setTimeout(start, 1000);
});
}
start();
}