UNPKG

@nx/cypress

Version:

The Nx Plugin for Cypress contains executors and generators allowing your workspace to use the powerful Cypress integration testing capabilities.

121 lines (120 loc) 5.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.convertToInferred = convertToInferred; const devkit_1 = require("@nx/devkit"); const executor_to_plugin_migrator_1 = require("@nx/devkit/src/generators/plugin-migrations/executor-to-plugin-migrator"); const plugin_migration_utils_1 = require("@nx/devkit/src/generators/plugin-migrations/plugin-migration-utils"); const plugin_1 = require("../../plugins/plugin"); const add_dev_server_target_to_config_1 = require("./lib/add-dev-server-target-to-config"); const add_exclude_spec_pattern_1 = require("./lib/add-exclude-spec-pattern"); const target_options_map_1 = require("./lib/target-options-map"); const upsert_baseUrl_1 = require("./lib/upsert-baseUrl"); async function convertToInferred(tree, options) { const projectGraph = await (0, devkit_1.createProjectGraphAsync)(); const migratedProjects = await (0, executor_to_plugin_migrator_1.migrateProjectExecutorsToPlugin)(tree, projectGraph, '@nx/cypress/plugin', plugin_1.createNodesV2, { targetName: 'cypress', ciTargetName: 'e2e-ci', componentTestingTargetName: 'component-test', openTargetName: 'open-cypress', }, [ { executors: ['@nx/cypress:cypress', '@nrwl/cypress:cypress'], postTargetTransformer, targetPluginOptionMapper: (targetName) => ({ targetName }), }, ], options.project); if (migratedProjects.size === 0) { throw new executor_to_plugin_migrator_1.NoTargetsToMigrateError(); } if (!options.skipFormat) { await (0, devkit_1.formatFiles)(tree); } } function postTargetTransformer(target, tree, projectDetails, inferredTargetConfiguration) { if (target.options) { handlePropertiesInOptions(tree, target.options, projectDetails.root, target); if (Object.keys(target.options).length === 0) { delete target.options; } } if (target.configurations) { for (const configurationName in target.configurations) { const configuration = target.configurations[configurationName]; handlePropertiesInOptions(tree, configuration, projectDetails.root, target); } if (Object.keys(target.configurations).length !== 0) { for (const configuration in target.configurations) { if (Object.keys(target.configurations[configuration]).length === 0) { delete target.configurations[configuration]; } } if (Object.keys(target.configurations).length === 0) { delete target.configurations; } } } if (target.outputs) { (0, plugin_migration_utils_1.processTargetOutputs)(target, [], inferredTargetConfiguration, { projectName: projectDetails.projectName, projectRoot: projectDetails.root, }); } return target; } function handlePropertiesInOptions(tree, options, projectRoot, target) { let configFilePath; if ('cypressConfig' in options) { configFilePath = options.cypressConfig; options['config-file'] = (0, plugin_migration_utils_1.toProjectRelativePath)(configFilePath, projectRoot); delete options.cypressConfig; } if ('copyFiles' in options) { delete options.copyFiles; } if ('skipServe' in options) { delete options.skipServe; } for (const key in target_options_map_1.targetOptionsToCliMap) { if (options[key]) { const prevValue = options[key]; delete options[key]; options[target_options_map_1.targetOptionsToCliMap[key]] = prevValue; } } if ('exit' in options && !options.exit) { delete options.exit; options['no-exit'] = true; } if ('testingType' in options) { delete options.testingType; } if ('watch' in options) { options.headed = true; options['no-exit'] = true; delete options.watch; } if (options.baseUrl && configFilePath) { (0, upsert_baseUrl_1.upsertBaseUrl)(tree, configFilePath, options.baseUrl); delete options.baseUrl; } if (options.devServerTarget && configFilePath) { const webServerCommands = { default: `npx nx run ${options.devServerTarget}`, }; delete options.devServerTarget; if (target.configurations && configFilePath) { for (const configuration in target.configurations) { if (target.configurations[configuration]?.devServerTarget) { webServerCommands[configuration] = `npx nx run ${target.configurations[configuration].devServerTarget}`; delete target.configurations[configuration].devServerTarget; } } } (0, add_dev_server_target_to_config_1.addDevServerTargetToConfig)(tree, configFilePath, webServerCommands, webServerCommands?.['ci']); } if ('ignoreTestFiles' in options) { (0, add_exclude_spec_pattern_1.addExcludeSpecPattern)(tree, configFilePath, options.ignoreTestFiles); delete options.ignoreTestFiles; } } exports.default = convertToInferred;