diff --git a/packages/schematics/angular/workspace/files/__dot__vscode/launch.json.template b/packages/schematics/angular/workspace/files/__dot__vscode/launch.json.template index 740e35a0c0..c87d18d996 100644 --- a/packages/schematics/angular/workspace/files/__dot__vscode/launch.json.template +++ b/packages/schematics/angular/workspace/files/__dot__vscode/launch.json.template @@ -8,13 +8,13 @@ "request": "launch", "preLaunchTask": "npm: start", "url": "http://localhost:4200/" - }, + }<% if (!minimal) { %>, { "name": "ng test", "type": "chrome", "request": "launch", "preLaunchTask": "npm: test", "url": "http://localhost:9876/debug.html" - } + }<% } %> ] } diff --git a/packages/schematics/angular/workspace/files/__dot__vscode/tasks.json.template b/packages/schematics/angular/workspace/files/__dot__vscode/tasks.json.template index a298b5bd87..f3125a95b7 100644 --- a/packages/schematics/angular/workspace/files/__dot__vscode/tasks.json.template +++ b/packages/schematics/angular/workspace/files/__dot__vscode/tasks.json.template @@ -19,7 +19,7 @@ } } } - }, + }<% if (!minimal) { %>, { "type": "npm", "script": "test", @@ -37,6 +37,6 @@ } } } - } + }<% } %> ] } diff --git a/packages/schematics/angular/workspace/index_spec.ts b/packages/schematics/angular/workspace/index_spec.ts index 202f8906b3..c84d1f1743 100644 --- a/packages/schematics/angular/workspace/index_spec.ts +++ b/packages/schematics/angular/workspace/index_spec.ts @@ -28,6 +28,9 @@ describe('Workspace Schematic', () => { const files = tree.files; expect(files).toEqual( jasmine.arrayContaining([ + '/.vscode/extensions.json', + '/.vscode/launch.json', + '/.vscode/tasks.json', '/.editorconfig', '/angular.json', '/.gitignore', @@ -66,6 +69,9 @@ describe('Workspace Schematic', () => { const files = tree.files; expect(files).toEqual( jasmine.arrayContaining([ + '/.vscode/extensions.json', + '/.vscode/launch.json', + '/.vscode/tasks.json', '/angular.json', '/.gitignore', '/package.json', @@ -106,4 +112,24 @@ describe('Workspace Schematic', () => { expect(compilerOptions.strict).toBe(true); expect(angularCompilerOptions.strictTemplates).toBe(true); }); + + it('should add vscode testing configuration', async () => { + const tree = await schematicRunner + .runSchematicAsync('workspace', { ...defaultOptions }) + .toPromise(); + const { configurations } = parseJson(tree.readContent('.vscode/launch.json').toString()); + expect(configurations).toContain(jasmine.objectContaining({ name: 'ng test' })); + const { tasks } = parseJson(tree.readContent('.vscode/tasks.json').toString()); + expect(tasks).toContain(jasmine.objectContaining({ type: 'npm', script: 'test' })); + }); + + it('should not add vscode testing configuration when using minimal', async () => { + const tree = await schematicRunner + .runSchematicAsync('workspace', { ...defaultOptions, minimal: true }) + .toPromise(); + const { configurations } = parseJson(tree.readContent('.vscode/launch.json').toString()); + expect(configurations).not.toContain(jasmine.objectContaining({ name: 'ng test' })); + const { tasks } = parseJson(tree.readContent('.vscode/tasks.json').toString()); + expect(tasks).not.toContain(jasmine.objectContaining({ type: 'npm', script: 'test' })); + }); });