UNPKG

@percy/agent

Version:

An agent process for integrating with Percy.

52 lines (51 loc) 2.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const logger_1 = require("../utils/logger"); const asset_discovery_service_1 = require("./asset-discovery-service"); const percy_client_service_1 = require("./percy-client-service"); const resource_service_1 = require("./resource-service"); class SnapshotService extends percy_client_service_1.default { constructor(buildId, configuration) { super(); this.buildId = buildId; this.resourceService = new resource_service_1.default(buildId); this.assetDiscoveryService = new asset_discovery_service_1.AssetDiscoveryService(buildId, configuration); } async buildResources(rootResourceUrl, domSnapshot = '', options) { const rootResource = await this.percyClient.makeResource({ resourceUrl: rootResourceUrl, content: domSnapshot, isRoot: true, mimetype: 'text/html', }); let resources = []; const discoveredResources = await this.assetDiscoveryService.discoverResources(rootResourceUrl, domSnapshot, options); resources = resources.concat([rootResource]); resources = resources.concat(discoveredResources); return resources; } create(name, resources, options = {}, clientInfo = null, environmentInfo = null) { const snapshotCreationPromise = this.percyClient.createSnapshot(this.buildId, resources, Object.assign({ name }, options, { minimumHeight: options.minHeight, clientInfo, environmentInfo })).then(async (response) => { await this.resourceService.uploadMissingResources(response, resources); return response; }).then(async (response) => { const snapshotId = response.body.data.id; logger_1.profile('-> snapshotService.finalizeSnapshot'); await this.finalize(response.body.data.id); logger_1.profile('-> snapshotService.finalizeSnapshot', { snapshotId }); return response; }).catch(logger_1.logError); return snapshotCreationPromise; } async finalize(snapshotId) { try { await this.percyClient.finalizeSnapshot(snapshotId); return true; } catch (error) { logger_1.logError(error); return false; } } } exports.default = SnapshotService;