UNPKG

@nx/detox

Version:

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

67 lines (66 loc) 2.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addProject = addProject; const devkit_1 = require("@nx/devkit"); const get_targets_1 = require("./get-targets"); function addProject(host, options) { const nxJson = (0, devkit_1.readNxJson)(host); const hasPlugin = nxJson.plugins?.some((p) => typeof p === 'string' ? p === '@nx/detox/plugin' : p.plugin === '@nx/detox/plugin'); const packageJson = { name: options.importPath, version: '0.0.1', private: true, }; if (!options.useProjectJson) { packageJson.nx = { name: options.e2eProjectName !== options.importPath ? options.e2eProjectName : undefined, targets: hasPlugin ? undefined : getTargets(options), implicitDependencies: [options.appProject], }; } else { (0, devkit_1.addProjectConfiguration)(host, options.e2eProjectName, { root: options.e2eProjectRoot, sourceRoot: `${options.e2eProjectRoot}/src`, projectType: 'application', targets: hasPlugin ? {} : getTargets(options), tags: [], implicitDependencies: [options.appProject], }); } if (!options.useProjectJson || options.isUsingTsSolutionConfig) { (0, devkit_1.writeJson)(host, (0, devkit_1.joinPathFragments)(options.e2eProjectRoot, 'package.json'), packageJson); } } function getTargets(options) { const targets = {}; targets['build-ios'] = { executor: '@nx/detox:build', ...(options.framework === 'react-native' ? (0, get_targets_1.reactNativeBuildTarget)('ios.sim') : (0, get_targets_1.expoBuildTarget)('ios.sim')), }; targets['test-ios'] = { executor: '@nx/detox:test', ...(options.framework === 'react-native' ? (0, get_targets_1.reactNativeTestTarget)('ios.sim', options.e2eProjectName) : (0, get_targets_1.expoTestTarget)('ios.sim', options.e2eProjectName)), }; targets['build-android'] = { executor: '@nx/detox:build', ...(options.framework === 'react-native' ? (0, get_targets_1.reactNativeBuildTarget)('android.emu') : (0, get_targets_1.expoBuildTarget)('android.emu')), }; targets['test-android'] = { executor: '@nx/detox:test', ...(options.framework === 'react-native' ? (0, get_targets_1.reactNativeTestTarget)('android.emu', options.e2eProjectName) : (0, get_targets_1.expoTestTarget)('android.emu', options.e2eProjectName)), }; return targets; }