UNPKG

skutter

Version:

Skutter: Opinionated BDD Browser based test framework

38 lines (37 loc) 1.46 kB
"use strict"; const fs = require("fs"); const path = require("path"); const new_guid_1 = require("./new-guid"); const directory_maker_1 = require("./directory-maker"); class Screenshotter { constructor(baseDirectory) { this.baseDirectory = null; if (!baseDirectory) { throw new Error("Screenshotter initialised without setting the base directory."); } this.baseDirectory = baseDirectory; } saveScreenshot(base64Png, featureId) { let browserName = "Chrome"; let shortDate = getCurrentDateShort(); let sanitizedFilename = new_guid_1.newGuid(); let screenshotPath = path.resolve(this.baseDirectory, "screenshots", `${shortDate}`, `${browserName}`, `${featureId}`); let screenshotFilename = path.join(`${screenshotPath}`, `${sanitizedFilename}.png`); directory_maker_1.DirectoryMaker.makePath(screenshotFilename); writeScreenShot(base64Png, screenshotFilename); return screenshotFilename; } } exports.Screenshotter = Screenshotter; function writeScreenShot(data, filename) { let stream = fs.createWriteStream(filename); stream.write(new Buffer(data, "base64")); stream.end(); } function getCurrentDateShort() { let month = new Date().getMonth() + 1; let paddedMonth = (month < 10 ? "0" : "") + month; let day = new Date().getDate(); let paddedDay = (day < 10 ? "0" : "") + day; return paddedMonth + paddedDay; }