e2ed
Version:
E2E testing framework over Playwright
37 lines (36 loc) • 1.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.waitForNewTab = void 0;
const useContext_1 = require("../../useContext");
const config_1 = require("../../utils/config");
const fn_1 = require("../../utils/fn");
const getDurationWithUnits_1 = require("../../utils/getDurationWithUnits");
const log_1 = require("../../utils/log");
/**
* Waits for opening of new tab and returns this tab.
*/
exports.waitForNewTab = (async (triggerOrOptions, options) => {
const startTimeInMs = Date.now();
const context = (0, useContext_1.getPlaywrightPage)().context();
const trigger = typeof triggerOrOptions === 'function' ? triggerOrOptions : undefined;
const finalOptions = typeof triggerOrOptions === 'function' ? options : (triggerOrOptions ?? options);
const timeout = finalOptions?.timeout ?? (0, config_1.getFullPackConfig)().navigationTimeout;
const timeoutWithUnits = (0, getDurationWithUnits_1.getDurationWithUnits)(timeout);
if (trigger !== undefined) {
(0, fn_1.setCustomInspectOnFunction)(trigger);
}
const pagePromise = context.waitForEvent('page', { timeout });
if (finalOptions?.skipLogs !== true) {
(0, log_1.log)(`Set wait for new tab with timeout ${timeoutWithUnits}`, { trigger }, 7 /* LogEventType.InternalCore */);
}
await trigger?.();
const page = await pagePromise;
const newTab = { page };
const waitInMs = Date.now() - startTimeInMs;
const waitWithUnits = (0, getDurationWithUnits_1.getDurationWithUnits)(waitInMs);
const url = page.url();
if (finalOptions?.skipLogs !== true) {
(0, log_1.log)(`Have waited for new tab for ${waitWithUnits} at ${url}`, { timeoutWithUnits, trigger }, 7 /* LogEventType.InternalCore */);
}
return newTab;
});