2016-09-13 17:39:39 -04:00
// BROWSER TESTING SHIM
// Keep it in-sync with what karma-test-shim does
// #docregion
/*global jasmine, __karma__, window*/
( function ( ) {
Error . stackTraceLimit = 0 ; // "No stacktrace"" is usually best for app testing.
// Uncomment to get full stacktrace output. Sometimes helpful, usually not.
// Error.stackTraceLimit = Infinity; //
2016-09-21 14:27:11 -04:00
jasmine . DEFAULT _TIMEOUT _INTERVAL = 3000 ;
2016-09-13 17:39:39 -04:00
var baseURL = document . baseURI ;
baseURL = baseURL + baseURL [ baseURL . length - 1 ] ? '' : '/' ;
System . config ( {
baseURL : baseURL ,
// Extend usual application package list with test folder
packages : { 'testing' : { main : 'index.js' , defaultExtension : 'js' } } ,
// Assume npm: is set in `paths` in systemjs.config
// Map the angular testing umd bundles
map : {
'@angular/core/testing' : 'npm:@angular/core/bundles/core-testing.umd.js' ,
'@angular/common/testing' : 'npm:@angular/common/bundles/common-testing.umd.js' ,
'@angular/compiler/testing' : 'npm:@angular/compiler/bundles/compiler-testing.umd.js' ,
'@angular/platform-browser/testing' : 'npm:@angular/platform-browser/bundles/platform-browser-testing.umd.js' ,
'@angular/platform-browser-dynamic/testing' : 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic-testing.umd.js' ,
'@angular/http/testing' : 'npm:@angular/http/bundles/http-testing.umd.js' ,
'@angular/router/testing' : 'npm:@angular/router/bundles/router-testing.umd.js' ,
'@angular/forms/testing' : 'npm:@angular/forms/bundles/forms-testing.umd.js' ,
} ,
} ) ;
System . import ( 'systemjs.config.js' )
. then ( importSystemJsExtras )
. then ( initTestBed )
. then ( initTesting ) ;
/** Optional SystemJS configuration extras. Keep going w/o it */
function importSystemJsExtras ( ) {
return System . import ( 'systemjs.config.extras.js' )
. catch ( function ( reason ) {
console . log (
2016-12-05 14:46:53 -05:00
'Note: System.import could not load "systemjs.config.extras.js" where you might have added more configuration. It is an optional file so we will continue without it.'
2016-09-13 17:39:39 -04:00
) ;
console . log ( reason ) ;
} ) ;
}
function initTestBed ( ) {
return Promise . all ( [
System . import ( '@angular/core/testing' ) ,
System . import ( '@angular/platform-browser-dynamic/testing' )
] )
. then ( function ( providers ) {
var coreTesting = providers [ 0 ] ;
var browserTesting = providers [ 1 ] ;
coreTesting . TestBed . initTestEnvironment (
browserTesting . BrowserDynamicTestingModule ,
browserTesting . platformBrowserDynamicTesting ( ) ) ;
} )
}
// Import all spec files defined in the html (__spec_files__)
// and start Jasmine testrunner
function initTesting ( ) {
console . log ( 'loading spec files: ' + _ _spec _files _ _ . join ( ', ' ) ) ;
return Promise . all (
_ _spec _files _ _ . map ( function ( spec ) {
return System . import ( spec ) ;
} )
)
// After all imports load, re-execute `window.onload` which
// triggers the Jasmine test-runner start or explain what went wrong
. then ( success , console . error . bind ( console ) ) ;
function success ( ) {
console . log ( 'Spec files loaded; starting Jasmine testrunner' ) ;
window . onload ( ) ;
}
}
} ) ( ) ;