e2ed
Version:
E2E testing framework over Playwright
57 lines (56 loc) • 1.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useContext = void 0;
const internalPage_1 = require("./internalPage");
let callCount = 0;
/**
* Creates functions for `get`, `set` and `clear` some typed value in test context.
*/
exports.useContext = ((defaultValue) => {
callCount += 1;
const contextIndex = callCount;
/**
* Set value to test context.
*/
const set = (value) => {
const page = (0, internalPage_1.getInternalPlaywrightPage)();
if (page.ctx === undefined) {
page.ctx = Object.create(null);
}
if (page.ctx.contexts === undefined) {
page.ctx.contexts = {};
}
const { contexts } = page.ctx;
contexts[contextIndex] = value;
};
/**
* Clear value in test context (set value to `undefined`).
*/
const clear = () => set(undefined);
if (defaultValue === undefined) {
/**
* Get value from test context.
*/
const get = () => {
const page = (0, internalPage_1.getInternalPlaywrightPage)();
if (page.ctx === undefined) {
page.ctx = Object.create(null);
}
const { contexts } = page.ctx;
return contexts?.[contextIndex];
};
return [get, set, clear];
}
/**
* Get value from test context (or default value, if it is `undefined`).
*/
const getWithDefaultValue = () => {
const page = (0, internalPage_1.getInternalPlaywrightPage)();
if (page.ctx === undefined) {
page.ctx = Object.create(null);
}
const { contexts } = page.ctx;
return contexts?.[contextIndex] ?? defaultValue;
};
return [getWithDefaultValue, set, clear];
});