@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
JavaScript
;
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