UNPKG

flagpole

Version:

Simple and fast DOM integration, headless or headful browser, and REST API testing framework.

184 lines 6.73 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()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.PuppeteerResponse = void 0; const util_1 = require("../util"); const helpers_1 = require("../helpers"); const value_promise_1 = require("../value-promise"); const response_1 = require("../response"); const DEFAULT_WAITFOR_TIMEOUT = 30000; class PuppeteerResponse extends response_1.ProtoResponse { constructor(scenario) { super(scenario); this.scenario = scenario; this.scenario = scenario; } get browserControl() { return this.scenario.browserControl; } get page() { var _a; return ((_a = this.scenario.browserControl) === null || _a === void 0 ? void 0 : _a.page) || null; } get browser() { var _a; return ((_a = this.scenario.browserControl) === null || _a === void 0 ? void 0 : _a.browser) || null; } get response() { var _a; return ((_a = this.scenario.browserControl) === null || _a === void 0 ? void 0 : _a.response) || null; } get currentUrl() { const page = this.scenario.page; let url = null; if (page) { url = page.url(); } return helpers_1.wrapAsValue(this.context, url, "Current URL"); } get _page() { if (this.page === null) { throw "Puppeteer page object was not found."; } return this.page; } eval(js, ...args) { return __awaiter(this, void 0, void 0, function* () { return this._page.evaluate.apply(this._page, [js, ...args]); }); } waitForNetworkIdle(timeout) { return __awaiter(this, void 0, void 0, function* () { yield this._page.waitForNavigation({ timeout: this.getTimeoutFromOverload(timeout), waitUntil: "networkidle0", }); return; }); } waitForNavigation(timeout, waitFor) { return __awaiter(this, void 0, void 0, function* () { const allowedOptions = [ "load", "domcontentloaded", "networkidle0", "networkidle2", ]; const waitForEvent = (() => { if (typeof waitFor == "string" && allowedOptions.indexOf(waitFor) >= 0) { return [waitFor]; } else if (util_1.toType(waitFor) == "array" && waitFor.every((waitForItem) => { return allowedOptions.indexOf(waitForItem) >= 0; })) { return waitFor; } else { return ["networkidle2"]; } })(); yield this._page.waitForNavigation({ timeout: this.getTimeoutFromOverload(timeout), waitUntil: waitForEvent, }); return; }); } waitForLoad(timeout) { return __awaiter(this, void 0, void 0, function* () { yield this._page.waitForNavigation({ timeout: this.getTimeoutFromOverload(timeout), waitUntil: "load", }); return; }); } waitForFunction(js, opts, ...args) { return __awaiter(this, void 0, void 0, function* () { yield this._page.waitForFunction.apply(this._page, [js, opts, ...args]); return; }); } waitForReady(timeout) { return __awaiter(this, void 0, void 0, function* () { yield this._page.waitForNavigation({ timeout: this.getTimeoutFromOverload(timeout), waitUntil: "domcontentloaded", }); return; }); } screenshot(a, b) { const localFilePath = typeof a == "string" ? a : undefined; const opts = (typeof a !== "string" ? a : b) || {}; return this._page.screenshot({ path: localFilePath || opts.path, encoding: "binary", omitBackground: opts.omitBackground || false, clip: opts.clip || undefined, fullPage: opts.fullPage || false, }); } clearThenType(selector, textToType, opts = {}) { return value_promise_1.ValuePromise.execute(() => __awaiter(this, void 0, void 0, function* () { const el = yield this.clear(selector); yield el.type(textToType, opts); return el; })); } type(selector, textToType, opts = {}) { return value_promise_1.ValuePromise.execute(() => __awaiter(this, void 0, void 0, function* () { const el = yield this.find(selector); yield el.type(textToType, opts); return el; })); } clear(selector) { return value_promise_1.ValuePromise.execute(() => __awaiter(this, void 0, void 0, function* () { const el = yield this.find(selector); yield el.clear(); return el; })); } scrollTo(point) { return __awaiter(this, void 0, void 0, function* () { yield this._page.evaluate((x, y) => { window.scrollTo(x, y); }, point.x || 0, point.y || 0); return this; }); } getTimeoutFromOverload(a, b) { return typeof b == "number" ? b : typeof a == "number" ? a : DEFAULT_WAITFOR_TIMEOUT; } getContainsPatternFromOverload(contains) { return contains instanceof RegExp ? contains : typeof contains == "string" ? new RegExp(contains) : null; } navigate(req) { var _a; return __awaiter(this, void 0, void 0, function* () { if (req.uri) { yield ((_a = this.page) === null || _a === void 0 ? void 0 : _a.goto(req.uri)); } }); } } exports.PuppeteerResponse = PuppeteerResponse; //# sourceMappingURL=puppeteer-response.js.map