UNPKG

@qaflag/core

Version:

Base requirements for the QA Flag library

134 lines 7.52 kB
"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