diff --git a/.dockerignore b/.dockerignore
deleted file mode 100644
index c2658d7d1..000000000
--- a/.dockerignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules/
diff --git a/.gitignore b/.gitignore
index f93eca8d7..9b3a09fc9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,16 +1,14 @@
.idea
node_modules
jspm_packages
-link-checker-results.txt
-**/*npm-debug.log.*
-*.js
+npm-debug.log
+debug.log
+src/**/*.js
+!src/systemjs.config.extras.js
+!src/systemjs.config.js
+!src/systemjs-angular-loader.js
*.js.map
e2e/**/*.js
e2e/**/*.js.map
_test-output
_temp
-
-!karma*.js
-!protractor*.js
-!systemjs.config.js
-!wallaby.js
diff --git a/.travis.yml b/.travis.yml
index 20ff41e7d..808bc2c4e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -16,5 +16,5 @@ install:
- npm install
script:
- npm run lint
- - npm run test-once
+ - npm run test:once
- npm run e2e
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d9bc1b9f7..4c991b119 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,65 @@
+## Angular Documentation QuickStart Changelog
+Upgraders: for a fresh start, consider running these commands
+* `git clean -xdf`
+* `npm install`
+
+
+# 0.4.1 (2017-03-24)
+* Replace systemjs-angular-loader with version that works for IE
+
+
+# 0.4.0 (2017-03-24)
+* Update to Angular 4.0.0
+
+
+# 0.3.0 (2017-03-22)
+* Remove moduleId with a systemjs loader.
+
+
+# 0.2.22 (2017-01-05)
+* Add `non-essential-files.txt` and instructions to use it to README
+
+
+# 0.2.21 (2016-12-14)
+* Update to in-memory-web-api v.0.2.1
+
+
+# 0.2.20 (2016-12-07)
+* Update to Angular 2.3.0
+
+
+# 0.2.19 (2016-11-30)
+* remove upgrade mappings from `systemjs.config.js` PR #301
+
+
+# 0.2.18 (2016-11-30)
+* remove `exclude` clause from `tsconfig.json`; it was just confusing people
+* karma.config + karma-test-shim can handle multiple spec source paths (issue #294)
+* cosmetic `app.component.spec.ts` changes
+* cosmetic `karma.config.js` changes
+
+
+# 0.2.17 (2016-11-16)
+* Conform to updated QuickStart advice
+ * removed docker everywhere (was nice but not necessary)
+ * removed wallaby
+ * shrink styles.css
+ * refine tsconfig.json
+ * `AppComponent` uses interpolation
+
+
+# 0.2.16 (2016-11-14)
+* Update to Angular 2.2.0
+
+
+# 0.2.15 (2016-10-29)
+* Revert to Jasmine 2.4.1 because bug in 2.5.x (see [jasmine issue #1231](https://github.com/jasmine/jasmine/issues/1231))
+
+
+# 0.2.14 (2016-10-29)
+* Remove bootstrap.css install
+* Angular v2.1.2
+
# 0.2.13 (2016-10-20)
* Protractor 4
diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index 7ad0f4375..000000000
--- a/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# To build and run with Docker:
-#
-# $ docker build -t ng-quickstart .
-# $ docker run -it --rm -p 3000:3000 -p 3001:3001 ng-quickstart
-#
-FROM node:latest
-
-RUN mkdir -p /quickstart /home/nodejs && \
- groupadd -r nodejs && \
- useradd -r -g nodejs -d /home/nodejs -s /sbin/nologin nodejs && \
- chown -R nodejs:nodejs /home/nodejs
-
-WORKDIR /quickstart
-COPY package.json /quickstart/
-RUN npm install --unsafe-perm=true
-
-COPY . /quickstart
-RUN chown -R nodejs:nodejs /quickstart
-USER nodejs
-
-CMD npm start
diff --git a/README.md b/README.md
index d26f1edfb..aeccb7d76 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,14 @@
# Angular QuickStart Source
[![Build Status][travis-badge]][travis-badge-url]
+**This repository is now deprecated. The Angular Quickstart project was a nice starting point for creating Angular applications. Now we recommend using the [Angular CLI](https://github.com/angular/angular-cli) to create new Angular projects.**
+
+**Starting from 1 November 2017, all the Angular documentation, at [angular.io](https://angular.io), is based on the Angular CLI.**
+
+**Let's [get started](https://angular.io/guide/quickstart)**
+
+---
+
This repository holds the TypeScript source code of the [angular.io quickstart](https://angular.io/docs/ts/latest/quickstart.html),
the foundation for most of the documentation samples and potentially a good starting point for your application.
@@ -12,6 +20,24 @@ It exists primarily to get you started quickly with learning and prototyping in
We are unlikely to accept suggestions about how to grow this QuickStart into something it is not.
Please keep that in mind before posting issues and PRs.
+## Updating to a newer version of the Quickstart Repo
+
+From time to time the QuickStart will be enhanced with support for new features or to reflect
+changes to the [official Style Guide](https://angular.io/docs/ts/latest/guide/style-guide.html).
+
+You can update your existing project to an up-to-date QuickStart by following these instructions:
+- Create a new project using the [instructions below](#create-a-new-project-based-on-the-quickstart)
+- Copy the code you have in your project's `main.ts` file onto `src/app/main.ts` in the new project
+- Copy your old `app` folder into `src/app`
+- Delete `src/app/main.ts` if you have one (we now use `src/main.ts` instead)
+- Copy your old `index.html`, `styles.css` and `tsconfig.json` into `src/`
+- Install all your third party dependencies
+- Copy your old `e2e/` folder into `e2e/`
+- Copy over any other files you added to your project
+- Copy your old `.git` folder into your new project's root
+
+Now you can continue working on the new project.
+
## Prerequisites
Node.js and npm are essential to Angular development.
@@ -28,33 +54,55 @@ We recommend [nvm](https://github.com/creationix/nvm) for managing multiple vers
## Create a new project based on the QuickStart
Clone this repo into new project folder (e.g., `my-proj`).
-```bash
-git clone https://github.com/angular/quickstart my-proj
+```shell
+git clone https://github.com/angular/quickstart my-proj
cd my-proj
```
We have no intention of updating the source on `angular/quickstart`.
-Discard everything "git-like" by deleting the `.git` folder.
-```bash
-rm -rf .git # non-Windows
+Discard the `.git` folder..
+```shell
+rm -rf .git # OS/X (bash)
rd .git /S/Q # windows
```
+### Delete _non-essential_ files (optional)
+
+You can quickly delete the _non-essential_ files that concern testing and QuickStart repository maintenance
+(***including all git-related artifacts*** such as the `.git` folder and `.gitignore`!)
+by entering the following commands while in the project folder:
+
+##### OS/X (bash)
+```shell
+xargs rm -rf < non-essential-files.osx.txt
+rm src/app/*.spec*.ts
+rm non-essential-files.osx.txt
+```
+
+##### Windows
+```shell
+for /f %i in (non-essential-files.txt) do del %i /F /S /Q
+rd .git /s /q
+rd e2e /s /q
+```
### Create a new git repo
You could [start writing code](#start-development) now and throw it all away when you're done.
If you'd rather preserve your work under source control, consider taking the following steps.
Initialize this project as a *local git repo* and make the first commit:
-```bash
+```shell
git init
git add .
git commit -m "Initial commit"
```
+>Recover the deleted `.gitignore` from the QuickStart repository
+if you lost it in the _Delete non-essential files_ step.
+
Create a *remote repository* for this project on the service of your choice.
Grab its address (e.g. *`https://github.com//my-proj.git`*) and push the *local repo* to the *remote*.
-```bash
+```shell
git remote add origin
git push -u origin master
```
@@ -64,11 +112,13 @@ git push -u origin master
Install the npm packages described in the `package.json` and verify that it works:
-```bash
+```shell
npm install
npm start
```
+>Doesn't work in _Bash for Windows_ which does not support servers as of January, 2017.
+
The `npm start` command first compiles the application,
then simultaneously re-compiles and runs the `lite-server`.
Both the compiler and the server watch for file changes.
@@ -82,16 +132,16 @@ You're ready to write your application.
We've captured many of the most useful commands in npm scripts defined in the `package.json`:
* `npm start` - runs the compiler and a server at the same time, both in "watch mode".
-* `npm run tsc` - runs the TypeScript compiler once.
-* `npm run tsc:w` - runs the TypeScript compiler in watch mode; the process keeps running, awaiting changes to TypeScript files and re-compiling when it sees them.
-* `npm run lite` - runs the [lite-server](https://www.npmjs.com/package/lite-server), a light-weight, static file server, written and maintained by
+* `npm run build` - runs the TypeScript compiler once.
+* `npm run build:w` - runs the TypeScript compiler in watch mode; the process keeps running, awaiting changes to TypeScript files and re-compiling when it sees them.
+* `npm run serve` - runs the [lite-server](https://www.npmjs.com/package/lite-server), a light-weight, static file server, written and maintained by
[John Papa](https://github.com/johnpapa) and
[Christopher Martin](https://github.com/cgmartin)
with excellent support for Angular apps that use routing.
Here are the test related scripts:
* `npm test` - compiles, runs and watches the karma unit tests
-* `npm run e2e` - run protractor e2e tests, written in JavaScript (*e2e-spec.js)
+* `npm run e2e` - compiles and run protractor e2e tests, written in Typescript (*e2e-spec.ts)
## Testing
@@ -104,9 +154,9 @@ These tools are configured for specific conventions described below.
We recommend that you shut down one before starting another.*
### Unit Tests
-TypeScript unit-tests are usually in the `app` folder. Their filenames must end in `.spec`.
+TypeScript unit-tests are usually in the `src/app` folder. Their filenames must end in `.spec.ts`.
-Look for the example `app/app.component.spec.ts`.
+Look for the example `src/app/app.component.spec.ts`.
Add more `.spec.ts` files as you wish; we configured karma to find them.
Run it with `npm test`
@@ -123,17 +173,17 @@ restart it. No worries; it's pretty quick.
### End-to-end (E2E) Tests
-E2E tests are in the `e2e` directory, side by side with the `app` folder.
+E2E tests are in the `e2e` directory, side by side with the `src` folder.
Their filenames must end in `.e2e-spec.ts`.
Look for the example `e2e/app.e2e-spec.ts`.
Add more `.e2e-spec.js` files as you wish (although one usually suffices for small projects);
-we configured protractor to find them.
+we configured Protractor to find them.
Thereafter, run them with `npm run e2e`.
-That command first compiles, then simultaneously starts the Http-Server at `localhost:8080`
-and launches protractor.
+That command first compiles, then simultaneously starts the `lite-server` at `localhost:8080`
+and launches Protractor.
The pass/fail test results appear at the bottom of the terminal window.
A custom reporter (see `protractor.config.js`) generates a `./_test-output/protractor-results.txt` file
diff --git a/app/app.component.spec.ts b/app/app.component.spec.ts
deleted file mode 100644
index 53a68593d..000000000
--- a/app/app.component.spec.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-/* tslint:disable:no-unused-variable */
-import { AppComponent } from './app.component';
-
-import { TestBed } from '@angular/core/testing';
-
-import { By } from '@angular/platform-browser';
-
-//////// SPECS /////////////
-
-/// Delete this
-describe('Smoke test', () => {
- it('should run a passing test', () => {
- expect(true).toEqual(true, 'should pass');
- });
-});
-
-describe('AppComponent with TCB', function () {
- beforeEach(() => {
- TestBed.configureTestingModule({declarations: [AppComponent]});
- });
-
- it('should instantiate component', () => {
- let fixture = TestBed.createComponent(AppComponent);
- expect(fixture.componentInstance instanceof AppComponent).toBe(true, 'should create AppComponent');
- });
-
- it('should have expected
text', () => {
- let fixture = TestBed.createComponent(AppComponent);
- fixture.detectChanges();
-
- let h1 = fixture.debugElement.query(el => el.name === 'h1').nativeElement; // it works
-
- h1 = fixture.debugElement.query(By.css('h1')).nativeElement; // preferred
-
- expect(h1.innerText).toMatch(/angular app/i, '
should say something about "Angular App"');
- });
-});
diff --git a/app/app.component.ts b/app/app.component.ts
deleted file mode 100644
index 83919ca76..000000000
--- a/app/app.component.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
- selector: 'my-app',
- template: '
My First Angular App
'
-})
-export class AppComponent { }
diff --git a/bs-config.e2e.json b/bs-config.e2e.json
new file mode 100644
index 000000000..24570dbcc
--- /dev/null
+++ b/bs-config.e2e.json
@@ -0,0 +1,14 @@
+{
+ "open": false,
+ "logLevel": "silent",
+ "port": 8080,
+ "server": {
+ "baseDir": "src",
+ "routes": {
+ "/node_modules": "node_modules"
+ },
+ "middleware": {
+ "0": null
+ }
+ }
+}
diff --git a/bs-config.json b/bs-config.json
new file mode 100644
index 000000000..4e5859526
--- /dev/null
+++ b/bs-config.json
@@ -0,0 +1,8 @@
+{
+ "server": {
+ "baseDir": "src",
+ "routes": {
+ "/node_modules": "node_modules"
+ }
+ }
+}
diff --git a/e2e/app.e2e-spec.ts b/e2e/app.e2e-spec.ts
index 34b496c76..67f5d8d6a 100644
--- a/e2e/app.e2e-spec.ts
+++ b/e2e/app.e2e-spec.ts
@@ -2,8 +2,7 @@ import { browser, element, by } from 'protractor';
describe('QuickStart E2E Tests', function () {
- let expectedMsg = 'My First Angular App';
-
+ let expectedMsg = 'Hello Angular';
beforeEach(function () {
browser.get('');
diff --git a/tsconfig.json b/e2e/tsconfig.json
similarity index 51%
rename from tsconfig.json
rename to e2e/tsconfig.json
index 0686497d8..2c7260d1b 100644
--- a/tsconfig.json
+++ b/e2e/tsconfig.json
@@ -6,16 +6,8 @@
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
- "removeComments": false,
+ "lib": [ "es2015", "dom" ],
"noImplicitAny": true,
- "suppressImplicitAnyIndexErrors": true,
- "typeRoots": [
- "./node_modules/@types/"
- ]
- },
- "compileOnSave": true,
- "exclude": [
- "node_modules/*",
- "**/*-aot.ts"
- ]
+ "suppressImplicitAnyIndexErrors": true
+ }
}
diff --git a/karma-test-shim.js b/karma-test-shim.js
index 19fcc89fe..fe5aa7761 100644
--- a/karma-test-shim.js
+++ b/karma-test-shim.js
@@ -1,4 +1,3 @@
-// #docregion
// /*global jasmine, __karma__, window*/
Error.stackTraceLimit = 0; // "No stacktrace"" is usually best for app testing.
@@ -7,7 +6,10 @@ Error.stackTraceLimit = 0; // "No stacktrace"" is usually best for app testing.
jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000;
-var builtPath = '/base/app/';
+// builtPaths: root paths for output ("built") files
+// get from karma.config.js, then prefix with '/base/' (default is 'src/')
+var builtPaths = (__karma__.config.builtPaths || ['src/'])
+ .map(function(p) { return '/base/'+p;});
__karma__.loaded = function () { };
@@ -19,8 +21,12 @@ function isSpecFile(path) {
return /\.spec\.(.*\.)?js$/.test(path);
}
+// Is a "built" file if is JavaScript file in one of the "built" folders
function isBuiltFile(path) {
- return isJsFile(path) && (path.substr(0, builtPath.length) == builtPath);
+ return isJsFile(path) &&
+ builtPaths.reduce(function(keep, bp) {
+ return keep || (path.substr(0, bp.length) === bp);
+ }, false);
}
var allSpecFiles = Object.keys(window.__karma__.files)
@@ -28,7 +34,8 @@ var allSpecFiles = Object.keys(window.__karma__.files)
.filter(isBuiltFile);
System.config({
- baseURL: '/base',
+ // Base URL for System.js calls. 'base/' is where Karma serves files from.
+ baseURL: 'base/src',
// Extend usual application package list with test folder
packages: { 'testing': { main: 'index.js', defaultExtension: 'js' } },
diff --git a/karma.conf.js b/karma.conf.js
index b67ba3d15..5a51e814f 100644
--- a/karma.conf.js
+++ b/karma.conf.js
@@ -1,23 +1,27 @@
-// #docregion
module.exports = function(config) {
- var appBase = 'app/'; // transpiled app JS and map files
- var appSrcBase = 'app/'; // app source TS files
- var appAssets = '/base/app/'; // component assets fetched by Angular's compiler
+ var appBase = 'src/'; // transpiled app JS and map files
+ var appSrcBase = appBase; // app source TS files
- var testBase = 'testing/'; // transpiled test JS and map files
- var testSrcBase = 'testing/'; // test source TS files
+ // Testing helpers (optional) are conventionally in a folder called `testing`
+ var testingBase = 'testing/'; // transpiled test JS and map files
+ var testingSrcBase = 'testing/'; // test source TS files
config.set({
basePath: '',
frameworks: ['jasmine'],
+
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
- require('karma-jasmine-html-reporter'), // click "Debug" in browser to see it
- require('karma-htmlfile-reporter') // crashing w/ strange socket error
+ require('karma-jasmine-html-reporter')
],
+ client: {
+ builtPaths: [appBase, testingBase], // add more spec base paths as needed
+ clearContext: false // leave Jasmine Spec Runner output visible in browser
+ },
+
customLaunchers: {
// From the CLI. Not used here but interesting
// chrome setup for travis CI using chromium
@@ -26,13 +30,13 @@ module.exports = function(config) {
flags: ['--no-sandbox']
}
},
+
files: [
// System.js for module loading
'node_modules/systemjs/dist/system.src.js',
// Polyfills
'node_modules/core-js/client/shim.js',
- 'node_modules/reflect-metadata/Reflect.js',
// zone.js
'node_modules/zone.js/dist/zone.js',
@@ -52,13 +56,13 @@ module.exports = function(config) {
{ pattern: 'node_modules/@angular/**/*.js', included: false, watched: false },
{ pattern: 'node_modules/@angular/**/*.js.map', included: false, watched: false },
- { pattern: 'systemjs.config.js', included: false, watched: false },
- { pattern: 'systemjs.config.extras.js', included: false, watched: false },
- 'karma-test-shim.js',
+ { pattern: appBase + '/systemjs.config.js', included: false, watched: false },
+ { pattern: appBase + '/systemjs.config.extras.js', included: false, watched: false },
+ 'karma-test-shim.js', // optionally extend SystemJS mapping e.g., with barrels
// transpiled application & spec code paths loaded via module imports
{ pattern: appBase + '**/*.js', included: false, watched: true },
- { pattern: testBase + '**/*.js', included: false, watched: true },
+ { pattern: testingBase + '**/*.js', included: false, watched: true },
// Asset (HTML & CSS) paths loaded via Angular's component compiler
@@ -67,32 +71,21 @@ module.exports = function(config) {
{ pattern: appBase + '**/*.css', included: false, watched: true },
// Paths for debugging with source maps in dev tools
- { pattern: appSrcBase + '**/*.ts', included: false, watched: false },
+ { pattern: appBase + '**/*.ts', included: false, watched: false },
{ pattern: appBase + '**/*.js.map', included: false, watched: false },
- { pattern: testSrcBase + '**/*.ts', included: false, watched: false },
- { pattern: testBase + '**/*.js.map', included: false, watched: false }
+ { pattern: testingSrcBase + '**/*.ts', included: false, watched: false },
+ { pattern: testingBase + '**/*.js.map', included: false, watched: false}
],
// Proxied base paths for loading assets
proxies: {
- // required for component assets fetched by Angular's compiler
- "/app/": appAssets
+ // required for modules fetched by SystemJS
+ '/base/src/node_modules/': '/base/node_modules/'
},
exclude: [],
preprocessors: {},
- // disabled HtmlReporter; suddenly crashing w/ strange socket error
- reporters: ['progress', 'kjhtml'],//'html'],
-
- // HtmlReporter configuration
- htmlReporter: {
- // Open this file to see results in browser
- outputFile: '_test-output/tests.html',
-
- // Optional
- pageTitle: 'Unit Tests',
- subPageTitle: __dirname
- },
+ reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
diff --git a/non-essential-files.osx.txt b/non-essential-files.osx.txt
new file mode 100644
index 000000000..653a8db9b
--- /dev/null
+++ b/non-essential-files.osx.txt
@@ -0,0 +1 @@
+.git .gitignore .travis.yml bs-config.e2e.json CHANGELOG.md e2e favicon.ico karma.conf.js karma-test-shim.js LICENSE non-essential-files.txt protractor.config.js README.md
\ No newline at end of file
diff --git a/non-essential-files.txt b/non-essential-files.txt
new file mode 100644
index 000000000..644808a66
--- /dev/null
+++ b/non-essential-files.txt
@@ -0,0 +1,15 @@
+.git
+.gitignore
+.travis.yml
+*.spec*.ts
+bs-config.e2e.json
+CHANGELOG.md
+e2e
+favicon.ico
+karma.conf.js
+karma-test-shim.js
+LICENSE
+non-essential-files.txt
+non-essential-files.osx.txt
+protractor.config.js
+README.md
diff --git a/package.json b/package.json
index b44cd6a27..25513978a 100644
--- a/package.json
+++ b/package.json
@@ -3,70 +3,61 @@
"version": "1.0.0",
"description": "QuickStart package.json from the documentation, supplemented with testing support",
"scripts": {
- "start": "tsc && concurrently \"tsc -w\" \"lite-server\" ",
- "docker-build": "docker build -t ng2-quickstart .",
- "docker": "npm run docker-build && docker run -it --rm -p 3000:3000 -p 3001:3001 ng2-quickstart",
- "pree2e": "npm run webdriver:update",
- "e2e": "tsc && concurrently \"http-server -s\" \"protractor protractor.config.js\" --kill-others --success first",
- "lint": "tslint ./app/**/*.ts -t verbose",
- "lite": "lite-server",
- "test": "tsc && concurrently \"tsc -w\" \"karma start karma.conf.js\"",
- "test-once": "tsc && karma start karma.conf.js --single-run",
- "tsc": "tsc",
- "tsc:w": "tsc -w",
- "webdriver:update": "webdriver-manager update"
+ "build": "tsc -p src/",
+ "build:watch": "tsc -p src/ -w",
+ "build:e2e": "tsc -p e2e/",
+ "serve": "lite-server -c=bs-config.json",
+ "serve:e2e": "lite-server -c=bs-config.e2e.json",
+ "prestart": "npm run build",
+ "start": "concurrently \"npm run build:watch\" \"npm run serve\"",
+ "pree2e": "npm run build:e2e",
+ "e2e": "concurrently \"npm run serve:e2e\" \"npm run protractor\" --kill-others --success first",
+ "preprotractor": "webdriver-manager update",
+ "protractor": "protractor protractor.config.js",
+ "pretest": "npm run build",
+ "test": "concurrently \"npm run build:watch\" \"karma start karma.conf.js\"",
+ "pretest:once": "npm run build",
+ "test:once": "karma start karma.conf.js --single-run",
+ "lint": "tslint ./src/**/*.ts -t verbose"
},
"keywords": [],
"author": "",
- "licenses": [
- {
- "type": "MIT",
- "url": "https://github.com/angular/angular.io/blob/master/LICENSE"
- }
- ],
+ "license": "MIT",
"dependencies": {
- "@angular/common": "~2.1.1",
- "@angular/compiler": "~2.1.1",
- "@angular/core": "~2.1.1",
- "@angular/forms": "~2.1.1",
- "@angular/http": "~2.1.1",
- "@angular/platform-browser": "~2.1.1",
- "@angular/platform-browser-dynamic": "~2.1.1",
- "@angular/router": "~3.1.1",
- "@angular/upgrade": "~2.1.1",
+ "@angular/common": "~4.3.4",
+ "@angular/compiler": "~4.3.4",
+ "@angular/core": "~4.3.4",
+ "@angular/forms": "~4.3.4",
+ "@angular/http": "~4.3.4",
+ "@angular/platform-browser": "~4.3.4",
+ "@angular/platform-browser-dynamic": "~4.3.4",
+ "@angular/router": "~4.3.4",
- "angular-in-memory-web-api": "~0.1.13",
- "bootstrap": "^3.3.7",
- "systemjs": "0.19.39",
+ "angular-in-memory-web-api": "~0.3.0",
+ "systemjs": "0.19.40",
"core-js": "^2.4.1",
- "reflect-metadata": "^0.1.8",
- "rxjs": "5.0.0-beta.12",
- "zone.js": "^0.6.26"
+ "rxjs": "5.0.1",
+ "zone.js": "^0.8.4"
},
"devDependencies": {
- "concurrently": "^3.1.0",
+ "concurrently": "^3.2.0",
"lite-server": "^2.2.2",
- "typescript": "^2.0.3",
+ "typescript": "~2.1.0",
"canonical-path": "0.0.2",
- "http-server": "^0.9.0",
"tslint": "^3.15.1",
- "lodash": "^4.16.2",
- "jasmine-core": "~2.5.2",
+ "lodash": "^4.16.4",
+ "jasmine-core": "~2.4.1",
"karma": "^1.3.0",
"karma-chrome-launcher": "^2.0.0",
"karma-cli": "^1.0.1",
- "karma-htmlfile-reporter": "^0.3.4",
"karma-jasmine": "^1.0.2",
"karma-jasmine-html-reporter": "^0.2.2",
- "protractor": "4.0.9",
- "webdriver-manager": "10.2.5",
+ "protractor": "~4.0.14",
"rimraf": "^2.5.4",
- "@types/core-js": "^0.9.34",
- "@types/node": "^6.0.45",
- "@types/jasmine": "^2.5.35",
- "@types/selenium-webdriver": "^2.53.32"
+ "@types/node": "^6.0.46",
+ "@types/jasmine": "2.5.36"
},
"repository": {}
}
diff --git a/protractor.config.js b/protractor.config.js
index 8314510c5..8d4e0416a 100644
--- a/protractor.config.js
+++ b/protractor.config.js
@@ -5,7 +5,7 @@
//
// AND THEN EVERYTIME ...
// 1. Compile with `tsc`
-// 2. Make sure the test server (e.g., http-server: localhost:8080) is running.
+// 2. Make sure the test server (e.g., lite-server: localhost:8080) is running.
// 3. ./node_modules/.bin/protractor protractor.config.js
//
// To do all steps, try: `npm run e2e`
diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts
new file mode 100644
index 000000000..776902446
--- /dev/null
+++ b/src/app/app.component.spec.ts
@@ -0,0 +1,33 @@
+import { AppComponent } from './app.component';
+
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { By } from '@angular/platform-browser';
+import { DebugElement } from '@angular/core';
+
+describe('AppComponent', function () {
+ let de: DebugElement;
+ let comp: AppComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AppComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AppComponent);
+ comp = fixture.componentInstance;
+ de = fixture.debugElement.query(By.css('h1'));
+ });
+
+ it('should create component', () => expect(comp).toBeDefined() );
+
+ it('should have expected