Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions tests/e2e.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ WEBPACK_IGNORE_TESTS = [
"tests/build/chunk-optimizer-heuristic.js",
"tests/build/chunk-optimizer-env.js",
"tests/build/chunk-optimizer-animations.js",
"tests/build/prerender/error-component-render.js",
]

def _to_glob(patterns):
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/tests/architect_cli/direct_execution.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as assert from 'node:assert/strict';
import assert from 'node:assert/strict';
import { exec } from '../../utils/process';
import { join } from 'node:path';

Expand Down
16 changes: 10 additions & 6 deletions tests/e2e/tests/commands/config/config-global-validation.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import assert from 'node:assert/strict';
import { homedir } from 'node:os';
import * as path from 'node:path';
import { join } from 'node:path';
Comment thread
alan-agius4 marked this conversation as resolved.
Resolved
import { deleteFile, expectFileToExist } from '../../../utils/fs';
import { ng, silentNg } from '../../../utils/process';
import { expectToFail } from '../../../utils/utils';
Expand All @@ -22,10 +22,14 @@ export default async function () {
ngError = await expectToFail(() => silentNg('config', 'cli.completion.prompted'));
assert.match(ngError.message, /Value cannot be found\./);

await ng('config', '--global', 'cli.completion.prompted', 'true');
const { stdout } = await silentNg('config', '--global', 'cli.completion.prompted');
assert.match(stdout, /true/);
const globalConfigPath = join(homedir(), '.angular-config.json');
try {
await ng('config', '--global', 'cli.completion.prompted', 'true');
const { stdout } = await silentNg('config', '--global', 'cli.completion.prompted');
assert.match(stdout, /true/);

await expectFileToExist(path.join(homedir(), '.angular-config.json'));
await deleteFile(path.join(homedir(), '.angular-config.json'));
await expectFileToExist(globalConfigPath);
} finally {
await deleteFile(globalConfigPath).catch(() => {});
}
Comment thread
alan-agius4 marked this conversation as resolved.
Resolved
}
61 changes: 33 additions & 28 deletions tests/e2e/tests/commands/config/config-global.ts
Original file line number Diff line number Diff line change
@@ -1,42 +1,47 @@
import assert from 'node:assert/strict';
import { homedir } from 'node:os';
import * as path from 'node:path';
import { join } from 'node:path';
Comment thread
alan-agius4 marked this conversation as resolved.
Resolved
import { deleteFile, expectFileToExist } from '../../../utils/fs';
import { ng } from '../../../utils/process';
import { expectToFail } from '../../../utils/utils';

export default async function () {
await expectToFail(() =>
ng('config', '--global', 'schematics.@schematics/angular.component.inlineStyle'),
);
const globalConfigPath = join(homedir(), '.angular-config.json');

await ng('config', '--global', 'schematics.@schematics/angular.component.inlineStyle', 'false');
let output = await ng(
'config',
'--global',
'schematics.@schematics/angular.component.inlineStyle',
);
assert.match(output.stdout, /false\n?/);
try {
await expectToFail(() =>
ng('config', '--global', 'schematics.@schematics/angular.component.inlineStyle'),
);

// This test requires schema querying capabilities
// .then(() => expectToFail(() => {
// return ng('config', '--global', 'schematics.@schematics/angular.component.inlineStyle', 'INVALID_BOOLEAN');
// }))
await ng('config', '--global', 'schematics.@schematics/angular.component.inlineStyle', 'false');
let output = await ng(
'config',
'--global',
'schematics.@schematics/angular.component.inlineStyle',
);
assert.match(output.stdout, /false\n?/);

const cwd = process.cwd();
process.chdir('/');
try {
await ng('config', '--global', 'schematics.@schematics/angular.component.inlineStyle', 'true');
} finally {
process.chdir(cwd);
}
const cwd = process.cwd();
process.chdir('/');
try {
await ng(
'config',
'--global',
'schematics.@schematics/angular.component.inlineStyle',
'true',
);
} finally {
process.chdir(cwd);
}

output = await ng('config', '--global', 'schematics.@schematics/angular.component.inlineStyle');
assert.match(output.stdout, /true\n?/);
output = await ng('config', '--global', 'schematics.@schematics/angular.component.inlineStyle');
assert.match(output.stdout, /true\n?/);

await expectToFail(() => ng('config', '--global', 'cli.warnings.notreal', 'true'));
await expectToFail(() => ng('config', '--global', 'cli.warnings.notreal', 'true'));

await ng('config', '--global', 'cli.warnings.versionMismatch', 'false');
await expectFileToExist(path.join(homedir(), '.angular-config.json'));
await deleteFile(path.join(homedir(), '.angular-config.json'));
await ng('config', '--global', 'cli.warnings.versionMismatch', 'false');
await expectFileToExist(globalConfigPath);
} finally {
await deleteFile(globalConfigPath).catch(() => {});
}
Comment thread
alan-agius4 marked this conversation as resolved.
Resolved
}
2 changes: 1 addition & 1 deletion tests/e2e/tests/commands/serve/ssr-http-requests-assets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ export default async function () {
await killAllProcesses();

// With OpenSSl cert+key
writeMultipleFiles({
await writeMultipleFiles({
'server.key': `-----BEGIN PRIVATE KEY-----
MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDOyBmVy61zEqfs
oTPQ9gTX233/nlrVXtaUGJkbDR5actq0X+XQtZuIoO4JgRpiYz5/8XiY8AiaMdt3
Expand Down
3 changes: 2 additions & 1 deletion tests/e2e/tests/generate/component/component-child-dir.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export default async function () {
// Generate a component inside the child directory
await ng('generate', 'component', 'test-component');

// Move back to the root of the workspacee
// Move back to the root of the workspace
process.chdir(currentDirectory);

// Ensure component is created in the correct location relative to the workspace root
Expand All @@ -27,6 +27,7 @@ export default async function () {
// Ensure unit test execute and pass
await ng('test', '--watch=false');
} finally {
process.chdir(currentDirectory);
// Windows CI may fail to clean up the created directory
// Resolves: "Error: Running "cmd.exe /c git clean -df" returned error code 1"
await rimraf(childDirectory);
Expand Down
21 changes: 12 additions & 9 deletions tests/e2e/tests/mcp/ai-tutor.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { chdir } from 'node:process';
import { exec, ProcessOutput, silentNpm } from '../../utils/process';
import assert from 'node:assert/strict';

Expand Down Expand Up @@ -28,13 +27,17 @@ export default async function () {
`${MCP_INSPECTOR_PACKAGE_NAME}@${MCP_INSPECTOR_PACKAGE_VERSION}`,
);

// Ensure `get_best_practices` returns the markdown content
const { stdout: stdoutInsideWorkspace } = await runInspector(
'--method',
'tools/call',
'--tool-name',
'ai_tutor',
);
try {
// Ensure `get_best_practices` returns the markdown content
const { stdout: stdoutInsideWorkspace } = await runInspector(
'--method',
'tools/call',
'--tool-name',
'ai_tutor',
);

assert.match(stdoutInsideWorkspace, /# `airules.md` - Modern Angular Tutor 🧑‍🏫/);
assert.match(stdoutInsideWorkspace, /# `airules.md` - Modern Angular Tutor 🧑‍🏫/);
} finally {
await silentNpm('uninstall', '-g', MCP_INSPECTOR_PACKAGE_NAME);
}
}
27 changes: 15 additions & 12 deletions tests/e2e/tests/mcp/best-practices.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { chdir } from 'node:process';
import { exec, ProcessOutput, silentNpm } from '../../utils/process';
import assert from 'node:assert/strict';

Expand Down Expand Up @@ -28,16 +27,20 @@ export default async function () {
`${MCP_INSPECTOR_PACKAGE_NAME}@${MCP_INSPECTOR_PACKAGE_VERSION}`,
);

// Ensure `get_best_practices` returns the markdown content
const { stdout: stdoutInsideWorkspace } = await runInspector(
'--method',
'tools/call',
'--tool-name',
'get_best_practices',
);
try {
// Ensure `get_best_practices` returns the markdown content
const { stdout: stdoutInsideWorkspace } = await runInspector(
'--method',
'tools/call',
'--tool-name',
'get_best_practices',
);

assert.match(
stdoutInsideWorkspace,
/You are an expert in TypeScript, Angular, and scalable web application development./,
);
assert.match(
stdoutInsideWorkspace,
/You are an expert in TypeScript, Angular, and scalable web application development./,
);
} finally {
await silentNpm('uninstall', '-g', MCP_INSPECTOR_PACKAGE_NAME);
}
}
4 changes: 3 additions & 1 deletion tests/e2e/tests/mcp/registers-tools.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ export default async function () {
`${MCP_INSPECTOR_PACKAGE_NAME}@${MCP_INSPECTOR_PACKAGE_VERSION}`,
);

const initialCwd = process.cwd();
// Ensure 'list_projects' is registered when inside an Angular workspace
try {
const { stdout: stdoutInsideWorkspace } = await runInspector('--method', 'tools/list');
Expand All @@ -42,8 +43,9 @@ export default async function () {

assert.match(stdoutOutsideWorkspace, /"list_projects"/);
assert.match(stdoutOutsideWorkspace, /"get_best_practices"/);
assert.match(stdoutInsideWorkspace, /"search_documentation"/);
assert.match(stdoutOutsideWorkspace, /"search_documentation"/);
} finally {
chdir(initialCwd);
await silentNpm('uninstall', '-g', MCP_INSPECTOR_PACKAGE_NAME);
Comment thread
alan-agius4 marked this conversation as resolved.
Resolved
}
}
Loading