diff --git a/.github/workflows/e2e-matrix.yml b/.github/workflows/e2e-matrix.yml index ddf952207ba99..925a2758c18da 100644 --- a/.github/workflows/e2e-matrix.yml +++ b/.github/workflows/e2e-matrix.yml @@ -46,6 +46,7 @@ jobs: - e2e-storybook - e2e-workspace-integrations,e2e-workspace-core,e2e-workspace-create - e2e-react-native,e2e-detox + - e2e-add-nx-to-monorepo exclude: # exclude react-native and detox from ubuntu - os: ubuntu-latest diff --git a/e2e/add-nx-to-monorepo/jest.config.js b/e2e/add-nx-to-monorepo/jest.config.js new file mode 100644 index 0000000000000..e2d940f526fff --- /dev/null +++ b/e2e/add-nx-to-monorepo/jest.config.js @@ -0,0 +1,10 @@ +module.exports = { + preset: '../../jest.preset.js', + transform: { + '^.+\\.[tj]sx?$': 'ts-jest', + }, + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'html'], + maxWorkers: 1, + globals: { 'ts-jest': { tsconfig: '/tsconfig.spec.json' } }, + displayName: 'e2e-add-nx-to-monorepo', +}; diff --git a/e2e/add-nx-to-monorepo/project.json b/e2e/add-nx-to-monorepo/project.json new file mode 100644 index 0000000000000..af47be398efa5 --- /dev/null +++ b/e2e/add-nx-to-monorepo/project.json @@ -0,0 +1,34 @@ +{ + "root": "e2e/add-nx-to-monorepo", + "sourceRoot": "e2e/add-nx-to-monorepo", + "projectType": "application", + "targets": { + "e2e": { + "executor": "@nrwl/workspace:run-commands", + "options": { + "commands": [ + { + "command": "yarn e2e-start-local-registry" + }, + { + "command": "yarn e2e-build-package-publish" + }, + { + "command": "nx run-e2e-tests e2e-add-nx-to-monorepo" + } + ], + "parallel": false + } + }, + "run-e2e-tests": { + "executor": "@nrwl/jest:jest", + "options": { + "jestConfig": "e2e/add-nx-to-monorepo/jest.config.js", + "passWithNoTests": true, + "runInBand": true + }, + "outputs": ["coverage/e2e/add-nx-to-monorepo"] + } + }, + "implicitDependencies": ["workspace"] +} diff --git a/e2e/add-nx-to-monorepo/src/add-nx-to-monorepo.test.ts b/e2e/add-nx-to-monorepo/src/add-nx-to-monorepo.test.ts new file mode 100644 index 0000000000000..fb1009af06519 --- /dev/null +++ b/e2e/add-nx-to-monorepo/src/add-nx-to-monorepo.test.ts @@ -0,0 +1,37 @@ +import { + createNonNxProjectDirectory, + readProjectConfig, + runCommand, + tmpProjPath, + updateFile, +} from '@nrwl/e2e/utils'; +import { Workspaces } from '@nrwl/tao/src/shared/workspace'; + +describe('add-nx-to-monorepo', () => { + it('should not throw', () => { + // Arrange + createNonNxProjectDirectory(); + updateFile( + 'packages/package-a/package.json', + JSON.stringify({ + name: 'package-a', + }) + ); + updateFile( + 'packages/package-b/package.json', + JSON.stringify({ + name: 'package-b', + }) + ); + + // Act + const output = runCommand('npx add-nx-to-monorepo'); + // Assert + expect(output).toBeTruthy(); + expect(readWorkspaceConfig().projects['package-a']).toBeTruthy(); + expect(readWorkspaceConfig().projects['package-b']).toBeTruthy(); + }); +}); + +const readWorkspaceConfig = () => + new Workspaces(tmpProjPath()).readWorkspaceConfiguration(); diff --git a/e2e/add-nx-to-monorepo/tsconfig.json b/e2e/add-nx-to-monorepo/tsconfig.json new file mode 100644 index 0000000000000..6d5abf8483200 --- /dev/null +++ b/e2e/add-nx-to-monorepo/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "types": ["node", "jest"] + }, + "include": [], + "files": [], + "references": [ + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/e2e/add-nx-to-monorepo/tsconfig.spec.json b/e2e/add-nx-to-monorepo/tsconfig.spec.json new file mode 100644 index 0000000000000..1ad559c708973 --- /dev/null +++ b/e2e/add-nx-to-monorepo/tsconfig.spec.json @@ -0,0 +1,19 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": [ + "**/*.test.ts", + "**/*.spec.ts", + "**/*.spec.tsx", + "**/*.test.tsx", + "**/*.spec.js", + "**/*.test.js", + "**/*.spec.jsx", + "**/*.test.jsx", + "**/*.d.ts" + ] +} diff --git a/e2e/utils/index.ts b/e2e/utils/index.ts index b45d92edab41c..952e697b0c070 100644 --- a/e2e/utils/index.ts +++ b/e2e/utils/index.ts @@ -91,6 +91,17 @@ export function readProjectConfig(projectName: string): ProjectConfiguration { return readJson(path); } +export function createNonNxProjectDirectory(name = uniq('proj')) { + projName = name; + ensureDirSync(tmpProjPath()); + createFile( + 'package.json', + JSON.stringify({ + name, + }) + ); +} + export function runCreateWorkspace( name: string, { diff --git a/workspace.json b/workspace.json index 858842c6cbb0c..8ddeed969efb3 100644 --- a/workspace.json +++ b/workspace.json @@ -11,6 +11,7 @@ "detox": "packages/detox", "devkit": "packages/devkit", "docs": "docs", + "e2e-add-nx-to-monorepo": "e2e/add-nx-to-monorepo", "e2e-angular-core": "e2e/angular-core", "e2e-angular-extensions": "e2e/angular-extensions", "e2e-cli": "e2e/cli",