Skip to content

Commit cd24090

Browse files
Update tests to work with latest tooling
1 parent 3390d75 commit cd24090

File tree

3 files changed

+79
-86
lines changed

3 files changed

+79
-86
lines changed

appveyor.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ artifacts:
3131
# - ps: .\build.ps1
3232
clone_depth: 1
3333
test_script:
34-
- dotnet restore ./src
34+
- dotnet restore
3535
- npm install -g selenium-standalone
3636
- selenium-standalone install
3737
# The nosys flag is needed for selenium to work on Appveyor

test/templates/angular.spec.ts

Lines changed: 78 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -5,102 +5,96 @@ import { generateProjectSync } from './util/yeoman';
55
import { AspNetProcess, AspNetCoreEnviroment, defaultUrl, publishProjectSync } from './util/aspnet';
66
import { getValue, getCssPropertyValue } from './util/webdriverio';
77

8-
// Currently we test both 'csproj' and 'project.json' project types. Eventually we'll only need csproj.
9-
['csproj', 'projectjson'].forEach(toolingType => {
10-
// First, generate a new project using the locally-built generator-aspnetcore-spa
11-
// Do this outside the Mocha fixture, otherwise Mocha will time out
12-
const appDir = path.resolve(__dirname, '../generated/angular', toolingType);
13-
const publishedAppDir = path.resolve(appDir, './bin/Release/published');
14-
if (!process.env.SKIP_PROJECT_GENERATION) {
15-
generateProjectSync(appDir, {
16-
framework: 'angular-2',
17-
name: 'Test App',
18-
sdkVersion: toolingType === 'projectjson' ? '1.0.0-preview2-1-003177' : '1.0.0-preview3-004056',
19-
tests: false
20-
});
21-
publishProjectSync(appDir, publishedAppDir);
22-
}
23-
24-
function testBasicNavigation() {
25-
describe('Basic navigation', () => {
26-
beforeEach(() => browser.url(defaultUrl));
27-
28-
it('should initially display the home page', () => {
29-
expect(browser.getText('h1')).to.eq('Hello, world!');
30-
expect(browser.getText('li a[href="https://angular.io/"]')).to.eq('Angular 2');
31-
});
32-
33-
it('should be able to show the counter page', () => {
34-
browser.click('a[href="/counter"]');
35-
expect(browser.getText('h1')).to.eq('Counter');
36-
37-
// Test clicking the 'increment' button
38-
expect(browser.getText('counter strong')).to.eq('0');
39-
browser.click('counter button');
40-
expect(browser.getText('counter strong')).to.eq('1');
41-
});
42-
43-
it('should be able to show the fetchdata page', () => {
44-
browser.click('a[href="/fetch-data"]');
45-
expect(browser.getText('h1')).to.eq('Weather forecast');
46-
47-
browser.waitForExist('fetchdata table');
48-
expect(getValue(browser.elements('fetchdata table tbody tr')).length).to.eq(5);
49-
});
8+
// First, generate a new project using the locally-built generator-aspnetcore-spa
9+
// Do this outside the Mocha fixture, otherwise Mocha will time out
10+
const appDir = path.resolve(__dirname, '../generated/angular');
11+
const publishedAppDir = path.resolve(appDir, './bin/Release/published');
12+
if (!process.env.SKIP_PROJECT_GENERATION) {
13+
generateProjectSync(appDir, {
14+
framework: 'angular',
15+
name: 'Test App',
16+
tests: false
17+
});
18+
publishProjectSync(appDir, publishedAppDir);
19+
}
20+
21+
function testBasicNavigation() {
22+
describe('Basic navigation', () => {
23+
beforeEach(() => browser.url(defaultUrl));
24+
25+
it('should initially display the home page', () => {
26+
expect(browser.getText('h1')).to.eq('Hello, world!');
27+
expect(browser.getText('li a[href="https://angular.io/"]')).to.eq('Angular 2');
5028
});
51-
}
5229

53-
function testHotModuleReplacement() {
54-
describe('Hot module replacement', () => {
55-
beforeEach(() => browser.url(defaultUrl));
30+
it('should be able to show the counter page', () => {
31+
browser.click('a[href="/counter"]');
32+
expect(browser.getText('h1')).to.eq('Counter');
5633

57-
it('should update when HTML is changed', () => {
58-
expect(browser.getText('h1')).to.eq('Hello, world!');
34+
// Test clicking the 'increment' button
35+
expect(browser.getText('counter strong')).to.eq('0');
36+
browser.click('counter button');
37+
expect(browser.getText('counter strong')).to.eq('1');
38+
});
5939

60-
const filePath = path.resolve(appDir, './ClientApp/app/components/home/home.component.html');
61-
const origFileContents = fs.readFileSync(filePath, 'utf8');
40+
it('should be able to show the fetchdata page', () => {
41+
browser.click('a[href="/fetch-data"]');
42+
expect(browser.getText('h1')).to.eq('Weather forecast');
6243

63-
try {
64-
const newFileContents = origFileContents.replace('<h1>Hello, world!</h1>', '<h1>HMR is working</h1>');
65-
fs.writeFileSync(filePath, newFileContents, { encoding: 'utf8' });
44+
browser.waitForExist('fetchdata table');
45+
expect(getValue(browser.elements('fetchdata table tbody tr')).length).to.eq(5);
46+
});
47+
});
48+
}
6649

67-
browser.waitUntil(() => browser.getText('h1').toString() === 'HMR is working');
68-
} finally {
69-
// Restore old contents so that other tests don't have to account for this
70-
fs.writeFileSync(filePath, origFileContents, { encoding: 'utf8' });
71-
}
72-
});
50+
function testHotModuleReplacement() {
51+
describe('Hot module replacement', () => {
52+
beforeEach(() => browser.url(defaultUrl));
7353

74-
it('should update when CSS is changed', () => {
75-
expect(getCssPropertyValue(browser, 'li.link-active a', 'color')).to.eq('rgba(255,255,255,1)');
54+
it('should update when HTML is changed', () => {
55+
expect(browser.getText('h1')).to.eq('Hello, world!');
7656

77-
const filePath = path.resolve(appDir, './ClientApp/app/components/navmenu/navmenu.component.css');
78-
const origFileContents = fs.readFileSync(filePath, 'utf8');
57+
const filePath = path.resolve(appDir, './ClientApp/app/components/home/home.component.html');
58+
const origFileContents = fs.readFileSync(filePath, 'utf8');
7959

80-
try {
81-
const newFileContents = origFileContents.replace('color: white;', 'color: purple;');
82-
fs.writeFileSync(filePath, newFileContents, { encoding: 'utf8' });
60+
try {
61+
const newFileContents = origFileContents.replace('<h1>Hello, world!</h1>', '<h1>HMR is working</h1>');
62+
fs.writeFileSync(filePath, newFileContents, { encoding: 'utf8' });
8363

84-
browser.waitUntil(() => getCssPropertyValue(browser, 'li.link-active a', 'color') === 'rgba(128,0,128,1)');
85-
} finally {
86-
// Restore old contents so that other tests don't have to account for this
87-
fs.writeFileSync(filePath, origFileContents, { encoding: 'utf8' });
88-
}
89-
});
64+
browser.waitUntil(() => browser.getText('h1').toString() === 'HMR is working');
65+
} finally {
66+
// Restore old contents so that other tests don't have to account for this
67+
fs.writeFileSync(filePath, origFileContents, { encoding: 'utf8' });
68+
}
9069
});
91-
}
9270

93-
// Now launch dotnet and use selenium to perform tests
94-
describe('Angular template: dev mode', () => {
95-
AspNetProcess.RunInMochaContext(appDir, AspNetCoreEnviroment.development);
96-
testBasicNavigation();
97-
testHotModuleReplacement();
98-
});
71+
it('should update when CSS is changed', () => {
72+
expect(getCssPropertyValue(browser, 'li.link-active a', 'color')).to.eq('rgba(255,255,255,1)');
73+
74+
const filePath = path.resolve(appDir, './ClientApp/app/components/navmenu/navmenu.component.css');
75+
const origFileContents = fs.readFileSync(filePath, 'utf8');
76+
77+
try {
78+
const newFileContents = origFileContents.replace('color: white;', 'color: purple;');
79+
fs.writeFileSync(filePath, newFileContents, { encoding: 'utf8' });
9980

100-
describe('Angular template: production mode', () => {
101-
// csproj tooling takes the assembly name from <name>.csproj, whereas project.json takes it from the directory name
102-
const assemblyName = toolingType === 'csproj' ? 'TestApp.dll' : 'projectjson.dll';
103-
AspNetProcess.RunInMochaContext(publishedAppDir, AspNetCoreEnviroment.production, assemblyName);
104-
testBasicNavigation();
81+
browser.waitUntil(() => getCssPropertyValue(browser, 'li.link-active a', 'color') === 'rgba(128,0,128,1)');
82+
} finally {
83+
// Restore old contents so that other tests don't have to account for this
84+
fs.writeFileSync(filePath, origFileContents, { encoding: 'utf8' });
85+
}
86+
});
10587
});
88+
}
89+
90+
// Now launch dotnet and use selenium to perform tests
91+
describe('Angular template: dev mode', () => {
92+
AspNetProcess.RunInMochaContext(appDir, AspNetCoreEnviroment.development);
93+
testBasicNavigation();
94+
testHotModuleReplacement();
10695
});
96+
97+
describe('Angular template: production mode', () => {
98+
AspNetProcess.RunInMochaContext(publishedAppDir, AspNetCoreEnviroment.production, 'TestApp.dll');
99+
testBasicNavigation();
100+
});

test/templates/util/yeoman.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ const yoPackageDirAbsolute = path.resolve('./node_modules/yo');
99
export interface GeneratorOptions {
1010
framework: string;
1111
name: string;
12-
sdkVersion?: string;
1312
tests?: boolean;
1413
}
1514

0 commit comments

Comments
 (0)