UNPKG

@ngx-playwright/jest

Version:
110 lines 3.75 kB
"use strict"; 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