Skip to content

Commit 2db3d61

Browse files
authored
add e2e test that would have caught regression in #3878 (#4207)
1 parent ba6b9bb commit 2db3d61

File tree

6 files changed

+85
-15
lines changed

6 files changed

+85
-15
lines changed

e2e/components/input/input.e2e.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import {browser, by, element} from 'protractor';
2+
3+
4+
describe('input', () => {
5+
describe('text input', () => {
6+
beforeEach(() => browser.get('/input'));
7+
8+
it('should update input value when user types', () => {
9+
let input = element(by.id('text-input'));
10+
input.sendKeys('abc123');
11+
expect(input.getAttribute('value')).toBe('abc123');
12+
});
13+
});
14+
15+
describe('number input', () => {
16+
beforeEach(() => browser.get('/input'));
17+
18+
it('should update input value when user types', () => {
19+
let input = element(by.id('number-input'));
20+
input.sendKeys('abc123');
21+
expect(input.getAttribute('value')).toBe('123');
22+
});
23+
24+
it('should increment when increment button clicked', () => {
25+
let input = element(by.id('number-input'));
26+
input.click();
27+
input.getSize().then((size) => {
28+
browser.actions()
29+
.mouseMove(input, {x: size.width - 5, y: 5})
30+
.click()
31+
.perform();
32+
33+
expect(input.getAttribute('value')).toBe('1');
34+
35+
browser.actions()
36+
.mouseMove(input, {x: size.width - 5, y: size.height - 5})
37+
.click()
38+
.perform();
39+
40+
expect(input.getAttribute('value')).toBe('0');
41+
});
42+
});
43+
});
44+
});

src/e2e-app/e2e-app-module.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {FullscreenE2E, TestDialog as TestDialogFullScreen} from './fullscreen/fu
1818
import {MaterialModule, OverlayContainer, FullscreenOverlayContainer} from '@angular/material';
1919
import {E2E_APP_ROUTES} from './e2e-app/routes';
2020
import {SlideToggleE2E} from './slide-toggle/slide-toggle-e2e';
21+
import {InputE2E} from './input/input-e2e';
2122

2223
@NgModule({
2324
imports: [
@@ -27,22 +28,23 @@ import {SlideToggleE2E} from './slide-toggle/slide-toggle-e2e';
2728
NoopAnimationsModule,
2829
],
2930
declarations: [
30-
E2EApp,
31-
IconE2E,
32-
ButtonE2E,
33-
MenuE2E,
3431
BasicTabs,
35-
SimpleRadioButtons,
36-
SimpleCheckboxes,
37-
Home,
32+
ButtonE2E,
3833
DialogE2E,
39-
TestDialog,
34+
E2EApp,
35+
FullscreenE2E,
4036
GridListE2E,
37+
Home,
38+
IconE2E,
39+
InputE2E,
4140
ListE2E,
41+
MenuE2E,
4242
ProgressBarE2E,
4343
ProgressSpinnerE2E,
44+
SimpleCheckboxes,
45+
SimpleRadioButtons,
4446
SlideToggleE2E,
45-
FullscreenE2E,
47+
TestDialog,
4648
TestDialogFullScreen
4749
],
4850
bootstrap: [E2EApp],

src/e2e-app/e2e-app/e2e-app.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,17 @@
44
<a md-list-item [routerLink]="['button']">Button</a>
55
<a md-list-item [routerLink]="['checkbox']">Checkbox</a>
66
<a md-list-item [routerLink]="['dialog']">Dialog</a>
7+
<a md-list-item [routerLink]="['fullscreen']">Fullscreen</a>
78
<a md-list-item [routerLink]="['grid-list']">Grid list</a>
89
<a md-list-item [routerLink]="['icon']">Icon</a>
10+
<a md-list-item [routerLink]="['input']">Input</a>
911
<a md-list-item [routerLink]="['list']">List</a>
1012
<a md-list-item [routerLink]="['menu']">Menu</a>
1113
<a md-list-item [routerLink]="['progress-bar']">Progress bar</a>
1214
<a md-list-item [routerLink]="['progress-spinner']">Progress Spinner</a>
1315
<a md-list-item [routerLink]="['radio']">Radios</a>
1416
<a md-list-item [routerLink]="['slide-toggle']">Slide Toggle</a>
1517
<a md-list-item [routerLink]="['tabs']">Tabs</a>
16-
<a md-list-item [routerLink]="['fullscreen']">Fullscreen</a>
1718
</md-nav-list>
1819

1920
<main>

src/e2e-app/e2e-app/routes.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,22 @@ import {ProgressBarE2E} from '../progress-bar/progress-bar-e2e';
1313
import {ProgressSpinnerE2E} from '../progress-spinner/progress-spinner-e2e';
1414
import {SlideToggleE2E} from '../slide-toggle/slide-toggle-e2e';
1515
import {FullscreenE2E} from '../fullscreen/fullscreen-e2e';
16+
import {InputE2E} from '../input/input-e2e';
1617

1718
export const E2E_APP_ROUTES: Routes = [
1819
{path: '', component: Home},
1920
{path: 'button', component: ButtonE2E},
2021
{path: 'checkbox', component: SimpleCheckboxes},
21-
{path: 'menu', component: MenuE2E},
22-
{path: 'icon', component: IconE2E},
23-
{path: 'radio', component: SimpleRadioButtons},
24-
{path: 'tabs', component: BasicTabs},
2522
{path: 'dialog', component: DialogE2E},
23+
{path: 'fullscreen', component: FullscreenE2E},
2624
{path: 'grid-list', component: GridListE2E},
25+
{path: 'icon', component: IconE2E},
26+
{path: 'input', component: InputE2E},
2727
{path: 'list', component: ListE2E},
28+
{path: 'menu', component: MenuE2E},
2829
{path: 'progress-bar', component: ProgressBarE2E},
2930
{path: 'progress-spinner', component: ProgressSpinnerE2E},
31+
{path: 'radio', component: SimpleRadioButtons},
3032
{path: 'slide-toggle', component: SlideToggleE2E},
31-
{path: 'fullscreen', component: FullscreenE2E}
33+
{path: 'tabs', component: BasicTabs},
3234
];

src/e2e-app/input/input-e2e.html

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<section>
2+
<p>
3+
<md-input-container>
4+
<input mdInput type="text" id="text-input" placeholder="Enter some text">
5+
</md-input-container>
6+
</p>
7+
<p>
8+
<md-input-container>
9+
<input mdInput type="number" id="number-input" placeholder="Enter a number">
10+
</md-input-container>
11+
</p>
12+
</section>

src/e2e-app/input/input-e2e.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import {Component} from '@angular/core';
2+
3+
4+
@Component({
5+
moduleId: module.id,
6+
selector: 'input-e2e',
7+
templateUrl: 'input-e2e.html',
8+
})
9+
export class InputE2E {}

0 commit comments

Comments
 (0)