From d70a669f79fb42a3b8f93b60b397bba81a9acceb Mon Sep 17 00:00:00 2001 From: Jeremy Elbourn Date: Mon, 17 Jul 2017 11:14:15 -0700 Subject: [PATCH] chore: add material-examples to e2e-app (#5735) --- e2e/components/card-e2e.spec.ts | 15 +++++++++++++++ e2e/components/menu-e2e.spec.ts | 14 ++++++++++---- package.json | 2 +- src/e2e-app/e2e-app-module.ts | 7 +++++-- src/e2e-app/e2e-app/routes.ts | 3 +++ src/e2e-app/system-config.ts | 3 ++- src/e2e-app/tsconfig-build.json | 9 ++++++--- .../card-fancy/card-fancy-example.html | 2 +- src/material-examples/index.ts | 1 + src/material-examples/public_api.ts | 2 ++ tools/gulp/tasks/e2e.ts | 3 ++- tsconfig.json | 3 ++- 12 files changed, 50 insertions(+), 14 deletions(-) create mode 100644 e2e/components/card-e2e.spec.ts create mode 100644 src/material-examples/index.ts diff --git a/e2e/components/card-e2e.spec.ts b/e2e/components/card-e2e.spec.ts new file mode 100644 index 000000000000..cf1caa316fed --- /dev/null +++ b/e2e/components/card-e2e.spec.ts @@ -0,0 +1,15 @@ +import {browser, by, element} from 'protractor'; +import {screenshot} from '../screenshot'; + +describe('md-card', () => { + describe('card-fancy', () => { + beforeEach(() => browser.get('/card-fancy')); + + it('should show a card', async () => { + const card = element(by.tagName('md-card')); + expect(card).toBeDefined(); + + screenshot('fancy card example'); + }); + }); +}); diff --git a/e2e/components/menu-e2e.spec.ts b/e2e/components/menu-e2e.spec.ts index 4b57e5b93570..3f253e09c073 100644 --- a/e2e/components/menu-e2e.spec.ts +++ b/e2e/components/menu-e2e.spec.ts @@ -1,4 +1,4 @@ -import {Key, protractor, browser, by, element} from 'protractor'; +import {Key, protractor, browser, by, element, ExpectedConditions} from 'protractor'; import {screenshot} from '../screenshot'; import { expectToExist, @@ -8,6 +8,9 @@ import { pressKeys, } from '../util/index'; +const presenceOf = ExpectedConditions.presenceOf; +const not = ExpectedConditions.not; + describe('menu', () => { const menuSelector = '.mat-menu-panel'; @@ -50,14 +53,15 @@ describe('menu', () => { screenshot(); }); - it('should support multiple triggers opening the same menu', () => { + it('should support multiple triggers opening the same menu', async () => { page.triggerTwo().click(); expect(page.menu().getText()).toEqual('One\nTwo\nThree\nFour'); expectAlignedWith(page.menu(), '#trigger-two'); page.backdrop().click(); - expectToExist(menuSelector, false); + await browser.wait(not(presenceOf(element(by.css(menuSelector))))); + await browser.wait(not(presenceOf(element(by.css('.cdk-overlay-backdrop'))))); page.trigger().click(); @@ -65,7 +69,9 @@ describe('menu', () => { expectAlignedWith(page.menu(), '#trigger'); page.backdrop().click(); - expectToExist(menuSelector, false); + + await browser.wait(not(presenceOf(element(by.css(menuSelector))))); + await browser.wait(not(presenceOf(element(by.css('.cdk-overlay-backdrop'))))); }); it('should mirror classes on host to menu template in overlay', () => { diff --git a/package.json b/package.json index 370c6d43dfe4..66a30551e585 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "@types/node": "^7.0.21", "@types/run-sequence": "^0.0.29", "autoprefixer": "^6.7.6", - "axe-core": "^2.2.1", + "axe-core": "^2.3.1", "axe-webdriverjs": "^1.1.1", "chalk": "^1.1.3", "conventional-changelog": "^1.1.3", diff --git a/src/e2e-app/e2e-app-module.ts b/src/e2e-app/e2e-app-module.ts index 1d16ac3c4f02..a8fc44bf4a5a 100644 --- a/src/e2e-app/e2e-app-module.ts +++ b/src/e2e-app/e2e-app-module.ts @@ -24,8 +24,9 @@ import { OverlayContainer, FullscreenOverlayContainer, MdGridListModule, MdProgressBarModule, MdProgressSpinnerModule, MdTabsModule, MdRadioModule, MdSlideToggleModule, MdMenuModule, MdListModule, MdInputModule, MdIconModule, MdDialogModule, MdCheckboxModule, MdButtonModule, - MdSidenavModule + MdSidenavModule, MdNativeDateModule, } from '@angular/material'; +import {ExampleModule} from '@angular/material-examples'; /** * NgModule that contains all Material modules that are required to serve the e2e-app. @@ -45,7 +46,8 @@ import { MdRadioModule, MdSidenavModule, MdSlideToggleModule, - MdTabsModule + MdTabsModule, + MdNativeDateModule, ] }) export class E2eMaterialModule {} @@ -56,6 +58,7 @@ export class E2eMaterialModule {} RouterModule.forRoot(E2E_APP_ROUTES), E2eMaterialModule, NoopAnimationsModule, + ExampleModule, ], declarations: [ BasicTabs, diff --git a/src/e2e-app/e2e-app/routes.ts b/src/e2e-app/e2e-app/routes.ts index 47f638f43e42..406d381b455a 100644 --- a/src/e2e-app/e2e-app/routes.ts +++ b/src/e2e-app/e2e-app/routes.ts @@ -1,4 +1,6 @@ import {Routes} from '@angular/router'; +import {CardFancyExample} from '@angular/material-examples'; + import {Home} from './e2e-app'; import {ButtonE2E} from '../button/button-e2e'; import {BasicTabs} from '../tabs/tabs-e2e'; @@ -35,4 +37,5 @@ export const E2E_APP_ROUTES: Routes = [ {path: 'sidenav', component: SidenavE2E}, {path: 'slide-toggle', component: SlideToggleE2E}, {path: 'tabs', component: BasicTabs}, + {path: 'card-fancy', component: CardFancyExample}, ]; diff --git a/src/e2e-app/system-config.ts b/src/e2e-app/system-config.ts index a4546adb2d2e..13909bac1e35 100644 --- a/src/e2e-app/system-config.ts +++ b/src/e2e-app/system-config.ts @@ -26,7 +26,8 @@ System.config({ 'node:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', '@angular/material': 'dist/bundles/material.umd.js', - '@angular/cdk': 'dist/bundles/cdk.umd.js' + '@angular/cdk': 'dist/bundles/cdk.umd.js', + '@angular/material-examples': 'dist/bundles/material-examples.umd.js' }, packages: { // Thirdparty barrels. diff --git a/src/e2e-app/tsconfig-build.json b/src/e2e-app/tsconfig-build.json index a27cd3f48534..afc999f9618c 100644 --- a/src/e2e-app/tsconfig-build.json +++ b/src/e2e-app/tsconfig-build.json @@ -7,7 +7,9 @@ "experimentalDecorators": true, // TODO(paul): Remove once Angular has been upgraded and supports noUnusedParameters in AOT. "noUnusedParameters": false, - "strictNullChecks": true, + // Don't use strict nulls for the e2e-app because the material-examples are not + // strict-null compliant. + "strictNullChecks": false, "lib": ["es6", "es2015", "dom"], "module": "commonjs", "moduleResolution": "node", @@ -20,10 +22,11 @@ "typeRoots": [ "../../node_modules/@types/!(node)" ], - "baseUrl": "", + "baseUrl": ".", "paths": { "@angular/material": ["./material"], - "@angular/cdk": ["./cdk"] + "@angular/cdk": ["./cdk"], + "@angular/material-examples": ["./material-examples"] } }, "files": [ diff --git a/src/material-examples/card-fancy/card-fancy-example.html b/src/material-examples/card-fancy/card-fancy-example.html index 07d25dfb8d8e..45211a831f4f 100644 --- a/src/material-examples/card-fancy/card-fancy-example.html +++ b/src/material-examples/card-fancy/card-fancy-example.html @@ -4,7 +4,7 @@ Shiba Inu Dog Breed - + Photo of a Shiba Inu

The Shiba Inu is the smallest of the six original and distinct spitz breeds of dog from Japan. diff --git a/src/material-examples/index.ts b/src/material-examples/index.ts new file mode 100644 index 000000000000..4aaf8f92eda0 --- /dev/null +++ b/src/material-examples/index.ts @@ -0,0 +1 @@ +export * from './public_api'; diff --git a/src/material-examples/public_api.ts b/src/material-examples/public_api.ts index fb5467a485a3..c013816b6706 100644 --- a/src/material-examples/public_api.ts +++ b/src/material-examples/public_api.ts @@ -1,2 +1,4 @@ export * from './example-data'; export * from './example-module'; +export * from './datepicker-overview/datepicker-overview-example'; +export * from './card-fancy/card-fancy-example'; diff --git a/tools/gulp/tasks/e2e.ts b/tools/gulp/tasks/e2e.ts index d4932a9ef828..fd77e3f5159a 100644 --- a/tools/gulp/tasks/e2e.ts +++ b/tools/gulp/tasks/e2e.ts @@ -34,7 +34,7 @@ task('e2e', sequenceTask( /** Task that builds the e2e-app in AOT mode. */ task('e2e-app:build', sequenceTask( 'clean', - ['material:build-release', 'cdk:build-release'], + ['material:build-release', 'cdk:build-release', 'material-examples:build-release'], ['e2e-app:copy-release', 'e2e-app:copy-assets'], 'e2e-app:build-ts' )); @@ -76,5 +76,6 @@ task('serve:e2eapp:watch', ['serve:e2eapp', 'material:watch', ':watch:e2eapp']); task('e2e-app:copy-release', () => { copySync(join(releasesDir, 'material'), join(outDir, 'material')); copySync(join(releasesDir, 'cdk'), join(outDir, 'cdk')); + copySync(join(releasesDir, 'material-examples'), join(outDir, 'material-examples')); }); diff --git a/tsconfig.json b/tsconfig.json index d4417e67f263..8ef1ee46270c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,7 +17,8 @@ "paths": { "@angular/material": ["./src/lib/public_api.ts"], "@angular/cdk": ["./src/cdk/public_api.ts"], - "@angular/cdk/testing": ["./src/cdk/testing"] + "@angular/cdk/testing": ["./src/cdk/testing"], + "@angular/material-examples": ["./src/material-examples"] } }, "include": [