@ngx-playwright/jest
Version:
110 lines • 3.75 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const architect_1 = require("@angular-devkit/architect");
const architect_2 = require("@snuggery/architect");
const jest_1 = require("jest");
function mapJestConfig(context, config) {
const mappedConfig = {};
for (const key of Object.keys(config)) {
if (config[key] == null ||
(Array.isArray(config[key]) && config[key].length === 0)) {
continue;
}
switch (key) {
case 'config':
case 'outputFile':
mappedConfig[key] = architect_2.resolveWorkspacePath(context, config[key]);
break;
default:
// @ts-expect-error :shrug:
mappedConfig[key] = config[key];
}
}
return mappedConfig;
}
async function runJest(context, baseUrl, jestConfig) {
var _a, _b;
try {
const { results: { success }, } = await jest_1.runCLI({
$0: '',
_: [],
...jestConfig,
testURL: baseUrl,
}, [(_a = jestConfig.config) !== null && _a !== void 0 ? _a : (await architect_2.getProjectPath(context))]);
return { success };
}
catch (e) {
return {
success: false,
error: `Failed to run jest: ${(_b = e.message) !== null && _b !== void 0 ? _b : e}`,
};
}
}
exports.default = architect_1.createBuilder(async ({ baseUrl, host, port, devServerTarget, ...jestOverrides }, context) => {
let server;
if (baseUrl == null) {
if (devServerTarget == null) {
return {
success: false,
error: 'Pass one of devServerTarget or baseUrl',
};
}
const target = architect_1.targetFromTargetString(architect_2.resolveTargetString(context, devServerTarget));
const serverOptions = await context.getTargetOptions(target);
const overrides = {
watch: false,
liveReload: false,
};
if (host !== undefined) {
overrides.host = host;
}
else if (typeof serverOptions.host === 'string') {
host = serverOptions.host;
}
else {
host = overrides.host = 'localhost';
}
if (port !== undefined) {
overrides.port = port;
}
server = await context.scheduleTarget(target, overrides);
const result = await server.result;
if (!result.success) {
return { success: false };
}
if (typeof serverOptions.publicHost === 'string') {
let publicHost = serverOptions.publicHost;
if (!/^\w+:\/\//.test(publicHost)) {
publicHost = `${serverOptions.ssl ? 'https' : 'http'}://${publicHost}`;
}
const clientUrl = new URL(publicHost);
baseUrl = clientUrl.href;
}
else if (typeof result.baseUrl === 'string') {
baseUrl = result.baseUrl;
}
else if (typeof result.port === 'number') {
baseUrl = new URL(`${serverOptions.ssl ? 'https' : 'http'}://${host}:${result.port}`).href;
}
else {
await server.stop();
return {
success: false,
error: `Failed to get address to test`,
};
}
}
if (baseUrl && !baseUrl.endsWith('/')) {
baseUrl += '/';
}
try {
return await runJest(context, baseUrl, mapJestConfig(context, jestOverrides));
}
catch {
return { success: false };
}
finally {
await (server === null || server === void 0 ? void 0 : server.stop());
}
});
//# sourceMappingURL=builder.js.map
;