UNPKG

@serenity-js/web

Version:

Serenity/JS Screenplay Pattern library offering a flexible, web driver-agnostic approach for interacting with web-based user interfaces and components, suitable for various testing contexts

62 lines 2.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TakeScreenshot = void 0; const core_1 = require("@serenity-js/core"); const model_1 = require("@serenity-js/core/lib/model"); const abilities_1 = require("../abilities"); /** * Instructs an [actor](https://serenity-js.org/api/core/class/Actor/) * who has the [ability](https://serenity-js.org/api/core/class/Ability/) * to [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/) * to take a screenshot and emit an artifact, * which can then be persisted by [`ArtifactArchiver`](https://serenity-js.org/api/core/class/ArtifactArchiver/) * and reported by [Serenity BDD reporter](https://serenity-js.org/api/serenity-bdd). * * #### Taking a screenshot * * ```ts * import { actorCalled } from '@serenity-js/core'; * import { Navigate, TakeScreenshot } from '@serenity-js/protractor'; * * await actorCalled('Tania') * .attemptsTo( * Navigate.to('/app'), * TakeScreenshot.of('my app'), * ) * ``` * * ## Learn more * * - [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/) * - [`CollectsArtifacts`](https://serenity-js.org/api/core/interface/CollectsArtifacts/) * - [`ArtifactArchiver`](https://serenity-js.org/api/core/class/ArtifactArchiver/) * * @group Activities */ class TakeScreenshot extends core_1.Interaction { name; /** * Instantiates this [`Interaction`](https://serenity-js.org/api/core/class/Interaction/). * * @param name * The name to give the emitted artifact */ static of(name) { return new TakeScreenshot(name); } constructor(name) { super((0, core_1.the) `#actor takes a screenshot of ${name}`); this.name = name; } /** * @inheritDoc */ async performAs(actor) { const page = await abilities_1.BrowseTheWeb.as(actor).currentPage(); const screenshot = await page.takeScreenshot(); const name = await actor.answer(this.name); actor.collect(model_1.Photo.fromBase64(screenshot), new model_1.Name(name)); } } exports.TakeScreenshot = TakeScreenshot; //# sourceMappingURL=TakeScreenshot.js.map