UNPKG

testcafe

Version:

Automated browser testing for the modern web development stack.

71 lines 9.73 kB
"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 default_extension_1 = __importDefault(require("./default-extension")); class Screenshots { constructor({ enabled, path, pathPattern, pathPatternOnFails, fullPage, thumbnails }) { this.enabled = enabled; this.screenshotsPath = path; this.screenshotsPattern = pathPattern; this.screenshotsPatternOnFails = pathPatternOnFails; this.fullPage = fullPage; this.thumbnails = thumbnails; this.testEntries = []; this.now = (0, moment_1.default)(); } _addTestEntry(test) { const testEntry = { test: test, testRuns: {}, screenshots: [], }; this.testEntries.push(testEntry); return testEntry; } _getTestEntry(test) { return (0, 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 (0, 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, default_extension_1.default, { testIndex, quarantineAttempt: quarantine ? quarantine.getNextAttemptNumber() : null, now: this.now, fixture: test.fixture.name, test: test.name, parsedUserAgent: connection.browserInfo.parsedUserAgent, }, this.screenshotsPatternOnFails); return new capturer_1.default(this.screenshotsPath, testEntry, connection, pathPattern, this.fullPage, this.thumbnails, 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyZWVuc2hvdHMvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBOEI7QUFDOUIsb0RBQTRCO0FBQzVCLDBEQUFrQztBQUNsQyx5RUFBZ0Q7QUFDaEQsK0VBQXFEO0FBQ3JELDRFQUErRDtBQUcvRCxNQUFxQixXQUFXO0lBQzVCLFlBQWEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFO1FBQ2pGLElBQUksQ0FBQyxPQUFPLEdBQXFCLE9BQU8sQ0FBQztRQUN6QyxJQUFJLENBQUMsZUFBZSxHQUFhLElBQUksQ0FBQztRQUN0QyxJQUFJLENBQUMsa0JBQWtCLEdBQVUsV0FBVyxDQUFDO1FBQzdDLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxrQkFBa0IsQ0FBQztRQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFvQixRQUFRLENBQUM7UUFDMUMsSUFBSSxDQUFDLFVBQVUsR0FBa0IsVUFBVSxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLEdBQWlCLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsR0FBRyxHQUF5QixJQUFBLGdCQUFNLEdBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsYUFBYSxDQUFFLElBQUk7UUFDZixNQUFNLFNBQVMsR0FBRztZQUNkLElBQUksRUFBUyxJQUFJO1lBQ2pCLFFBQVEsRUFBSyxFQUFFO1lBQ2YsV0FBVyxFQUFFLEVBQUU7U0FDbEIsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWpDLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxhQUFhLENBQUUsSUFBSTtRQUNmLE9BQU8sSUFBQSxhQUFJLEVBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELGdCQUFnQixDQUFFLElBQUk7UUFDbEIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6QyxJQUFJLENBQUMsU0FBUztZQUNWLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXpDLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrQkFBa0IsQ0FBRSxJQUFJO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDaEQsQ0FBQztJQUVELGNBQWMsQ0FBRSxJQUFJO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFVBQVUsQ0FBRSxJQUFJO1FBQ1osTUFBTSxTQUFTLEdBQVMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUUzRixPQUFPLElBQUEseUJBQWEsRUFBQyxlQUFlLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsaUJBQWlCLENBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDbEUsTUFBTSxTQUFTLEdBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELE1BQU0sV0FBVyxHQUFHLElBQUksc0JBQVcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsMkJBQTRCLEVBQUU7WUFDdkYsU0FBUztZQUNULGlCQUFpQixFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDeEUsR0FBRyxFQUFnQixJQUFJLENBQUMsR0FBRztZQUMzQixPQUFPLEVBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQ3BDLElBQUksRUFBZSxJQUFJLENBQUMsSUFBSTtZQUM1QixlQUFlLEVBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxlQUFlO1NBQzVELEVBQUUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFbkMsT0FBTyxJQUFJLGtCQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDOUgsQ0FBQztJQUVELFVBQVUsQ0FBRSxJQUFJLEVBQUUsT0FBTztRQUNyQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUMvRCxDQUFDO0NBQ0o7QUF2RUQsOEJBdUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmluZCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgQ2FwdHVyZXIgZnJvbSAnLi9jYXB0dXJlcic7XG5pbXBvcnQgUGF0aFBhdHRlcm4gZnJvbSAnLi4vdXRpbHMvcGF0aC1wYXR0ZXJuJztcbmltcG9ydCBnZXRDb21tb25QYXRoIGZyb20gJy4uL3V0aWxzL2dldC1jb21tb24tcGF0aCc7XG5pbXBvcnQgREVGQVVMVF9TQ1JFRU5TSE9UX0VYVEVOU0lPTiBmcm9tICcuL2RlZmF1bHQtZXh0ZW5zaW9uJztcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY3JlZW5zaG90cyB7XG4gICAgY29uc3RydWN0b3IgKHsgZW5hYmxlZCwgcGF0aCwgcGF0aFBhdHRlcm4sIHBhdGhQYXR0ZXJuT25GYWlscywgZnVsbFBhZ2UsIHRodW1ibmFpbHMgfSkge1xuICAgICAgICB0aGlzLmVuYWJsZWQgICAgICAgICAgICAgICAgICAgPSBlbmFibGVkO1xuICAgICAgICB0aGlzLnNjcmVlbnNob3RzUGF0aCAgICAgICAgICAgPSBwYXRoO1xuICAgICAgICB0aGlzLnNjcmVlbnNob3RzUGF0dGVybiAgICAgICAgPSBwYXRoUGF0dGVybjtcbiAgICAgICAgdGhpcy5zY3JlZW5zaG90c1BhdHRlcm5PbkZhaWxzID0gcGF0aFBhdHRlcm5PbkZhaWxzO1xuICAgICAgICB0aGlzLmZ1bGxQYWdlICAgICAgICAgICAgICAgICAgPSBmdWxsUGFnZTtcbiAgICAgICAgdGhpcy50aHVtYm5haWxzICAgICAgICAgICAgICAgID0gdGh1bWJuYWlscztcbiAgICAgICAgdGhpcy50ZXN0RW50cmllcyAgICAgICAgICAgICAgID0gW107XG4gICAgICAgIHRoaXMubm93ICAgICAgICAgICAgICAgICAgICAgICA9IG1vbWVudCgpO1xuICAgIH1cblxuICAgIF9hZGRUZXN0RW50cnkgKHRlc3QpIHtcbiAgICAgICAgY29uc3QgdGVzdEVudHJ5ID0ge1xuICAgICAgICAgICAgdGVzdDogICAgICAgIHRlc3QsXG4gICAgICAgICAgICB0ZXN0UnVuczogICAge30sXG4gICAgICAgICAgICBzY3JlZW5zaG90czogW10sXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy50ZXN0RW50cmllcy5wdXNoKHRlc3RFbnRyeSk7XG5cbiAgICAgICAgcmV0dXJuIHRlc3RFbnRyeTtcbiAgICB9XG5cbiAgICBfZ2V0VGVzdEVudHJ5ICh0ZXN0KSB7XG4gICAgICAgIHJldHVybiBmaW5kKHRoaXMudGVzdEVudHJpZXMsIGVudHJ5ID0+IGVudHJ5LnRlc3QgPT09IHRlc3QpO1xuICAgIH1cblxuICAgIF9lbnN1cmVUZXN0RW50cnkgKHRlc3QpIHtcbiAgICAgICAgbGV0IHRlc3RFbnRyeSA9IHRoaXMuX2dldFRlc3RFbnRyeSh0ZXN0KTtcblxuICAgICAgICBpZiAoIXRlc3RFbnRyeSlcbiAgICAgICAgICAgIHRlc3RFbnRyeSA9IHRoaXMuX2FkZFRlc3RFbnRyeSh0ZXN0KTtcblxuICAgICAgICByZXR1cm4gdGVzdEVudHJ5O1xuICAgIH1cblxuICAgIGdldFNjcmVlbnNob3RzSW5mbyAodGVzdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VGVzdEVudHJ5KHRlc3QpLnNjcmVlbnNob3RzO1xuICAgIH1cblxuICAgIGhhc0NhcHR1cmVkRm9yICh0ZXN0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFNjcmVlbnNob3RzSW5mbyh0ZXN0KS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIGdldFBhdGhGb3IgKHRlc3QpIHtcbiAgICAgICAgY29uc3QgdGVzdEVudHJ5ICAgICAgID0gdGhpcy5fZ2V0VGVzdEVudHJ5KHRlc3QpO1xuICAgICAgICBjb25zdCBzY3JlZW5zaG90UGF0aHMgPSB0ZXN0RW50cnkuc2NyZWVuc2hvdHMubWFwKHNjcmVlbnNob3QgPT4gc2NyZWVuc2hvdC5zY3JlZW5zaG90UGF0aCk7XG5cbiAgICAgICAgcmV0dXJuIGdldENvbW1vblBhdGgoc2NyZWVuc2hvdFBhdGhzKTtcbiAgICB9XG5cbiAgICBjcmVhdGVDYXB0dXJlckZvciAodGVzdCwgdGVzdEluZGV4LCBxdWFyYW50aW5lLCBjb25uZWN0aW9uLCB3YXJuaW5nTG9nKSB7XG4gICAgICAgIGNvbnN0IHRlc3RFbnRyeSAgID0gdGhpcy5fZW5zdXJlVGVzdEVudHJ5KHRlc3QpO1xuICAgICAgICBjb25zdCBwYXRoUGF0dGVybiA9IG5ldyBQYXRoUGF0dGVybih0aGlzLnNjcmVlbnNob3RzUGF0dGVybiwgREVGQVVMVF9TQ1JFRU5TSE9UX0VYVEVOU0lPTiwge1xuICAgICAgICAgICAgdGVzdEluZGV4LFxuICAgICAgICAgICAgcXVhcmFudGluZUF0dGVtcHQ6IHF1YXJhbnRpbmUgPyBxdWFyYW50aW5lLmdldE5leHRBdHRlbXB0TnVtYmVyKCkgOiBudWxsLFxuICAgICAgICAgICAgbm93OiAgICAgICAgICAgICAgIHRoaXMubm93LFxuICAgICAgICAgICAgZml4dHVyZTogICAgICAgICAgIHRlc3QuZml4dHVyZS5uYW1lLFxuICAgICAgICAgICAgdGVzdDogICAgICAgICAgICAgIHRlc3QubmFtZSxcbiAgICAgICAgICAgIHBhcnNlZFVzZXJBZ2VudDogICBjb25uZWN0aW9uLmJyb3dzZXJJbmZvLnBhcnNlZFVzZXJBZ2VudCxcbiAgICAgICAgfSwgdGhpcy5zY3JlZW5zaG90c1BhdHRlcm5PbkZhaWxzKTtcblxuICAgICAgICByZXR1cm4gbmV3IENhcHR1cmVyKHRoaXMuc2NyZWVuc2hvdHNQYXRoLCB0ZXN0RW50cnksIGNvbm5lY3Rpb24sIHBhdGhQYXR0ZXJuLCB0aGlzLmZ1bGxQYWdlLCB0aGlzLnRodW1ibmFpbHMsIHdhcm5pbmdMb2cpO1xuICAgIH1cblxuICAgIGFkZFRlc3RSdW4gKHRlc3QsIHRlc3RSdW4pIHtcbiAgICAgICAgY29uc3QgdGVzdEVudHJ5ID0gdGhpcy5fZ2V0VGVzdEVudHJ5KHRlc3QpO1xuXG4gICAgICAgIHRlc3RFbnRyeS50ZXN0UnVuc1t0ZXN0UnVuLmJyb3dzZXJDb25uZWN0aW9uLmlkXSA9IHRlc3RSdW47XG4gICAgfVxufVxuIl19