next-page-tester
Version:
Enable DOM integration testing on Next.js pages
50 lines (49 loc) • 1.78 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.executeAsIfOnServerSync = exports.executeAsIfOnServer = void 0;
const constants_1 = require("./constants");
const setNextRuntimeConfig_1 = __importDefault(require("./setNextRuntimeConfig"));
const setEnvVars_1 = require("./setEnvVars");
function hideBrowserEnv() {
const tmpWindow = global.window;
const tmpDocument = global.document;
const tmpNavigator = global.navigator;
// @ts-expect-error its okay
delete global.window;
// @ts-expect-error its okay
delete global.document;
// @ts-expect-error its okay
delete global.navigator;
(0, setNextRuntimeConfig_1.default)({ runtimeEnv: constants_1.RuntimeEnvironment.SERVER });
(0, setEnvVars_1.setEnvVars)({ runtimeEnv: constants_1.RuntimeEnvironment.SERVER });
return () => {
global.window = tmpWindow;
global.document = tmpDocument;
global.navigator = tmpNavigator;
(0, setNextRuntimeConfig_1.default)({ runtimeEnv: constants_1.RuntimeEnvironment.CLIENT });
(0, setEnvVars_1.setEnvVars)({ runtimeEnv: constants_1.RuntimeEnvironment.CLIENT });
};
}
const executeAsIfOnServer = async (f) => {
const restoreBrowserEnv = hideBrowserEnv();
try {
return await f();
}
finally {
restoreBrowserEnv();
}
};
exports.executeAsIfOnServer = executeAsIfOnServer;
const executeAsIfOnServerSync = (f) => {
const restoreBrowserEnv = hideBrowserEnv();
try {
return f();
}
finally {
restoreBrowserEnv();
}
};
exports.executeAsIfOnServerSync = executeAsIfOnServerSync;