@nx/angular
Version:
85 lines (84 loc) • 3.82 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.addE2e = addE2e;
const devkit_1 = require("@nx/devkit");
const versions_1 = require("../../../utils/versions");
async function addE2e(tree, options) {
// since e2e are separate projects, default to adding plugins
const nxJson = (0, devkit_1.readNxJson)(tree);
const addPlugin = nxJson['useInferencePlugins'] !== false &&
process.env.NX_ADD_PLUGINS !== 'false';
const e2eWebServerInfo = getAngularE2EWebServerInfo(tree, options.name, options.port);
if (options.e2eTestRunner === 'cypress') {
const { configurationGenerator } = (0, devkit_1.ensurePackage)('@nx/cypress', versions_1.nxVersion);
(0, devkit_1.addProjectConfiguration)(tree, options.e2eProjectName, {
projectType: 'application',
root: options.e2eProjectRoot,
sourceRoot: (0, devkit_1.joinPathFragments)(options.e2eProjectRoot, 'src'),
targets: {},
tags: [],
implicitDependencies: [options.name],
});
await configurationGenerator(tree, {
project: options.e2eProjectName,
directory: 'src',
linter: options.linter,
skipPackageJson: options.skipPackageJson,
skipFormat: true,
devServerTarget: e2eWebServerInfo.e2eDevServerTarget,
baseUrl: e2eWebServerInfo.e2eWebServerAddress,
webServerCommands: {
default: e2eWebServerInfo.e2eWebServerCommand,
production: e2eWebServerInfo.e2eCiWebServerCommand,
},
ciWebServerCommand: e2eWebServerInfo.e2eCiWebServerCommand,
ciBaseUrl: e2eWebServerInfo.e2eCiBaseUrl,
rootProject: options.rootProject,
addPlugin,
});
}
else if (options.e2eTestRunner === 'playwright') {
const { configurationGenerator } = (0, devkit_1.ensurePackage)('@nx/playwright', versions_1.nxVersion);
(0, devkit_1.addProjectConfiguration)(tree, options.e2eProjectName, {
projectType: 'application',
root: options.e2eProjectRoot,
sourceRoot: (0, devkit_1.joinPathFragments)(options.e2eProjectRoot, 'src'),
targets: {},
implicitDependencies: [options.name],
});
await configurationGenerator(tree, {
project: options.e2eProjectName,
skipFormat: true,
skipPackageJson: options.skipPackageJson,
directory: 'src',
js: false,
linter: options.linter,
setParserOptionsProject: options.setParserOptionsProject,
webServerCommand: e2eWebServerInfo.e2eWebServerCommand,
webServerAddress: e2eWebServerInfo.e2eWebServerAddress,
rootProject: options.rootProject,
addPlugin,
});
}
return e2eWebServerInfo.e2ePort;
}
function getAngularE2EWebServerInfo(tree, projectName, portOverride) {
const nxJson = (0, devkit_1.readNxJson)(tree);
let e2ePort = portOverride ?? 4200;
if (nxJson.targetDefaults?.['serve'] &&
(nxJson.targetDefaults?.['serve'].options?.port ||
nxJson.targetDefaults?.['serve'].options?.env?.PORT)) {
e2ePort =
nxJson.targetDefaults?.['serve'].options?.port ||
nxJson.targetDefaults?.['serve'].options?.env?.PORT;
}
const pm = (0, devkit_1.getPackageManagerCommand)();
return {
e2eCiBaseUrl: 'http://localhost:4200',
e2eCiWebServerCommand: `${pm.exec} nx run ${projectName}:serve-static`,
e2eWebServerCommand: `${pm.exec} nx run ${projectName}:serve`,
e2eWebServerAddress: `http://localhost:${e2ePort}`,
e2eDevServerTarget: `${projectName}:serve`,
e2ePort,
};
}