UNPKG

@nova-ui/bits

Version:

SolarWinds Nova Framework

68 lines 2.97 kB
// © 2022 SolarWinds Worldwide, LLC. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to // deal in the Software without restriction, including without limitation the // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or // sell copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. import { PercyLens } from "./percy-lens"; import { EyesLens } from "./eyes-lens"; import { LENSES, LensType } from "./types"; export class CameraEngine { constructor(page, settings) { this.page = page; this.settings = settings; this.snapshotsFolderName = "_snapshots"; this.useLens(); } useLens() { if (!this.page) { throw new Error("Playwright 'page' instance is required! Please pass one as an argument to the 'loadFilm()' method"); } this.settings.globalLens = process.env.PERCY_TOKEN ? LensType.Percy : LensType.Eyes; if (this.settings.globalLens && LENSES.includes(this.settings.globalLens)) { switch (this.settings.globalLens) { case LensType.Percy: this.currentLensInstance = new PercyLens(this.page, this.settings); break; case LensType.Eyes: this.currentLensInstance = new EyesLens(this.page, this.settings); break; } } else { throw new Error("No suitable lenses found! Ensure Percy is configured (PERCY env var) or set SNAPSHOTS_UPLOAD=manual to save PNGs"); } return this; } async takePhoto(label) { if (!this.settings.fullframe) { return await this.currentLensInstance.takeSnapshot(label); } if (this.settings.fullframe) { return await this.currentLensInstance.takeFullScreenSnapshot(label); } } getToolConfig() { return this.currentLensInstance ? this.currentLensInstance.toolConfig() : undefined; } cleanFileName(name) { return name.replace(/[\\\/\s]/g, "_"); } } //# sourceMappingURL=camera-engine.js.map