UNPKG

@serenity-js/protractor

Version:

Adapter that integrates @serenity-js/web with Protractor, enabling Serenity/JS reporting and using the Screenplay Pattern to write end-to-end test scenarios

45 lines 2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BrowserDetector = void 0; const events_1 = require("@serenity-js/core/lib/events"); const model_1 = require("@serenity-js/core/lib/model"); /** * @private * * @see https://github.com/serenity-js/serenity-js/issues/455 * @see https://github.com/serenity-bdd/serenity-core/pull/1860/files * @see https://github.com/serenity-js/serenity-js/issues/132 */ class BrowserDetector { capabilities; stage; static with(capabilities) { return new BrowserDetector(capabilities); } constructor(capabilities, stage) { this.capabilities = capabilities; this.stage = stage; } assignedTo(stage) { return new BrowserDetector(this.capabilities, stage); } notifyOf(event) { if (event instanceof events_1.SceneStarts) { const id = model_1.CorrelationId.create(); this.stage.announce(new events_1.AsyncOperationAttempted(new model_1.Name(this.constructor.name), new model_1.Description(`Detecting web browser details...`), id, this.stage.currentTime())); Promise.all([ this.capabilities.browserName(), this.capabilities.browserVersion(), this.capabilities.platformName(), this.capabilities.platformVersion(), ]). then(([browserName, browserVersion, platformName, platformVersion]) => { this.stage.announce(new events_1.SceneTagged(event.sceneId, new model_1.BrowserTag(browserName, browserVersion), this.stage.currentTime())); this.stage.announce(new events_1.SceneTagged(event.sceneId, new model_1.PlatformTag(platformName, platformVersion), this.stage.currentTime())); this.stage.announce(new events_1.AsyncOperationCompleted(id, this.stage.currentTime())); }); } } } exports.BrowserDetector = BrowserDetector; //# sourceMappingURL=BrowserDetector.js.map