Skip to content

Commit 981e878

Browse files
committed
test: fix smoke tests
1 parent 19b3be6 commit 981e878

File tree

4 files changed

+56
-33
lines changed

4 files changed

+56
-33
lines changed

.github/actions/setup/action.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ inputs:
99

1010
runs:
1111
using: 'composite'
12+
env:
13+
npm_config_registry: http://localhost:4873
14+
YARN_REGISTRY: http://localhost:4873
1215
steps:
1316
- name: Derive appropriate SHAs for base and head for `nx affected` commands
1417
uses: nrwl/nx-set-shas@v4

e2e/nx-ktor-e2e/tests/create-nx-ktor.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ describe('create-nx-ktor', () => {
99

1010
beforeAll(() => {
1111
// Cleanup the test project
12-
projectDirectory && projectDirectory && rmSync(projectDirectory, {
12+
projectDirectory && rmSync(projectDirectory, {
1313
recursive: true,
1414
force: true,
1515
});

e2e/smoke/tests/smoke.test.ts

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1+
import { getPackageManagerCommand } from '@nx/devkit';
12
import { createTestProject, isLocalNxMatchingLatestFeatureVersion, runNxCommand} from '@nxrocks/common/testing';
2-
import { execSync, ExecSyncOptions } from 'child_process';
3+
import { execSync } from 'child_process';
34
import { rmSync } from 'fs-extra';
45

56
process.env.NODE_OPTIONS="--max-old-space-size=8192"; // to avoid oom error during the tests
67

78
let projectDirectory: string;
89

9-
const execSyncOptions: (cwd?:string) => ExecSyncOptions = (cwd:string = projectDirectory) => ({
10+
const execSyncOptions: (cwd?:string) => { silenceError?: boolean; env?: NodeJS.ProcessEnv; cwd?: string } = (cwd:string = projectDirectory) => ({
1011
cwd: cwd,
1112
env: {
1213
...process.env,
@@ -15,7 +16,7 @@ const execSyncOptions: (cwd?:string) => ExecSyncOptions = (cwd:string = projectD
1516
GIT_AUTHOR_NAME: 'Smoke Test CI',
1617
GIT_AUTHOR_EMAIL: 'no-reply@fake.com',
1718
},
18-
stdio: 'inherit',
19+
silentError: 'false',
1920
});
2021

2122
const bootapp = 'bootapp';
@@ -43,14 +44,14 @@ describe('nxrocks smoke tests', () => {
4344
});
4445

4546
it.each`
46-
pkgManager | runCommand | addCommand | workspaceVersion | pluginVersion
47-
${'npm'} | ${'npx'} | ${'npm i'} | ${'latest'} | ${'0.0.0-e2e'}
48-
${'yarn'} | ${'yarn'} | ${'yarn add'} | ${'latest'} | ${'0.0.0-e2e'}
49-
${'pnpm'} | ${'pnpm exec'} | ${'pnpm add'} | ${'latest'} | ${'0.0.0-e2e'}
50-
${'npm'} | ${'npx'} | ${'npm i'} | ${'local'} | ${'0.0.0-e2e'}
51-
${'yarn'} | ${'yarn'} | ${'yarn add'} | ${'local'} | ${'0.0.0-e2e'}
52-
${'pnpm'} | ${'pnpm exec'} | ${'pnpm add'} | ${'local'} | ${'0.0.0-e2e'}
53-
`(`should sucessfully run using '$workspaceVersion' Nx workspace, $pluginVersion plugins version and $pkgManager package manager`, async ({pkgManager, runCommand, addCommand, workspaceVersion, pluginVersion }) => {
47+
pkgManager | workspaceVersion | pluginVersion
48+
${'npm'} | ${'latest'} | ${'0.0.0-e2e'}
49+
${'yarn'} | ${'latest'} | ${'0.0.0-e2e'}
50+
${'pnpm'} | ${'latest'} | ${'0.0.0-e2e'}
51+
${'npm'} | ${'local'} | ${'0.0.0-e2e'}
52+
${'yarn'} | ${'local'} | ${'0.0.0-e2e'}
53+
${'pnpm'} | ${'local'} | ${'0.0.0-e2e'}
54+
`(`should sucessfully run using '$workspaceVersion' Nx workspace, $pluginVersion plugins version and $pkgManager package manager`, async ({pkgManager, workspaceVersion, pluginVersion }) => {
5455

5556
if(!process.env.CI && !process.env.FORCE_SMOKE_TESTS) {
5657
console.log('Skipping smoke test because not running on CI and FORCE_SMOKE_TESTS is not set');
@@ -75,72 +76,72 @@ describe('nxrocks smoke tests', () => {
7576
`@nxrocks/nx-ktor@${pluginVersion}`,
7677
].join(' ');
7778

78-
execSync(`${addCommand} ${pluginPkgs}`, execSyncOptions(projectDirectory));
79+
execSync(`${getPackageManagerCommand(pkgManager).addDev} ${pluginPkgs}`, execSyncOptions(projectDirectory));
7980

8081

8182
runNxCommand(
8283
`generate @nxrocks/nx-spring-boot:new ${bootapp} --skip-format=false --projectType application --no-interactive`,
83-
runCommand,
84+
pkgManager,
8485
execSyncOptions(),
8586
);
8687
runNxCommand(
8788
`generate @nxrocks/nx-spring-boot:new ${bootlib} --skip-format=false --projectType library --no-interactive`,
88-
runCommand,
89+
pkgManager,
8990
execSyncOptions(),
9091
);
9192

9293
runNxCommand(
9394
`generate @nxrocks/nx-quarkus:new ${quarkusapp} --skip-format=false --projectType application --no-interactive`,
94-
runCommand,
95+
pkgManager,
9596
execSyncOptions(),
9697
);
9798
runNxCommand(
9899
`generate @nxrocks/nx-quarkus:new ${quarkuslib} --skip-format=false --projectType library --no-interactive`,
99-
runCommand,
100+
pkgManager,
100101
execSyncOptions(),
101102
);
102103

103104
runNxCommand(
104105
`generate @nxrocks/nx-micronaut:new ${mnApp} --skip-format=false --no-interactive`,
105-
runCommand,
106+
pkgManager,
106107
execSyncOptions(),
107108
);
108109

109110
runNxCommand(
110111
`generate @nxrocks/nx-melos:init --scriptNameSeparator=-`,
111-
runCommand,
112+
pkgManager,
112113
execSyncOptions(),
113114
);
114115

115116
runNxCommand(
116117
`generate @nxrocks/nx-ktor:new ${krApp} --skip-format=false --no-interactive`,
117-
runCommand,
118+
pkgManager,
118119
execSyncOptions(),
119120
);
120121

121122
runNxCommand(
122123
`generate @nxrocks/nx-flutter:new ${flutterapp} --template app --no-interactive`,
123-
runCommand,
124+
pkgManager,
124125
execSyncOptions(),
125126
);
126127
runNxCommand(
127128
`generate @nxrocks/nx-flutter:new ${flutterlib} --template plugin --no-interactive`,
128-
runCommand,
129+
pkgManager,
129130
execSyncOptions(),
130131
);
131132

132133
execSync(`git add -A`, execSyncOptions());
133134
execSync(`git commit -am "chore: scaffold projects"`, execSyncOptions());
134135

135-
runNxCommand(`clean ${bootapp}`, runCommand, execSyncOptions());
136-
runNxCommand(`clean ${bootlib}`, runCommand, execSyncOptions());
137-
runNxCommand(`clean ${quarkusapp}`, runCommand, execSyncOptions());
138-
runNxCommand(`clean ${quarkuslib}`, runCommand, execSyncOptions());
139-
runNxCommand(`clean ${mnApp}`, runCommand, execSyncOptions());
140-
runNxCommand(`melos-bootstrap`, runCommand, execSyncOptions());
141-
runNxCommand(`clean ${flutterapp}`, runCommand, execSyncOptions());
142-
runNxCommand(`clean ${flutterlib}`, runCommand, execSyncOptions());
143-
runNxCommand(`clean ${krApp}`, runCommand, execSyncOptions());
136+
runNxCommand(`clean ${bootapp}`, pkgManager, execSyncOptions());
137+
runNxCommand(`clean ${bootlib}`, pkgManager, execSyncOptions());
138+
runNxCommand(`clean ${quarkusapp}`, pkgManager, execSyncOptions());
139+
runNxCommand(`clean ${quarkuslib}`, pkgManager, execSyncOptions());
140+
runNxCommand(`clean ${mnApp}`, pkgManager, execSyncOptions());
141+
runNxCommand(`melos-bootstrap`, pkgManager, execSyncOptions());
142+
runNxCommand(`clean ${flutterapp}`, pkgManager, execSyncOptions());
143+
runNxCommand(`clean ${flutterlib}`, pkgManager, execSyncOptions());
144+
runNxCommand(`clean ${krApp}`, pkgManager, execSyncOptions());
144145

145146

146147
expect(true).toBeTruthy();

packages/common/testing/e2e/index.ts

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@ export function createTestProject(pkgManager: PackageManager = 'npm', projectNam
2525

2626
const nxVersion = workspaceVersion === 'local' ? readLocalNxWorkspaceVersion() : 'latest';
2727

28+
const confirm = pkgManager === 'npm' ? ' --yes' : '';
2829
execSync(
29-
`${getPackageManagerCommand(pkgManager).dlx} --yes create-nx-workspace@${nxVersion} ${projectName} --preset apps --nxCloud=skip --no-interactive --pm ${pkgManager}`,
30+
`${getPackageManagerCommand(pkgManager).dlx}${confirm} create-nx-workspace@${nxVersion} ${projectName} --preset apps --nxCloud=skip --no-interactive --pm ${pkgManager}`,
3031
{
3132
cwd: dirname(projectDirectory),
3233
stdio: 'inherit',
@@ -142,13 +143,14 @@ export function runCommandAsync(
142143
*/
143144
export function runNxCommandAsync(
144145
command: string,
146+
pkgManager?: PackageManager,
145147
opts: { silenceError?: boolean; env?: NodeJS.ProcessEnv; cwd?: string } = {
146148
silenceError: false,
147149
}
148150
): Promise<{ stdout: string; stderr: string }> {
149151
const cwd = opts.cwd ?? tmpProjPath();
150152
if (fileExists(tmpProjPath('package.json'))) {
151-
const pmc = getPackageManagerCommand(detectPackageManager(cwd));
153+
const pmc = getPackageManagerCommand(pkgManager || detectPackageManager(cwd));
152154
return runCommandAsync(`${pmc.exec} nx ${command}`, opts);
153155
} else if (process.platform === 'win32') {
154156
return runCommandAsync(`./nx.bat %${command}`, opts);
@@ -157,6 +159,23 @@ export function runNxCommandAsync(
157159
}
158160
}
159161

162+
/**
163+
* Run a nx command synchronously inside the e2e directory
164+
* @param command
165+
* @param opts
166+
*/
167+
export async function runNxCommand(
168+
command: string,
169+
pkgManager?: PackageManager,
170+
opts: { silenceError?: boolean; env?: NodeJS.ProcessEnv; cwd?: string } = {
171+
silenceError: false,
172+
}
173+
): Promise<{ stdout: string; stderr: string; }> {
174+
175+
return await runNxCommandAsync(command,pkgManager, opts);
176+
177+
}
178+
160179
export function readJson<T extends object = any>(path: string, options?: JsonParseOptions): T {
161180
return parseJson<T>(readFile(path), options);
162181
}

0 commit comments

Comments
 (0)