UNPKG

kitchensink

Version:

Dispatch's awesome components and style guide

84 lines (63 loc) 2.38 kB
'use strict'; 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(); }