@browserstack/testcafe
Version:
Automated browser testing for the modern web development stack.
69 lines • 8.94 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const lodash_1 = require("lodash");
const moment_1 = __importDefault(require("moment"));
const capturer_1 = __importDefault(require("./capturer"));
const path_pattern_1 = __importDefault(require("../utils/path-pattern"));
const get_common_path_1 = __importDefault(require("../utils/get-common-path"));
const SCREENSHOT_EXTENSION = 'png';
class Screenshots {
constructor({ enabled, path, pathPattern, fullPage }) {
this.enabled = enabled;
this.screenshotsPath = path;
this.screenshotsPattern = pathPattern;
this.fullPage = fullPage;
this.testEntries = [];
this.now = moment_1.default();
}
_addTestEntry(test) {
const testEntry = {
test: test,
testRuns: {},
screenshots: []
};
this.testEntries.push(testEntry);
return testEntry;
}
_getTestEntry(test) {
return lodash_1.find(this.testEntries, entry => entry.test === test);
}
_ensureTestEntry(test) {
let testEntry = this._getTestEntry(test);
if (!testEntry)
testEntry = this._addTestEntry(test);
return testEntry;
}
getScreenshotsInfo(test) {
return this._getTestEntry(test).screenshots;
}
hasCapturedFor(test) {
return this.getScreenshotsInfo(test).length > 0;
}
getPathFor(test) {
const testEntry = this._getTestEntry(test);
const screenshotPaths = testEntry.screenshots.map(screenshot => screenshot.screenshotPath);
return get_common_path_1.default(screenshotPaths);
}
createCapturerFor(test, testIndex, quarantine, connection, warningLog) {
const testEntry = this._ensureTestEntry(test);
const pathPattern = new path_pattern_1.default(this.screenshotsPattern, SCREENSHOT_EXTENSION, {
testIndex,
quarantineAttempt: quarantine ? quarantine.getNextAttemptNumber() : null,
now: this.now,
fixture: test.fixture.name,
test: test.name,
parsedUserAgent: connection.browserInfo.parsedUserAgent,
});
return new capturer_1.default(this.screenshotsPath, testEntry, connection, pathPattern, this.fullPage, warningLog);
}
addTestRun(test, testRun) {
const testEntry = this._getTestEntry(test);
testEntry.testRuns[testRun.browserConnection.id] = testRun;
}
}
exports.default = Screenshots;
module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyZWVuc2hvdHMvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBOEI7QUFDOUIsb0RBQTRCO0FBQzVCLDBEQUFrQztBQUNsQyx5RUFBZ0Q7QUFDaEQsK0VBQXFEO0FBRXJELE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0FBRW5DLE1BQXFCLFdBQVc7SUFDNUIsWUFBYSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRTtRQUNqRCxJQUFJLENBQUMsT0FBTyxHQUFjLE9BQU8sQ0FBQztRQUNsQyxJQUFJLENBQUMsZUFBZSxHQUFNLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQWEsUUFBUSxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLEdBQVUsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxHQUFHLEdBQWtCLGdCQUFNLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsYUFBYSxDQUFFLElBQUk7UUFDZixNQUFNLFNBQVMsR0FBRztZQUNkLElBQUksRUFBUyxJQUFJO1lBQ2pCLFFBQVEsRUFBSyxFQUFFO1lBQ2YsV0FBVyxFQUFFLEVBQUU7U0FDbEIsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWpDLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxhQUFhLENBQUUsSUFBSTtRQUNmLE9BQU8sYUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBRSxJQUFJO1FBQ2xCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekMsSUFBSSxDQUFDLFNBQVM7WUFDVixTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6QyxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQsa0JBQWtCLENBQUUsSUFBSTtRQUNwQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ2hELENBQUM7SUFFRCxjQUFjLENBQUUsSUFBSTtRQUNoQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxVQUFVLENBQUUsSUFBSTtRQUNaLE1BQU0sU0FBUyxHQUFTLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFM0YsT0FBTyx5QkFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxpQkFBaUIsQ0FBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtRQUNsRSxNQUFNLFNBQVMsR0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxzQkFBVyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRTtZQUMvRSxTQUFTO1lBQ1QsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUN4RSxHQUFHLEVBQWdCLElBQUksQ0FBQyxHQUFHO1lBQzNCLE9BQU8sRUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7WUFDcEMsSUFBSSxFQUFlLElBQUksQ0FBQyxJQUFJO1lBQzVCLGVBQWUsRUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLGVBQWU7U0FDNUQsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLGtCQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFRCxVQUFVLENBQUUsSUFBSSxFQUFFLE9BQU87UUFDckIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzQyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUM7SUFDL0QsQ0FBQztDQUNKO0FBckVELDhCQXFFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbmQgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IENhcHR1cmVyIGZyb20gJy4vY2FwdHVyZXInO1xuaW1wb3J0IFBhdGhQYXR0ZXJuIGZyb20gJy4uL3V0aWxzL3BhdGgtcGF0dGVybic7XG5pbXBvcnQgZ2V0Q29tbW9uUGF0aCBmcm9tICcuLi91dGlscy9nZXQtY29tbW9uLXBhdGgnO1xuXG5jb25zdCBTQ1JFRU5TSE9UX0VYVEVOU0lPTiA9ICdwbmcnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY3JlZW5zaG90cyB7XG4gICAgY29uc3RydWN0b3IgKHsgZW5hYmxlZCwgcGF0aCwgcGF0aFBhdHRlcm4sIGZ1bGxQYWdlIH0pIHtcbiAgICAgICAgdGhpcy5lbmFibGVkICAgICAgICAgICAgPSBlbmFibGVkO1xuICAgICAgICB0aGlzLnNjcmVlbnNob3RzUGF0aCAgICA9IHBhdGg7XG4gICAgICAgIHRoaXMuc2NyZWVuc2hvdHNQYXR0ZXJuID0gcGF0aFBhdHRlcm47XG4gICAgICAgIHRoaXMuZnVsbFBhZ2UgICAgICAgICAgID0gZnVsbFBhZ2U7XG4gICAgICAgIHRoaXMudGVzdEVudHJpZXMgICAgICAgID0gW107XG4gICAgICAgIHRoaXMubm93ICAgICAgICAgICAgICAgID0gbW9tZW50KCk7XG4gICAgfVxuXG4gICAgX2FkZFRlc3RFbnRyeSAodGVzdCkge1xuICAgICAgICBjb25zdCB0ZXN0RW50cnkgPSB7XG4gICAgICAgICAgICB0ZXN0OiAgICAgICAgdGVzdCxcbiAgICAgICAgICAgIHRlc3RSdW5zOiAgICB7fSxcbiAgICAgICAgICAgIHNjcmVlbnNob3RzOiBbXVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMudGVzdEVudHJpZXMucHVzaCh0ZXN0RW50cnkpO1xuXG4gICAgICAgIHJldHVybiB0ZXN0RW50cnk7XG4gICAgfVxuXG4gICAgX2dldFRlc3RFbnRyeSAodGVzdCkge1xuICAgICAgICByZXR1cm4gZmluZCh0aGlzLnRlc3RFbnRyaWVzLCBlbnRyeSA9PiBlbnRyeS50ZXN0ID09PSB0ZXN0KTtcbiAgICB9XG5cbiAgICBfZW5zdXJlVGVzdEVudHJ5ICh0ZXN0KSB7XG4gICAgICAgIGxldCB0ZXN0RW50cnkgPSB0aGlzLl9nZXRUZXN0RW50cnkodGVzdCk7XG5cbiAgICAgICAgaWYgKCF0ZXN0RW50cnkpXG4gICAgICAgICAgICB0ZXN0RW50cnkgPSB0aGlzLl9hZGRUZXN0RW50cnkodGVzdCk7XG5cbiAgICAgICAgcmV0dXJuIHRlc3RFbnRyeTtcbiAgICB9XG5cbiAgICBnZXRTY3JlZW5zaG90c0luZm8gKHRlc3QpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFRlc3RFbnRyeSh0ZXN0KS5zY3JlZW5zaG90cztcbiAgICB9XG5cbiAgICBoYXNDYXB0dXJlZEZvciAodGVzdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRTY3JlZW5zaG90c0luZm8odGVzdCkubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBnZXRQYXRoRm9yICh0ZXN0KSB7XG4gICAgICAgIGNvbnN0IHRlc3RFbnRyeSAgICAgICA9IHRoaXMuX2dldFRlc3RFbnRyeSh0ZXN0KTtcbiAgICAgICAgY29uc3Qgc2NyZWVuc2hvdFBhdGhzID0gdGVzdEVudHJ5LnNjcmVlbnNob3RzLm1hcChzY3JlZW5zaG90ID0+IHNjcmVlbnNob3Quc2NyZWVuc2hvdFBhdGgpO1xuXG4gICAgICAgIHJldHVybiBnZXRDb21tb25QYXRoKHNjcmVlbnNob3RQYXRocyk7XG4gICAgfVxuXG4gICAgY3JlYXRlQ2FwdHVyZXJGb3IgKHRlc3QsIHRlc3RJbmRleCwgcXVhcmFudGluZSwgY29ubmVjdGlvbiwgd2FybmluZ0xvZykge1xuICAgICAgICBjb25zdCB0ZXN0RW50cnkgICA9IHRoaXMuX2Vuc3VyZVRlc3RFbnRyeSh0ZXN0KTtcbiAgICAgICAgY29uc3QgcGF0aFBhdHRlcm4gPSBuZXcgUGF0aFBhdHRlcm4odGhpcy5zY3JlZW5zaG90c1BhdHRlcm4sIFNDUkVFTlNIT1RfRVhURU5TSU9OLCB7XG4gICAgICAgICAgICB0ZXN0SW5kZXgsXG4gICAgICAgICAgICBxdWFyYW50aW5lQXR0ZW1wdDogcXVhcmFudGluZSA/IHF1YXJhbnRpbmUuZ2V0TmV4dEF0dGVtcHROdW1iZXIoKSA6IG51bGwsXG4gICAgICAgICAgICBub3c6ICAgICAgICAgICAgICAgdGhpcy5ub3csXG4gICAgICAgICAgICBmaXh0dXJlOiAgICAgICAgICAgdGVzdC5maXh0dXJlLm5hbWUsXG4gICAgICAgICAgICB0ZXN0OiAgICAgICAgICAgICAgdGVzdC5uYW1lLFxuICAgICAgICAgICAgcGFyc2VkVXNlckFnZW50OiAgIGNvbm5lY3Rpb24uYnJvd3NlckluZm8ucGFyc2VkVXNlckFnZW50LFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbmV3IENhcHR1cmVyKHRoaXMuc2NyZWVuc2hvdHNQYXRoLCB0ZXN0RW50cnksIGNvbm5lY3Rpb24sIHBhdGhQYXR0ZXJuLCB0aGlzLmZ1bGxQYWdlLCB3YXJuaW5nTG9nKTtcbiAgICB9XG5cbiAgICBhZGRUZXN0UnVuICh0ZXN0LCB0ZXN0UnVuKSB7XG4gICAgICAgIGNvbnN0IHRlc3RFbnRyeSA9IHRoaXMuX2dldFRlc3RFbnRyeSh0ZXN0KTtcblxuICAgICAgICB0ZXN0RW50cnkudGVzdFJ1bnNbdGVzdFJ1bi5icm93c2VyQ29ubmVjdGlvbi5pZF0gPSB0ZXN0UnVuO1xuICAgIH1cbn1cbiJdfQ==