docs(upgrade) switch from TSD to Typings
closes #873 Also switch Protractor back to JS for now. Conversion not worth it because of ambient type conflicts, until Protractor ships with its own typings. Also remove some unneeded type <reference>s from examples and guide.
This commit is contained in:
parent
a51df8cdd4
commit
2a057a5bd1
|
@ -2,5 +2,3 @@ app/**/*.js
|
||||||
app/**/*.js.map
|
app/**/*.js.map
|
||||||
test/unit/**/*.js
|
test/unit/**/*.js
|
||||||
test/unit/**/*.js.map
|
test/unit/**/*.js.map
|
||||||
test/e2e/**/*.js
|
|
||||||
test/e2e/**/*.js.map
|
|
||||||
|
|
|
@ -1,9 +1,4 @@
|
||||||
// #docregion pre-bootstrap
|
// #docregion pre-bootstrap
|
||||||
// #docregion typings
|
|
||||||
/// <reference path="../../typings/angularjs/angular.d.ts" />
|
|
||||||
/// <reference path="../../typings/angularjs/angular-resource.d.ts" />
|
|
||||||
/// <reference path="../../typings/angularjs/angular-route.d.ts" />
|
|
||||||
// #enddocregion
|
|
||||||
|
|
||||||
import core from './core/core.module';
|
import core from './core/core.module';
|
||||||
import phoneList from './phone_list/phone_list.module';
|
import phoneList from './phone_list/phone_list.module';
|
||||||
|
|
|
@ -18,7 +18,8 @@
|
||||||
"tmp": "0.0.23",
|
"tmp": "0.0.23",
|
||||||
"bower": "^1.3.1",
|
"bower": "^1.3.1",
|
||||||
"shelljs": "^0.2.6",
|
"shelljs": "^0.2.6",
|
||||||
"typescript": "1.7.3"
|
"typescript": "1.7.3",
|
||||||
|
"typings": "^0.6.8"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"postinstall": "bower install",
|
"postinstall": "bower install",
|
||||||
|
@ -36,6 +37,7 @@
|
||||||
"preprotractor": "npm run update-webdriver",
|
"preprotractor": "npm run update-webdriver",
|
||||||
"protractor": "protractor test/protractor-conf.js",
|
"protractor": "protractor test/protractor-conf.js",
|
||||||
|
|
||||||
|
"typings": "typings",
|
||||||
"tsc": "tsc -p . -w"
|
"tsc": "tsc -p . -w"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
/* http://docs.angularjs.org/guide/dev_guide.e2e-testing */
|
/* http://docs.angularjs.org/guide/dev_guide.e2e-testing */
|
||||||
// #docregion declares
|
|
||||||
declare var browser:any, element:any, by:any;
|
|
||||||
// #enddocregion declares
|
|
||||||
|
|
||||||
describe('PhoneCat App', function() {
|
describe('PhoneCat App', function() {
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
// #docregion
|
|
||||||
/// <reference path="../typings/jasmine/jasmine.d.ts" />
|
|
||||||
/// <reference path="../typings/angularjs/angular-mocks.d.ts" />
|
|
|
@ -8,6 +8,8 @@
|
||||||
"removeComments": false
|
"removeComments": false
|
||||||
},
|
},
|
||||||
"exclude": [
|
"exclude": [
|
||||||
"node_modules"
|
"node_modules",
|
||||||
|
"typings/main.d.ts",
|
||||||
|
"typings/main"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"ambientDependencies": {
|
||||||
|
"angular": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular.d.ts#3bebbe1baee04846cc46ed7249e8117e4cd7c7ff",
|
||||||
|
"angular-mocks": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular-mocks.d.ts#77dd2668f85730372aa8e62152e652048e8b6b87",
|
||||||
|
"angular-resource": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular-resource.d.ts#c6609aff88f2c59e4df9adb93df5c7932adfd7b4",
|
||||||
|
"angular-route": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular-route.d.ts#cf172aab99c3139a718aa8e65398a22c53dd7ead",
|
||||||
|
"jasmine": "github:DefinitelyTyped/DefinitelyTyped/jasmine/jasmine.d.ts#26c98c8a9530c44f8c801ccc3b2057e2101187ee",
|
||||||
|
"jquery": "github:DefinitelyTyped/DefinitelyTyped/jquery/jquery.d.ts#cf2a968f0edd7d30773f7d23fe3708fa029d5ab7"
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,5 +2,3 @@ app/**/*.js
|
||||||
app/**/*.js.map
|
app/**/*.js.map
|
||||||
test/unit/**/*.js
|
test/unit/**/*.js
|
||||||
test/unit/**/*.js.map
|
test/unit/**/*.js.map
|
||||||
test/e2e/**/*.js
|
|
||||||
test/e2e/**/*.js.map
|
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
/// <reference path="../../typings/angularjs/angular.d.ts" />
|
|
||||||
/// <reference path="../../typings/angularjs/angular-resource.d.ts" />
|
|
||||||
/// <reference path="../../typings/angularjs/angular-route.d.ts" />
|
|
||||||
|
|
||||||
// #docregion adapter-import
|
// #docregion adapter-import
|
||||||
import {UpgradeAdapter} from 'angular2/upgrade';
|
import {UpgradeAdapter} from 'angular2/upgrade';
|
||||||
// #enddocregion adapter-import
|
// #enddocregion adapter-import
|
||||||
|
|
|
@ -24,7 +24,8 @@
|
||||||
"tmp": "0.0.23",
|
"tmp": "0.0.23",
|
||||||
"bower": "^1.3.1",
|
"bower": "^1.3.1",
|
||||||
"shelljs": "^0.2.6",
|
"shelljs": "^0.2.6",
|
||||||
"typescript": "1.7.3"
|
"typescript": "1.7.3",
|
||||||
|
"typings": "^0.6.8"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"postinstall": "bower install",
|
"postinstall": "bower install",
|
||||||
|
@ -42,6 +43,7 @@
|
||||||
"preprotractor": "npm run update-webdriver",
|
"preprotractor": "npm run update-webdriver",
|
||||||
"protractor": "protractor test/protractor-conf.js",
|
"protractor": "protractor test/protractor-conf.js",
|
||||||
|
|
||||||
|
"typings": "typings",
|
||||||
"tsc": "tsc -p . -w"
|
"tsc": "tsc -p . -w"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,8 +29,8 @@ describe('PhoneCat App', function() {
|
||||||
|
|
||||||
query.clear();
|
query.clear();
|
||||||
// https://github.com/angular/protractor/issues/2019
|
// https://github.com/angular/protractor/issues/2019
|
||||||
let str = 'motorola';
|
var str = 'motorola';
|
||||||
for (let i:number = 0; i < str.length; i++) {
|
for (var i = 0; i < str.length; i++) {
|
||||||
query.sendKeys(str.charAt(i));
|
query.sendKeys(str.charAt(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,8 +50,8 @@ describe('PhoneCat App', function() {
|
||||||
|
|
||||||
//let's narrow the dataset to make the test assertions shorter
|
//let's narrow the dataset to make the test assertions shorter
|
||||||
// https://github.com/angular/protractor/issues/2019
|
// https://github.com/angular/protractor/issues/2019
|
||||||
let str = 'tablet';
|
var str = 'tablet';
|
||||||
for (let i:number = 0; i < str.length; i++) {
|
for (var i = 0; i < str.length; i++) {
|
||||||
query.sendKeys(str.charAt(i));
|
query.sendKeys(str.charAt(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,8 +72,8 @@ describe('PhoneCat App', function() {
|
||||||
it('should render phone specific links', function() {
|
it('should render phone specific links', function() {
|
||||||
var query = element(by.css('input'));
|
var query = element(by.css('input'));
|
||||||
// https://github.com/angular/protractor/issues/2019
|
// https://github.com/angular/protractor/issues/2019
|
||||||
let str = 'nexus';
|
var str = 'nexus';
|
||||||
for (let i:number = 0; i < str.length; i++) {
|
for (var i = 0; i < str.length; i++) {
|
||||||
query.sendKeys(str.charAt(i));
|
query.sendKeys(str.charAt(i));
|
||||||
}
|
}
|
||||||
element.all(by.css('.phones li a')).first().click();
|
element.all(by.css('.phones li a')).first().click();
|
|
@ -1,4 +0,0 @@
|
||||||
// #docregion
|
|
||||||
/// <reference path="../node_modules/angular2/typings/jasmine/jasmine.d.ts" />
|
|
||||||
/// <reference path="../typings/angularjs/angular-mocks.d.ts" />
|
|
||||||
/// <reference path="../node_modules/angular2/typings/angular-protractor/angular-protractor.d.ts" />
|
|
|
@ -9,6 +9,8 @@
|
||||||
"removeComments": false
|
"removeComments": false
|
||||||
},
|
},
|
||||||
"exclude": [
|
"exclude": [
|
||||||
"node_modules"
|
"node_modules",
|
||||||
|
"typings/main.d.ts",
|
||||||
|
"typings/main"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"ambientDependencies": {
|
||||||
|
"angular": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular.d.ts#3bebbe1baee04846cc46ed7249e8117e4cd7c7ff",
|
||||||
|
"angular-mocks": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular-mocks.d.ts#77dd2668f85730372aa8e62152e652048e8b6b87",
|
||||||
|
"angular-resource": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular-resource.d.ts#c6609aff88f2c59e4df9adb93df5c7932adfd7b4",
|
||||||
|
"angular-route": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular-route.d.ts#cf172aab99c3139a718aa8e65398a22c53dd7ead",
|
||||||
|
"jasmine": "github:DefinitelyTyped/DefinitelyTyped/jasmine/jasmine.d.ts#26c98c8a9530c44f8c801ccc3b2057e2101187ee",
|
||||||
|
"jquery": "github:DefinitelyTyped/DefinitelyTyped/jquery/jquery.d.ts#cf2a968f0edd7d30773f7d23fe3708fa029d5ab7"
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,5 +2,3 @@ app/**/*.js
|
||||||
app/**/*.js.map
|
app/**/*.js.map
|
||||||
test/unit/**/*.js
|
test/unit/**/*.js
|
||||||
test/unit/**/*.js.map
|
test/unit/**/*.js.map
|
||||||
test/e2e/**/*.js
|
|
||||||
test/e2e/**/*.js.map
|
|
||||||
|
|
|
@ -24,7 +24,8 @@
|
||||||
"tmp": "0.0.23",
|
"tmp": "0.0.23",
|
||||||
"bower": "^1.3.1",
|
"bower": "^1.3.1",
|
||||||
"shelljs": "^0.2.6",
|
"shelljs": "^0.2.6",
|
||||||
"typescript": "1.7.3"
|
"typescript": "1.7.3",
|
||||||
|
"typings": "^0.6.8"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"postinstall": "bower install",
|
"postinstall": "bower install",
|
||||||
|
@ -42,6 +43,7 @@
|
||||||
"preprotractor": "npm run update-webdriver",
|
"preprotractor": "npm run update-webdriver",
|
||||||
"protractor": "protractor test/protractor-conf.js",
|
"protractor": "protractor test/protractor-conf.js",
|
||||||
|
|
||||||
|
"typings": "typings",
|
||||||
"tsc": "tsc -p . -w"
|
"tsc": "tsc -p . -w"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@ describe('PhoneCat App', function() {
|
||||||
|
|
||||||
query.clear();
|
query.clear();
|
||||||
// https://github.com/angular/protractor/issues/2019
|
// https://github.com/angular/protractor/issues/2019
|
||||||
let str = 'motorola';
|
var str = 'motorola';
|
||||||
for (let i:number = 0; i < str.length; i++) {
|
for (var i = 0; i < str.length; i++) {
|
||||||
query.sendKeys(str.charAt(i));
|
query.sendKeys(str.charAt(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,8 +52,8 @@ describe('PhoneCat App', function() {
|
||||||
|
|
||||||
//let's narrow the dataset to make the test assertions shorter
|
//let's narrow the dataset to make the test assertions shorter
|
||||||
// https://github.com/angular/protractor/issues/2019
|
// https://github.com/angular/protractor/issues/2019
|
||||||
let str = 'tablet';
|
var str = 'tablet';
|
||||||
for (let i:number = 0; i < str.length; i++) {
|
for (var i = 0; i < str.length; i++) {
|
||||||
query.sendKeys(str.charAt(i));
|
query.sendKeys(str.charAt(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,8 +74,8 @@ describe('PhoneCat App', function() {
|
||||||
it('should render phone specific links', function() {
|
it('should render phone specific links', function() {
|
||||||
var query = element(by.css('input'));
|
var query = element(by.css('input'));
|
||||||
// https://github.com/angular/protractor/issues/2019
|
// https://github.com/angular/protractor/issues/2019
|
||||||
let str = 'nexus';
|
var str = 'nexus';
|
||||||
for (let i:number = 0; i < str.length; i++) {
|
for (var i = 0; i < str.length; i++) {
|
||||||
query.sendKeys(str.charAt(i));
|
query.sendKeys(str.charAt(i));
|
||||||
}
|
}
|
||||||
element.all(by.css('.phones li a')).first().click();
|
element.all(by.css('.phones li a')).first().click();
|
|
@ -1,2 +0,0 @@
|
||||||
/// <reference path="../node_modules/angular2/typings/jasmine/jasmine.d.ts" />
|
|
||||||
/// <reference path="../node_modules/angular2/typings/angular-protractor/angular-protractor.d.ts" />
|
|
|
@ -9,6 +9,8 @@
|
||||||
"removeComments": false
|
"removeComments": false
|
||||||
},
|
},
|
||||||
"exclude": [
|
"exclude": [
|
||||||
"node_modules"
|
"node_modules",
|
||||||
|
"typings/main.d.ts",
|
||||||
|
"typings/main"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"ambientDependencies": {
|
||||||
|
"jasmine": "github:DefinitelyTyped/DefinitelyTyped/jasmine/jasmine.d.ts#26c98c8a9530c44f8c801ccc3b2057e2101187ee"
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,5 +2,3 @@ app/**/*.js
|
||||||
app/**/*.js.map
|
app/**/*.js.map
|
||||||
test/unit/**/*.js
|
test/unit/**/*.js
|
||||||
test/unit/**/*.js.map
|
test/unit/**/*.js.map
|
||||||
test/e2e/**/*.js
|
|
||||||
test/e2e/**/*.js.map
|
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
/// <reference path="../../typings/angularjs/angular.d.ts" />
|
|
||||||
/// <reference path="../../typings/angularjs/angular-resource.d.ts" />
|
|
||||||
/// <reference path="../../typings/angularjs/angular-route.d.ts" />
|
|
||||||
|
|
||||||
// #docregion adapter-import
|
// #docregion adapter-import
|
||||||
import {UpgradeAdapter} from 'angular2/upgrade';
|
import {UpgradeAdapter} from 'angular2/upgrade';
|
||||||
// #enddocregion adapter-import
|
// #enddocregion adapter-import
|
||||||
|
|
|
@ -24,7 +24,8 @@
|
||||||
"tmp": "0.0.23",
|
"tmp": "0.0.23",
|
||||||
"bower": "^1.3.1",
|
"bower": "^1.3.1",
|
||||||
"shelljs": "^0.2.6",
|
"shelljs": "^0.2.6",
|
||||||
"typescript": "1.7.3"
|
"typescript": "1.7.3",
|
||||||
|
"typings": "^0.6.8"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"postinstall": "bower install",
|
"postinstall": "bower install",
|
||||||
|
@ -42,6 +43,7 @@
|
||||||
"preprotractor": "npm run update-webdriver",
|
"preprotractor": "npm run update-webdriver",
|
||||||
"protractor": "protractor test/protractor-conf.js",
|
"protractor": "protractor test/protractor-conf.js",
|
||||||
|
|
||||||
|
"typings": "typings",
|
||||||
"tsc": "tsc -p . -w"
|
"tsc": "tsc -p . -w"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,10 +23,10 @@ module.exports = function(config){
|
||||||
'node_modules/rxjs/bundles/Rx.js',
|
'node_modules/rxjs/bundles/Rx.js',
|
||||||
'node_modules/angular2/bundles/http.dev.js',
|
'node_modules/angular2/bundles/http.dev.js',
|
||||||
// #enddocregion ng2-http
|
// #enddocregion ng2-http
|
||||||
'test/karma_test_shim.js',
|
|
||||||
// #docregion ng2-testing
|
// #docregion ng2-testing
|
||||||
'node_modules/angular2/bundles/testing.dev.js',
|
'node_modules/angular2/bundles/testing.dev.js',
|
||||||
// #enddocregion ng2-testing
|
// #enddocregion ng2-testing
|
||||||
|
'test/karma_test_shim.js',
|
||||||
{pattern: 'app/js/**/*.js', included: false, watched: true},
|
{pattern: 'app/js/**/*.js', included: false, watched: true},
|
||||||
{pattern: 'test/unit/**/*.js', included: false, watched: true}
|
{pattern: 'test/unit/**/*.js', included: false, watched: true}
|
||||||
// #docregion ng2
|
// #docregion ng2
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
// #docregion
|
|
||||||
/// <reference path="../node_modules/angular2/typings/jasmine/jasmine.d.ts" />
|
|
||||||
/// <reference path="../typings/angularjs/angular-mocks.d.ts" />
|
|
||||||
/// <reference path="../node_modules/angular2/typings/angular-protractor/angular-protractor.d.ts" />
|
|
|
@ -9,6 +9,8 @@
|
||||||
"removeComments": false
|
"removeComments": false
|
||||||
},
|
},
|
||||||
"exclude": [
|
"exclude": [
|
||||||
"node_modules"
|
"node_modules",
|
||||||
|
"typings/main.d.ts",
|
||||||
|
"typings/main"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"ambientDependencies": {
|
||||||
|
"angular": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular.d.ts#3bebbe1baee04846cc46ed7249e8117e4cd7c7ff",
|
||||||
|
"angular-mocks": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular-mocks.d.ts#77dd2668f85730372aa8e62152e652048e8b6b87",
|
||||||
|
"angular-resource": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular-resource.d.ts#c6609aff88f2c59e4df9adb93df5c7932adfd7b4",
|
||||||
|
"angular-route": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular-route.d.ts#cf172aab99c3139a718aa8e65398a22c53dd7ead",
|
||||||
|
"jasmine": "github:DefinitelyTyped/DefinitelyTyped/jasmine/jasmine.d.ts#26c98c8a9530c44f8c801ccc3b2057e2101187ee",
|
||||||
|
"jquery": "github:DefinitelyTyped/DefinitelyTyped/jquery/jquery.d.ts#cf2a968f0edd7d30773f7d23fe3708fa029d5ab7"
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,5 +2,3 @@ app/**/*.js
|
||||||
app/**/*.js.map
|
app/**/*.js.map
|
||||||
test/unit/**/*.js
|
test/unit/**/*.js
|
||||||
test/unit/**/*.js.map
|
test/unit/**/*.js.map
|
||||||
test/e2e/**/*.js
|
|
||||||
test/e2e/**/*.js.map
|
|
||||||
|
|
|
@ -1,10 +1,4 @@
|
||||||
// #docregion pre-bootstrap
|
// #docregion pre-bootstrap
|
||||||
// #docregion typings
|
|
||||||
/// <reference path="../../typings/angularjs/angular.d.ts" />
|
|
||||||
/// <reference path="../../typings/angularjs/angular-resource.d.ts" />
|
|
||||||
/// <reference path="../../typings/angularjs/angular-route.d.ts" />
|
|
||||||
// #enddocregion
|
|
||||||
|
|
||||||
import core from './core/core.module';
|
import core from './core/core.module';
|
||||||
import phoneList from './phone_list/phone_list.module';
|
import phoneList from './phone_list/phone_list.module';
|
||||||
import phoneDetail from './phone_detail/phone_detail.module';
|
import phoneDetail from './phone_detail/phone_detail.module';
|
||||||
|
|
|
@ -9,33 +9,30 @@
|
||||||
"systemjs": "0.19.6"
|
"systemjs": "0.19.6"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"bower": "^1.3.1",
|
||||||
|
"http-server": "^0.6.1",
|
||||||
"karma": "^0.12.16",
|
"karma": "^0.12.16",
|
||||||
"karma-chrome-launcher": "^0.1.4",
|
"karma-chrome-launcher": "^0.1.4",
|
||||||
"karma-firefox-launcher": "^0.1.3",
|
"karma-firefox-launcher": "^0.1.3",
|
||||||
"karma-jasmine": "~0.2.0",
|
"karma-jasmine": "~0.2.0",
|
||||||
"protractor": "^3.0.0",
|
"protractor": "^3.0.0",
|
||||||
"http-server": "^0.6.1",
|
|
||||||
"tmp": "0.0.23",
|
|
||||||
"bower": "^1.3.1",
|
|
||||||
"shelljs": "^0.2.6",
|
"shelljs": "^0.2.6",
|
||||||
"typescript": "1.7.3"
|
"tmp": "0.0.23",
|
||||||
|
"typescript": "^1.7.5",
|
||||||
|
"typings": "^0.6.8"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"postinstall": "bower install",
|
"postinstall": "bower install",
|
||||||
|
|
||||||
"prestart": "npm install",
|
"prestart": "npm install",
|
||||||
"start": "http-server -a 0.0.0.0 -p 8000",
|
"start": "http-server -a 0.0.0.0 -p 8000",
|
||||||
|
|
||||||
"pretest": "npm install",
|
"pretest": "npm install",
|
||||||
"test": "node node_modules/karma/bin/karma start test/karma.conf.js",
|
"test": "node node_modules/karma/bin/karma start test/karma.conf.js",
|
||||||
"test-single-run": "node node_modules/karma/bin/karma start test/karma.conf.js --single-run",
|
"test-single-run": "node node_modules/karma/bin/karma start test/karma.conf.js --single-run",
|
||||||
|
|
||||||
"preupdate-webdriver": "npm install",
|
"preupdate-webdriver": "npm install",
|
||||||
"update-webdriver": "webdriver-manager update",
|
"update-webdriver": "webdriver-manager update",
|
||||||
|
|
||||||
"preprotractor": "npm run update-webdriver",
|
"preprotractor": "npm run update-webdriver",
|
||||||
"protractor": "protractor test/protractor-conf.js",
|
"protractor": "protractor test/protractor-conf.js",
|
||||||
|
"typings": "typings",
|
||||||
"tsc": "tsc -p . -w"
|
"tsc": "tsc -p . -w"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
/* http://docs.angularjs.org/guide/dev_guide.e2e-testing */
|
/* http://docs.angularjs.org/guide/dev_guide.e2e-testing */
|
||||||
// #docregion declares
|
|
||||||
declare var browser:any, element:any, by:any;
|
|
||||||
// #enddocregion declares
|
|
||||||
|
|
||||||
describe('PhoneCat App', function() {
|
describe('PhoneCat App', function() {
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
// #docregion
|
|
||||||
/// <reference path="../typings/jasmine/jasmine.d.ts" />
|
|
||||||
/// <reference path="../typings/angularjs/angular-mocks.d.ts" />
|
|
|
@ -8,6 +8,8 @@
|
||||||
"removeComments": false
|
"removeComments": false
|
||||||
},
|
},
|
||||||
"exclude": [
|
"exclude": [
|
||||||
"node_modules"
|
"node_modules",
|
||||||
|
"typings/main.d.ts",
|
||||||
|
"typings/main"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"ambientDependencies": {
|
||||||
|
"angular": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular.d.ts#3bebbe1baee04846cc46ed7249e8117e4cd7c7ff",
|
||||||
|
"angular-mocks": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular-mocks.d.ts#77dd2668f85730372aa8e62152e652048e8b6b87",
|
||||||
|
"angular-resource": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular-resource.d.ts#c6609aff88f2c59e4df9adb93df5c7932adfd7b4",
|
||||||
|
"angular-route": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular-route.d.ts#cf172aab99c3139a718aa8e65398a22c53dd7ead",
|
||||||
|
"jasmine": "github:DefinitelyTyped/DefinitelyTyped/jasmine/jasmine.d.ts#26c98c8a9530c44f8c801ccc3b2057e2101187ee",
|
||||||
|
"jquery": "github:DefinitelyTyped/DefinitelyTyped/jquery/jquery.d.ts#470954c4f427e0805a2d633636a7c6aa7170def8"
|
||||||
|
}
|
||||||
|
}
|
|
@ -840,28 +840,38 @@ figure
|
||||||
of NPM. We'll install all new dependencies using NPM, and will eventually be
|
of NPM. We'll install all new dependencies using NPM, and will eventually be
|
||||||
able to remove Bower from the project.
|
able to remove Bower from the project.
|
||||||
|
|
||||||
Let's begin by installing the SystemJS and TypeScript packages to the project:
|
Let's begin by installing the SystemJS and TypeScript packages to the project.
|
||||||
```
|
While we're at it, let's also install the
|
||||||
|
[Typings type definition manager](https://github.com/typings/typings).
|
||||||
|
It will allow us to install type definitions for libraries that don't come with
|
||||||
|
prepackaged types.
|
||||||
|
|
||||||
|
code-example(format="").
|
||||||
npm i systemjs --save
|
npm i systemjs --save
|
||||||
npm i typescript --save-dev
|
npm i typescript typings --save-dev
|
||||||
```
|
|
||||||
|
|
||||||
The Angular 1 framework doesn't come with built-in TypeScript type definitions.
|
:marked
|
||||||
This means that if we want to have type checks for the calls we make to Angular 1
|
Let's also add run scripts for the `tsc` TypeScript compiler and the `typings`
|
||||||
APIs, we should install its type definitions separately.
|
tool to `package.json`:
|
||||||
For that we'll use the [tsd TypeScript definition manager](http://definitelytyped.org/tsd/).
|
|
||||||
Let's make sure we have it globally installed:
|
|
||||||
```
|
|
||||||
npm i -g tsd
|
|
||||||
```
|
|
||||||
|
|
||||||
We can then use tsd to install the type definitions for Angular 1 and the Jasmine
|
+makeJson('upgrade/ts/typescript-conversion/package.1.json', {paths: 'scripts'}, 'package.json', {otl: /(\"tsc.*|\"typings.*)/g})
|
||||||
|
|
||||||
|
|
||||||
|
:marked
|
||||||
|
We can now use Typings to install the type definitions for Angular 1 and the Jasmine
|
||||||
unit test framework. This will add a `typings` directory to the project and install
|
unit test framework. This will add a `typings` directory to the project and install
|
||||||
a number of `.d.ts` files under it:
|
a number of `.d.ts` files under it. It will also create a `typings.json` file to the
|
||||||
```
|
project, which contains metadata about the type definitions we've installed:
|
||||||
tsd install angular angular-route angular-resource angular-mocks jasmine
|
|
||||||
```
|
|
||||||
|
|
||||||
|
code-example(format="").
|
||||||
|
npm run typings install jquery -- --save --ambient
|
||||||
|
npm run typings install angular -- --save --ambient
|
||||||
|
npm run typings install angular-route -- --save --ambient
|
||||||
|
npm run typings install angular-resource -- --save --ambient
|
||||||
|
npm run typings install angular-mocks -- --save --ambient
|
||||||
|
npm run typings install jasmine -- --save --ambient
|
||||||
|
|
||||||
|
:marked
|
||||||
In `index.html`, let's now enable SystemJS. Add a `<script>` tag that loads
|
In `index.html`, let's now enable SystemJS. Add a `<script>` tag that loads
|
||||||
the SystemJS library and a second `<script>` tag that initializes it. These
|
the SystemJS library and a second `<script>` tag that initializes it. These
|
||||||
will *replace* the various `<script>` tags we had earlier for loading the
|
will *replace* the various `<script>` tags we had earlier for loading the
|
||||||
|
@ -886,20 +896,15 @@ figure
|
||||||
bundled into SystemJS modules. In other words, our compiler target is something
|
bundled into SystemJS modules. In other words, our compiler target is something
|
||||||
SystemJS can load and all major browsers are able to run.
|
SystemJS can load and all major browsers are able to run.
|
||||||
|
|
||||||
Also add a `tsc` run script to `package.json`. We'll use it to start the TypeScript
|
|
||||||
compiler:
|
|
||||||
|
|
||||||
+makeJson('upgrade/ts/typescript-conversion/package.1.json', {paths: 'scripts'}, 'package.json', {otl: /(\"tsc.*)/})
|
|
||||||
|
|
||||||
:marked
|
|
||||||
We can now launch the TypeScript compiler from the command line. It will watch
|
We can now launch the TypeScript compiler from the command line. It will watch
|
||||||
our `.ts` source files and compile them to JavaScript on the fly. Those compiled
|
our `.ts` source files and compile them to JavaScript on the fly. Those compiled
|
||||||
`.js` files are then loaded into the browser by SystemJS. This is a process we'll
|
`.js` files are then loaded into the browser by SystemJS. This is a process we'll
|
||||||
want to have continuously running in the background as we go along.
|
want to have continuously running in the background as we go along.
|
||||||
```
|
|
||||||
npm run tsc
|
|
||||||
```
|
|
||||||
|
|
||||||
|
code-example(format="").
|
||||||
|
npm run tsc
|
||||||
|
|
||||||
|
:marked
|
||||||
The next thing we'll do is convert our JavaScript files to TypeScript and define
|
The next thing we'll do is convert our JavaScript files to TypeScript and define
|
||||||
their imports and exports. Each file should now explicitly export the things
|
their imports and exports. Each file should now explicitly export the things
|
||||||
it wants to expose, and import the things it needs from other files. This is a
|
it wants to expose, and import the things it needs from other files. This is a
|
||||||
|
@ -912,18 +917,9 @@ figure
|
||||||
our existing code. Instead we'll introduce type annotations and other new
|
our existing code. Instead we'll introduce type annotations and other new
|
||||||
features gradually over time.
|
features gradually over time.
|
||||||
|
|
||||||
Let's begin by adding references to the Angular 1.x `.d.ts` typing files to the
|
Let's begin by renaming `app.module.js` to `app.module.ts`. The TypeScript
|
||||||
main application file. Rename `app.module.js` to `app.module.ts` and add the following on top
|
compiler should be able to compile it successfully right away. This means we can
|
||||||
of the file:
|
move right along and go through the rest of our source files and convert them.
|
||||||
|
|
||||||
+makeExample('upgrade/ts/typescript-conversion/app/js/app.module.ts', 'typings', 'app/js/app.module.ts')
|
|
||||||
|
|
||||||
:marked
|
|
||||||
The TypeScript compiler will now know what we mean when we reference
|
|
||||||
Angular 1 APIs. It should already at this point be able to compile the
|
|
||||||
`app.module.ts` file successfully.
|
|
||||||
|
|
||||||
Let's then go through the rest of our source files and convert them.
|
|
||||||
We'll rename each one to a `.ts` file, and add the imports and exports it needs.
|
We'll rename each one to a `.ts` file, and add the imports and exports it needs.
|
||||||
|
|
||||||
Beginning from the checkmark filter, here are the converted contents:
|
Beginning from the checkmark filter, here are the converted contents:
|
||||||
|
@ -1011,12 +1007,10 @@ figure
|
||||||
support our new module organization.
|
support our new module organization.
|
||||||
|
|
||||||
:marked
|
:marked
|
||||||
## Preparing Unit and E2E Tests
|
## Preparing Tests
|
||||||
|
|
||||||
Our project has both E2E Protractor tests and some Karma unit tests in it.
|
Our project has both E2E Protractor tests and some Karma unit tests in it.
|
||||||
Both of those are going to need a bit of work.
|
Of these two, E2E tests can be dealt with much quicker: By definition,
|
||||||
|
|
||||||
Of these two, E2E tests are a lot easier to convert. By definition,
|
|
||||||
E2E tests access our application from the *outside* by interacting with
|
E2E tests access our application from the *outside* by interacting with
|
||||||
the various UI elements the app puts on the screen. E2E tests aren't really that
|
the various UI elements the app puts on the screen. E2E tests aren't really that
|
||||||
concerned with the internal structure of the application components. That
|
concerned with the internal structure of the application components. That
|
||||||
|
@ -1024,35 +1018,13 @@ figure
|
||||||
test suite should keep passing just as it was before. We haven't changed
|
test suite should keep passing just as it was before. We haven't changed
|
||||||
how the app behaves from the user's point of view.
|
how the app behaves from the user's point of view.
|
||||||
|
|
||||||
What we *can* do is convert our E2E test code to TypeScript, like we've
|
For unit tests, on the other hand, we'll do a bit of conversion work.
|
||||||
done with the production code. To do this, you can just rename the
|
What we'll do is convert our existing unit tests to TypeScript and have them
|
||||||
`scenarios.js` file to `scenarios.ts`. After that, you'll want to declare
|
use `import`s to load in the code they need.
|
||||||
the global Protractor variables used in the file, so that the TypeScript
|
|
||||||
compiler knows we're accessing them on purpose:
|
|
||||||
|
|
||||||
+makeExample('upgrade/ts/typescript-conversion/test/e2e/scenarios.ts', 'declares', 'test/e2e/scenarios.ts')
|
We'll also need to tweak our Karma configuration so that it'll let SystemJS load
|
||||||
|
the application files. For this we'll use a shim file that will tweak the way
|
||||||
:marked
|
files get loaded:
|
||||||
Once we add Angular 2 to the project, we'll be able to add more type safety
|
|
||||||
to this file, because Angular 2 ships with the type definitions of the
|
|
||||||
Protractor framework as well.
|
|
||||||
|
|
||||||
That pretty much takes care of E2E tests for now. For unit tests we're going
|
|
||||||
to do a bit more. What we'll do is convert our existing unit tests to TypeScript
|
|
||||||
as well as have them use `import`s to load in the code they need. We'll also need
|
|
||||||
to tweak our Karma configuration so that it'll let SystemJS load the application
|
|
||||||
files.
|
|
||||||
|
|
||||||
But first we should have some additional type definitions loaded, so that the TypeScript
|
|
||||||
compiler can understand the Jasmine and ngMock APIs we're using in unit tests.
|
|
||||||
Add a file called `test_helper.ts` to the test directory and add a reference
|
|
||||||
to the Jasmine and mock type definitions we already installed earlier:
|
|
||||||
|
|
||||||
+makeExample('upgrade/ts/typescript-conversion/test/test_helper.ts', null, 'test/test_helper.ts')
|
|
||||||
|
|
||||||
:marked
|
|
||||||
For Karma's SystemJS support we'll use a shim file that will tweak the way
|
|
||||||
files get loaded, so that it happens through SystemJS:
|
|
||||||
|
|
||||||
+makeExample('upgrade/ts/typescript-conversion/test/karma_test_shim.js', null, 'test/karma_test_shim.js')
|
+makeExample('upgrade/ts/typescript-conversion/test/karma_test_shim.js', null, 'test/karma_test_shim.js')
|
||||||
|
|
||||||
|
@ -1098,7 +1070,7 @@ figure
|
||||||
isn't happy about compiling them at the moment. This is because we're using
|
isn't happy about compiling them at the moment. This is because we're using
|
||||||
the custom Jasmine matcher `toEqualData` in both of them. Because this is something
|
the custom Jasmine matcher `toEqualData` in both of them. Because this is something
|
||||||
we define ourselves, it isn't included in the Jasmine type definitions that we
|
we define ourselves, it isn't included in the Jasmine type definitions that we
|
||||||
installed using `tsd`.
|
installed using Typings.
|
||||||
|
|
||||||
We can add our own little type definition file for that extension, which extends
|
We can add our own little type definition file for that extension, which extends
|
||||||
the `jasmine.Matchers` interface and adds our custom matcher to it. This will
|
the `jasmine.Matchers` interface and adds our custom matcher to it. This will
|
||||||
|
@ -1136,7 +1108,7 @@ figure
|
||||||
.l-sub-section
|
.l-sub-section
|
||||||
:marked
|
:marked
|
||||||
The [Angular 1.x type definitions](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/angularjs)
|
The [Angular 1.x type definitions](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/angularjs)
|
||||||
we installed from TSD are not officially maintained by the Angular team,
|
we installed with Typings are not officially maintained by the Angular team,
|
||||||
but are quite comprehensive. Though we're not going to do it in this
|
but are quite comprehensive. Though we're not going to do it in this
|
||||||
tutorial, it is possible to make an Angular 1.x application fully
|
tutorial, it is possible to make an Angular 1.x application fully
|
||||||
type-annotated with the help of these definitions.
|
type-annotated with the help of these definitions.
|
||||||
|
@ -1213,14 +1185,14 @@ figure
|
||||||
|
|
||||||
:marked
|
:marked
|
||||||
Let's install Angular 2 into the project. Add the Angular 2 dependencies
|
Let's install Angular 2 into the project. Add the Angular 2 dependencies
|
||||||
to `package.json` as described in the [package.json appendix of the
|
to `package.json` and `typings.json` as described in the [Quickstart](../quickstart.html).
|
||||||
Quickstart](../quickstart.html#package-json).
|
|
||||||
Then run:
|
Then run:
|
||||||
|
|
||||||
```
|
code-example(format="").
|
||||||
npm i
|
npm install
|
||||||
```
|
npm run typings install
|
||||||
|
|
||||||
|
:marked
|
||||||
We can then load Angular 2 into the application by adding some `<script>`
|
We can then load Angular 2 into the application by adding some `<script>`
|
||||||
tags to `index.html`. They should go before the `<script>` tag that has the
|
tags to `index.html`. They should go before the `<script>` tag that has the
|
||||||
`System.config()` invocation:
|
`System.config()` invocation:
|
||||||
|
@ -1247,32 +1219,14 @@ figure
|
||||||
At this point we need to do add the Angular 2 type definitions
|
At this point we need to do add the Angular 2 type definitions
|
||||||
into `app.ts`, so that the TypeScript compiler knows what we're talking about
|
into `app.ts`, so that the TypeScript compiler knows what we're talking about
|
||||||
when we use Angular 2 APIs. Unlike with Angular 1, we don't need to install
|
when we use Angular 2 APIs. Unlike with Angular 1, we don't need to install
|
||||||
or refer to these type definitions in our source code, because Angular 2
|
these type definitions with Typings because Angular 2 comes with them included.
|
||||||
comes with them included. What we do need to do is set the TypeScript
|
What we do need to do is set the TypeScript compiler's `moduleResolution` option
|
||||||
compiler's `moduleResolution` option to `node`, so that it knows to look
|
to `node`, so that it knows to look for these definitions from the `angular2` NPM
|
||||||
for these definitions from the `angular2` NPM package.
|
package.
|
||||||
|
|
||||||
+makeJson('upgrade/ts/ng2_initial/tsconfig.1.json', null, 'tsconfig.json', {otl: /(\"moduleResolution.*)/})
|
+makeJson('upgrade/ts/ng2_initial/tsconfig.1.json', null, 'tsconfig.json', {otl: /(\"moduleResolution.*)/})
|
||||||
|
|
||||||
:marked
|
:marked
|
||||||
Angular 2 bundles the Jasmine type definitions we need in tests, which means
|
|
||||||
that the Jasmine type definitions we installed with `tsd` are now redundant.
|
|
||||||
We might as well remove them so that there's no confusion about which ones
|
|
||||||
we're using.
|
|
||||||
```
|
|
||||||
rm -r typings/jasmine
|
|
||||||
```
|
|
||||||
|
|
||||||
We can replace the reference to those type definitions in
|
|
||||||
`test/test_helper.ts` with the ones that come with Angular 2. Let's also
|
|
||||||
add a reference to the Protractor typings while we're at it:
|
|
||||||
|
|
||||||
+makeExample('upgrade/ts/ng2_initial/test/test_helper.ts', null, 'test/test_helper.ts')
|
|
||||||
|
|
||||||
:marked
|
|
||||||
It is now safe to remove the `declare var` line from `scenarios.ts` - the
|
|
||||||
Protractor APIs are now fully typed!
|
|
||||||
|
|
||||||
To boostrap a hybrid application, we first need to initialize an `UpgradeAdapter`,
|
To boostrap a hybrid application, we first need to initialize an `UpgradeAdapter`,
|
||||||
which [provides the glue](#upgrading-with-the-upgrade-adapter) that joins the two
|
which [provides the glue](#upgrading-with-the-upgrade-adapter) that joins the two
|
||||||
versions of the framework together. Let's import the `UpgradeAdapter` class into
|
versions of the framework together. Let's import the `UpgradeAdapter` class into
|
||||||
|
@ -1770,7 +1724,7 @@ figure
|
||||||
as we are making changes, since we're not really changing the user-visible
|
as we are making changes, since we're not really changing the user-visible
|
||||||
behavior of the application. Now that we've migrated some components and
|
behavior of the application. Now that we've migrated some components and
|
||||||
their templates, however, there are a few changes we need to make. Apply
|
their templates, however, there are a few changes we need to make. Apply
|
||||||
the following replacements to `scenarios.ts`:
|
the following replacements to `scenarios.js`:
|
||||||
|
|
||||||
table
|
table
|
||||||
tr
|
tr
|
||||||
|
@ -1947,12 +1901,12 @@ table
|
||||||
that use WebDriver's generic URL APIs instead. The first of these is
|
that use WebDriver's generic URL APIs instead. The first of these is
|
||||||
the redirection spec:
|
the redirection spec:
|
||||||
|
|
||||||
+makeExample('upgrade/ts/ng2_final/test/e2e/scenarios.ts', 'redirect')
|
+makeExample('upgrade/ts/ng2_final/test/e2e/scenarios.js', 'redirect')
|
||||||
|
|
||||||
:marked
|
:marked
|
||||||
And the second is the phone links spec:
|
And the second is the phone links spec:
|
||||||
|
|
||||||
+makeExample('upgrade/ts/ng2_final/test/e2e/scenarios.ts', 'links')
|
+makeExample('upgrade/ts/ng2_final/test/e2e/scenarios.js', 'links')
|
||||||
|
|
||||||
:marked
|
:marked
|
||||||
Now our E2E test suite is passing too, and we're ready to remove
|
Now our E2E test suite is passing too, and we're ready to remove
|
||||||
|
@ -1968,8 +1922,8 @@ table
|
||||||
First, rename `app.module.ts` to `app.ts`. It will no longer be setting up
|
First, rename `app.module.ts` to `app.ts`. It will no longer be setting up
|
||||||
an Angular 1 module, so it doesn't really make sense to call it a module.
|
an Angular 1 module, so it doesn't really make sense to call it a module.
|
||||||
Then remove all references to the `UpgradeAdapter` from `app.ts`. Also remove
|
Then remove all references to the `UpgradeAdapter` from `app.ts`. Also remove
|
||||||
the Angular 1 bootstrap code, type definitions, and the imports of the `core`,
|
the Angular 1 bootstrap code and the imports of the `core`, `phoneList`, and
|
||||||
`phoneList`, and `phoneDetail` modules. Instead import the `PhoneList` and `PhoneDetail`
|
`phoneDetail` modules. Instead import the `PhoneList` and `PhoneDetail`
|
||||||
components directly - they are needed in the route configuration.
|
components directly - they are needed in the route configuration.
|
||||||
|
|
||||||
When you're done, this is what `app.ts` should look like:
|
When you're done, this is what `app.ts` should look like:
|
||||||
|
@ -1986,9 +1940,17 @@ table
|
||||||
* `app/js/phone_detail/phone_detail.module.ts`
|
* `app/js/phone_detail/phone_detail.module.ts`
|
||||||
* `app/js/phone_list/phone_list.module.ts`
|
* `app/js/phone_list/phone_list.module.ts`
|
||||||
|
|
||||||
From `test/test_helper.ts` you can remove the reference to Angular 1 typings. The
|
The external typings for Angular 1 may be uninstalled as well. The only ones
|
||||||
only ones still needed are the ones for Jasmine and Protractor.
|
we still need are for Jasmine.
|
||||||
|
|
||||||
|
code-example(format="").
|
||||||
|
npm run typings uninstall jquery -- --save --ambient
|
||||||
|
npm run typings uninstall angular -- --save --ambient
|
||||||
|
npm run typings uninstall angular-route -- --save --ambient
|
||||||
|
npm run typings uninstall angular-resource -- --save --ambient
|
||||||
|
npm run typings uninstall angular-mocks -- --save --ambient
|
||||||
|
|
||||||
|
:marked
|
||||||
Finally, from `index.html` and `karma.conf.js`, remove all references to
|
Finally, from `index.html` and `karma.conf.js`, remove all references to
|
||||||
Angular 1 scripts as well as jQuery. When you're done, this is what `index.html`
|
Angular 1 scripts as well as jQuery. When you're done, this is what `index.html`
|
||||||
should look like:
|
should look like:
|
||||||
|
|
Loading…
Reference in New Issue