UNPKG

8.3 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5Object.defineProperty(exports, "__esModule", { value: true });
6const lodash_1 = require("lodash");
7const moment_1 = __importDefault(require("moment"));
8const capturer_1 = __importDefault(require("./capturer"));
9const path_pattern_1 = __importDefault(require("../utils/path-pattern"));
10const get_common_path_1 = __importDefault(require("../utils/get-common-path"));
11const SCREENSHOT_EXTENSION = 'png';
12class Screenshots {
13 constructor({ enabled, path, pathPattern, fullPage }) {
14 this.enabled = enabled;
15 this.screenshotsPath = path;
16 this.screenshotsPattern = pathPattern;
17 this.fullPage = fullPage;
18 this.testEntries = [];
19 this.now = moment_1.default();
20 }
21 _addTestEntry(test) {
22 const testEntry = {
23 test: test,
24 screenshots: []
25 };
26 this.testEntries.push(testEntry);
27 return testEntry;
28 }
29 _getTestEntry(test) {
30 return lodash_1.find(this.testEntries, entry => entry.test === test);
31 }
32 _ensureTestEntry(test) {
33 let testEntry = this._getTestEntry(test);
34 if (!testEntry)
35 testEntry = this._addTestEntry(test);
36 return testEntry;
37 }
38 getScreenshotsInfo(test) {
39 return this._getTestEntry(test).screenshots;
40 }
41 hasCapturedFor(test) {
42 return this.getScreenshotsInfo(test).length > 0;
43 }
44 getPathFor(test) {
45 const testEntry = this._getTestEntry(test);
46 const screenshotPaths = testEntry.screenshots.map(screenshot => screenshot.screenshotPath);
47 return get_common_path_1.default(screenshotPaths);
48 }
49 createCapturerFor(test, testIndex, quarantine, connection, warningLog) {
50 const testEntry = this._ensureTestEntry(test);
51 const pathPattern = new path_pattern_1.default(this.screenshotsPattern, SCREENSHOT_EXTENSION, {
52 testIndex,
53 quarantineAttempt: quarantine ? quarantine.getNextAttemptNumber() : null,
54 now: this.now,
55 fixture: test.fixture.name,
56 test: test.name,
57 parsedUserAgent: connection.browserInfo.parsedUserAgent,
58 });
59 return new capturer_1.default(this.screenshotsPath, testEntry, connection, pathPattern, this.fullPage, warningLog);
60 }
61}
62exports.default = Screenshots;
63module.exports = exports.default;
64//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyZWVuc2hvdHMvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBOEI7QUFDOUIsb0RBQTRCO0FBQzVCLDBEQUFrQztBQUNsQyx5RUFBZ0Q7QUFDaEQsK0VBQXFEO0FBR3JELE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0FBRW5DLE1BQXFCLFdBQVc7SUFDNUIsWUFBYSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRTtRQUNqRCxJQUFJLENBQUMsT0FBTyxHQUFjLE9BQU8sQ0FBQztRQUNsQyxJQUFJLENBQUMsZUFBZSxHQUFNLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQWEsUUFBUSxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLEdBQVUsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxHQUFHLEdBQWtCLGdCQUFNLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsYUFBYSxDQUFFLElBQUk7UUFDZixNQUFNLFNBQVMsR0FBRztZQUNkLElBQUksRUFBUyxJQUFJO1lBQ2pCLFdBQVcsRUFBRSxFQUFFO1NBQ2xCLENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVqQyxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQsYUFBYSxDQUFFLElBQUk7UUFDZixPQUFPLGFBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsZ0JBQWdCLENBQUUsSUFBSTtRQUNsQixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXpDLElBQUksQ0FBQyxTQUFTO1lBQ1YsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekMsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVELGtCQUFrQixDQUFFLElBQUk7UUFDcEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUNoRCxDQUFDO0lBRUQsY0FBYyxDQUFFLElBQUk7UUFDaEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsVUFBVSxDQUFFLElBQUk7UUFDWixNQUFNLFNBQVMsR0FBUyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTNGLE9BQU8seUJBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsaUJBQWlCLENBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDbEUsTUFBTSxTQUFTLEdBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELE1BQU0sV0FBVyxHQUFHLElBQUksc0JBQVcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUU7WUFDL0UsU0FBUztZQUNULGlCQUFpQixFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDeEUsR0FBRyxFQUFnQixJQUFJLENBQUMsR0FBRztZQUMzQixPQUFPLEVBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQ3BDLElBQUksRUFBZSxJQUFJLENBQUMsSUFBSTtZQUM1QixlQUFlLEVBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxlQUFlO1NBQzVELENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxrQkFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM3RyxDQUFDO0NBQ0o7QUE5REQsOEJBOERDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmluZCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgQ2FwdHVyZXIgZnJvbSAnLi9jYXB0dXJlcic7XG5pbXBvcnQgUGF0aFBhdHRlcm4gZnJvbSAnLi4vdXRpbHMvcGF0aC1wYXR0ZXJuJztcbmltcG9ydCBnZXRDb21tb25QYXRoIGZyb20gJy4uL3V0aWxzL2dldC1jb21tb24tcGF0aCc7XG5cblxuY29uc3QgU0NSRUVOU0hPVF9FWFRFTlNJT04gPSAncG5nJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2NyZWVuc2hvdHMge1xuICAgIGNvbnN0cnVjdG9yICh7IGVuYWJsZWQsIHBhdGgsIHBhdGhQYXR0ZXJuLCBmdWxsUGFnZSB9KSB7XG4gICAgICAgIHRoaXMuZW5hYmxlZCAgICAgICAgICAgID0gZW5hYmxlZDtcbiAgICAgICAgdGhpcy5zY3JlZW5zaG90c1BhdGggICAgPSBwYXRoO1xuICAgICAgICB0aGlzLnNjcmVlbnNob3RzUGF0dGVybiA9IHBhdGhQYXR0ZXJuO1xuICAgICAgICB0aGlzLmZ1bGxQYWdlICAgICAgICAgICA9IGZ1bGxQYWdlO1xuICAgICAgICB0aGlzLnRlc3RFbnRyaWVzICAgICAgICA9IFtdO1xuICAgICAgICB0aGlzLm5vdyAgICAgICAgICAgICAgICA9IG1vbWVudCgpO1xuICAgIH1cblxuICAgIF9hZGRUZXN0RW50cnkgKHRlc3QpIHtcbiAgICAgICAgY29uc3QgdGVzdEVudHJ5ID0ge1xuICAgICAgICAgICAgdGVzdDogICAgICAgIHRlc3QsXG4gICAgICAgICAgICBzY3JlZW5zaG90czogW11cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnRlc3RFbnRyaWVzLnB1c2godGVzdEVudHJ5KTtcblxuICAgICAgICByZXR1cm4gdGVzdEVudHJ5O1xuICAgIH1cblxuICAgIF9nZXRUZXN0RW50cnkgKHRlc3QpIHtcbiAgICAgICAgcmV0dXJuIGZpbmQodGhpcy50ZXN0RW50cmllcywgZW50cnkgPT4gZW50cnkudGVzdCA9PT0gdGVzdCk7XG4gICAgfVxuXG4gICAgX2Vuc3VyZVRlc3RFbnRyeSAodGVzdCkge1xuICAgICAgICBsZXQgdGVzdEVudHJ5ID0gdGhpcy5fZ2V0VGVzdEVudHJ5KHRlc3QpO1xuXG4gICAgICAgIGlmICghdGVzdEVudHJ5KVxuICAgICAgICAgICAgdGVzdEVudHJ5ID0gdGhpcy5fYWRkVGVzdEVudHJ5KHRlc3QpO1xuXG4gICAgICAgIHJldHVybiB0ZXN0RW50cnk7XG4gICAgfVxuXG4gICAgZ2V0U2NyZWVuc2hvdHNJbmZvICh0ZXN0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRUZXN0RW50cnkodGVzdCkuc2NyZWVuc2hvdHM7XG4gICAgfVxuXG4gICAgaGFzQ2FwdHVyZWRGb3IgKHRlc3QpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U2NyZWVuc2hvdHNJbmZvKHRlc3QpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgZ2V0UGF0aEZvciAodGVzdCkge1xuICAgICAgICBjb25zdCB0ZXN0RW50cnkgICAgICAgPSB0aGlzLl9nZXRUZXN0RW50cnkodGVzdCk7XG4gICAgICAgIGNvbnN0IHNjcmVlbnNob3RQYXRocyA9IHRlc3RFbnRyeS5zY3JlZW5zaG90cy5tYXAoc2NyZWVuc2hvdCA9PiBzY3JlZW5zaG90LnNjcmVlbnNob3RQYXRoKTtcblxuICAgICAgICByZXR1cm4gZ2V0Q29tbW9uUGF0aChzY3JlZW5zaG90UGF0aHMpO1xuICAgIH1cblxuICAgIGNyZWF0ZUNhcHR1cmVyRm9yICh0ZXN0LCB0ZXN0SW5kZXgsIHF1YXJhbnRpbmUsIGNvbm5lY3Rpb24sIHdhcm5pbmdMb2cpIHtcbiAgICAgICAgY29uc3QgdGVzdEVudHJ5ICAgPSB0aGlzLl9lbnN1cmVUZXN0RW50cnkodGVzdCk7XG4gICAgICAgIGNvbnN0IHBhdGhQYXR0ZXJuID0gbmV3IFBhdGhQYXR0ZXJuKHRoaXMuc2NyZWVuc2hvdHNQYXR0ZXJuLCBTQ1JFRU5TSE9UX0VYVEVOU0lPTiwge1xuICAgICAgICAgICAgdGVzdEluZGV4LFxuICAgICAgICAgICAgcXVhcmFudGluZUF0dGVtcHQ6IHF1YXJhbnRpbmUgPyBxdWFyYW50aW5lLmdldE5leHRBdHRlbXB0TnVtYmVyKCkgOiBudWxsLFxuICAgICAgICAgICAgbm93OiAgICAgICAgICAgICAgIHRoaXMubm93LFxuICAgICAgICAgICAgZml4dHVyZTogICAgICAgICAgIHRlc3QuZml4dHVyZS5uYW1lLFxuICAgICAgICAgICAgdGVzdDogICAgICAgICAgICAgIHRlc3QubmFtZSxcbiAgICAgICAgICAgIHBhcnNlZFVzZXJBZ2VudDogICBjb25uZWN0aW9uLmJyb3dzZXJJbmZvLnBhcnNlZFVzZXJBZ2VudCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBDYXB0dXJlcih0aGlzLnNjcmVlbnNob3RzUGF0aCwgdGVzdEVudHJ5LCBjb25uZWN0aW9uLCBwYXRoUGF0dGVybiwgdGhpcy5mdWxsUGFnZSwgd2FybmluZ0xvZyk7XG4gICAgfVxufVxuIl19
\No newline at end of file