skutter
Version:
Skutter: Opinionated BDD Browser based test framework
38 lines (37 loc) • 1.46 kB
JavaScript
;
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;
}