@qaflag/core
Version:
Base requirements for the QA Flag library
134 lines • 7.52 kB
JavaScript
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DefaultUser = exports.Persona = void 0;
const tough_cookie_1 = require("tough-cookie");
const before_decorator_1 = require("../decorators/before.decorator");
const helpers_1 = require("../utils/helpers");
const Persona = (name, ...aboutThisUser) => {
var _hasStarted, _viewportSize, _a;
const qualities = (0, helpers_1.shallowMerge)({}, ...aboutThisUser);
return _a = class {
constructor() {
var _b, _c, _d, _e, _f, _g, _h, _j;
_hasStarted.set(this, false);
_viewportSize.set(this, qualities.viewportSize);
this.name = name;
this.gender = qualities.gender;
this.age = qualities.age;
this.occupation = qualities.occupation;
this.geolocation = qualities.geolocation;
this.timezone = qualities.timezone;
this.language = qualities.language;
this.disabilities = qualities.disabilities || [];
this.bearerToken = qualities.bearerToken;
this.basicAuthentication = qualities.basicAuthentication;
this.proxy = qualities.proxy;
this.headers = qualities.headers || [];
this.trailers = qualities.trailers || [];
this.deviceType = qualities.deviceType || 'laptop';
this.deviceInputs = qualities.deviceInputs || ['keyboard', 'mouse'];
this.deviceOutputs = qualities.deviceOutputs || ['screen'];
this.isPortraitMode = qualities.isPortraitMode || false;
this.connectionType = qualities.connectionType || 'wifi';
this.colorScheme = qualities.colorScheme || 'light';
this.browser = {
product: ((_b = qualities.browser) === null || _b === void 0 ? void 0 : _b.product) || 'chrome',
userAgent: ((_c = qualities.browser) === null || _c === void 0 ? void 0 : _c.userAgent) || undefined,
executablePath: ((_d = qualities.browser) === null || _d === void 0 ? void 0 : _d.executablePath) || undefined,
deviceScaleFactor: ((_e = qualities.browser) === null || _e === void 0 ? void 0 : _e.deviceScaleFactor) || 1,
javaScriptEnabled: ((_f = qualities.browser) === null || _f === void 0 ? void 0 : _f.javaScriptEnabled) || true,
permissions: ((_g = qualities.browser) === null || _g === void 0 ? void 0 : _g.permissions) || undefined,
localStorage: ((_h = qualities.browser) === null || _h === void 0 ? void 0 : _h.localStorage) || undefined,
userPreferences: ((_j = qualities.browser) === null || _j === void 0 ? void 0 : _j.userPreferences) || undefined,
};
this.os = qualities.os || {};
this.screenSize = qualities.screenSize || [1280, 720];
}
get cookies() {
if (!qualities.cookies)
return [];
if (Array.isArray(qualities.cookies)) {
return qualities.cookies;
}
return Object.entries(qualities.cookies).map(cookie => {
return new tough_cookie_1.Cookie({
key: cookie[0],
value: String(cookie[1]),
});
});
}
get viewportSize() {
return __classPrivateFieldGet(this, _viewportSize, "f") || this.screenSize;
}
set viewportSize(value) {
__classPrivateFieldSet(this, _viewportSize, value, "f");
}
get hasMouse() {
return this.deviceInputs.includes('mouse');
}
get hasTouch() {
return this.deviceInputs.includes('touch');
}
get hasKeyboard() {
return this.deviceInputs.includes('keyboard');
}
get hasRemote() {
return this.deviceInputs.includes('remote');
}
get hasMicrophone() {
return this.deviceInputs.includes('microphone');
}
get hasSpeaker() {
return this.deviceOutputs.includes('speaker');
}
get hasPrinter() {
return this.deviceOutputs.includes('printer');
}
get hasScreen() {
return this.deviceOutputs.includes('screen');
}
__startUp(suite) {
return __awaiter(this, void 0, void 0, function* () {
if (!this[before_decorator_1.BeforeSymbol] || __classPrivateFieldGet(this, _hasStarted, "f"))
return;
__classPrivateFieldSet(this, _hasStarted, true, "f");
suite.events.emit('personaStartUp');
const opts = {
baseUrl: suite.baseUrl,
pathArgs: suite.store.entries(),
};
const befores = Object.values(this[before_decorator_1.BeforeSymbol] || {});
yield Promise.all(befores.map((before) => __awaiter(this, void 0, void 0, function* () { return before(this, opts); })));
suite.events.emit('personaInitialized');
});
}
},
_hasStarted = new WeakMap(),
_viewportSize = new WeakMap(),
_a;
};
exports.Persona = Persona;
class DefaultUser extends (0, exports.Persona)('Default') {
}
exports.DefaultUser = DefaultUser;
//# sourceMappingURL=persona.js.map