testcafe
Version:
Automated browser testing for the modern web development stack.
37 lines • 4.36 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const pinkie_1 = __importDefault(require("pinkie"));
const os_family_1 = __importDefault(require("os-family"));
const testcafe_browser_tools_1 = __importDefault(require("testcafe-browser-tools"));
const delay_1 = __importDefault(require("../../../utils/delay"));
const POST_OPERATION_DELAY = 500;
class OperationsQueue {
constructor() {
this.chainPromise = pinkie_1.default.resolve();
}
executeOperation(operation) {
const operationPromise = this.chainPromise.then(operation);
this.chainPromise = operationPromise.then(() => delay_1.default(POST_OPERATION_DELAY));
return operationPromise;
}
}
class BrowserStarter {
constructor() {
// NOTE: You can't start multiple instances of the same app at the same time on macOS.
// That's why a queue of opening requests is needed.
this.macOSBrowserOpeningQueue = new OperationsQueue();
}
async startBrowser(...openArgs) {
const openBrowserOperation = () => testcafe_browser_tools_1.default.open(...openArgs);
if (os_family_1.default.mac)
await this.macOSBrowserOpeningQueue.executeOperation(openBrowserOperation);
else
await openBrowserOperation();
}
}
exports.default = BrowserStarter;
module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci1zdGFydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Jyb3dzZXIvcHJvdmlkZXIvdXRpbHMvYnJvd3Nlci1zdGFydGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTZCO0FBQzdCLDBEQUEyQjtBQUMzQixvRkFBa0Q7QUFDbEQsaUVBQXlDO0FBR3pDLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDO0FBRWpDLE1BQU0sZUFBZTtJQUNqQjtRQUNJLElBQUksQ0FBQyxZQUFZLEdBQUcsZ0JBQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUUsU0FBUztRQUN2QixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7UUFFN0UsT0FBTyxnQkFBZ0IsQ0FBQztJQUM1QixDQUFDO0NBQ0o7QUFFRCxNQUFxQixjQUFjO0lBQy9CO1FBQ0ksc0ZBQXNGO1FBQ3RGLG9EQUFvRDtRQUNwRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztJQUMxRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBRSxHQUFHLFFBQVE7UUFDM0IsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxnQ0FBWSxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBRWxFLElBQUksbUJBQUUsQ0FBQyxHQUFHO1lBQ04sTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsQ0FBQzs7WUFFM0UsTUFBTSxvQkFBb0IsRUFBRSxDQUFDO0lBQ3JDLENBQUM7Q0FDSjtBQWZELGlDQWVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb21pc2UgZnJvbSAncGlua2llJztcbmltcG9ydCBPUyBmcm9tICdvcy1mYW1pbHknO1xuaW1wb3J0IGJyb3dzZXJUb29scyBmcm9tICd0ZXN0Y2FmZS1icm93c2VyLXRvb2xzJztcbmltcG9ydCBkZWxheSBmcm9tICcuLi8uLi8uLi91dGlscy9kZWxheSc7XG5cblxuY29uc3QgUE9TVF9PUEVSQVRJT05fREVMQVkgPSA1MDA7XG5cbmNsYXNzIE9wZXJhdGlvbnNRdWV1ZSB7XG4gICAgY29uc3RydWN0b3IgKCkge1xuICAgICAgICB0aGlzLmNoYWluUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIGV4ZWN1dGVPcGVyYXRpb24gKG9wZXJhdGlvbikge1xuICAgICAgICBjb25zdCBvcGVyYXRpb25Qcm9taXNlID0gdGhpcy5jaGFpblByb21pc2UudGhlbihvcGVyYXRpb24pO1xuXG4gICAgICAgIHRoaXMuY2hhaW5Qcm9taXNlID0gb3BlcmF0aW9uUHJvbWlzZS50aGVuKCgpID0+IGRlbGF5KFBPU1RfT1BFUkFUSU9OX0RFTEFZKSk7XG5cbiAgICAgICAgcmV0dXJuIG9wZXJhdGlvblByb21pc2U7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCcm93c2VyU3RhcnRlciB7XG4gICAgY29uc3RydWN0b3IgKCkge1xuICAgICAgICAvLyBOT1RFOiBZb3UgY2FuJ3Qgc3RhcnQgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGFwcCBhdCB0aGUgc2FtZSB0aW1lIG9uIG1hY09TLlxuICAgICAgICAvLyBUaGF0J3Mgd2h5IGEgcXVldWUgb2Ygb3BlbmluZyByZXF1ZXN0cyBpcyBuZWVkZWQuXG4gICAgICAgIHRoaXMubWFjT1NCcm93c2VyT3BlbmluZ1F1ZXVlID0gbmV3IE9wZXJhdGlvbnNRdWV1ZSgpO1xuICAgIH1cblxuICAgIGFzeW5jIHN0YXJ0QnJvd3NlciAoLi4ub3BlbkFyZ3MpIHtcbiAgICAgICAgY29uc3Qgb3BlbkJyb3dzZXJPcGVyYXRpb24gPSAoKSA9PiBicm93c2VyVG9vbHMub3BlbiguLi5vcGVuQXJncyk7XG5cbiAgICAgICAgaWYgKE9TLm1hYylcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubWFjT1NCcm93c2VyT3BlbmluZ1F1ZXVlLmV4ZWN1dGVPcGVyYXRpb24ob3BlbkJyb3dzZXJPcGVyYXRpb24pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBhd2FpdCBvcGVuQnJvd3Nlck9wZXJhdGlvbigpO1xuICAgIH1cbn1cbiJdfQ==