I'm currently trying to do some testing of the AngularJS E2E application using Protractor and Im stuck in a btstrpd error. I'm new to AngularJS (I'm just a specialist in testing automation in a project), so IDs really appreciate any pointers on how to make it work.
Basically, I just copied and pasted the sample configuration and specifications from the Protractor tutorial and adapted it for my project:
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['spec.js'],
rootElement: 'html'
}
describe('Protractor Demo App', function() {
it('should have a title', function() {
browser.get('http://myapp.abc.de/ext/#/login');
expect(browser.getTitle()).toEqual('My App');
});
});
This works great when I adapt it and run it for some random AngularJS sites on the Internet. When I run it for my current project, I get the following error:
1) Protractor Demo App should have a title
Message:
UnknownError: unknown error: [ng:btstrpd] http://errors.angularjs.org/1.3.15/ng/btstrpd?p0=document
(Session info: chrome=43.0.2357.132)
(Driver info: chromedriver=2.15.322448 (52179c1b310fec1797c81ea9a20326839860b7d3),platform=Windows NT 6.1 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 9 milliseconds
stacktrace .
AngularJS v1.3.0 Protractor v2.1.0. ; html. ? :
var myApp = angular.module('myApp', [ 'ngRoute' ]);
myApp.config([ '$routeProvider', function($routeProvider) {
$routeProvider.when('/', {
templateUrl : 'app/tmpl/start.html'
}).when('/login', {
templateUrl : 'app/tmpl/login.html',
controller : 'LoginController'
}).when('/logout', {
templateUrl : 'app/tmpl/logout.html',
controller : 'LogoutController'
});
} ]);
myApp.config([ '$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push("myInterceptor");
} ]);
myApp.run([ '$rootScope', function($rootScope) {
$rootScope.$apply(function() {
$rootScope.tokenString = "Bearer _";
});
} ]);
index.html
<!doctype html>
<html ng-app="myApp">
<head>
<script src="lib/jquery/jquery-2.1.1.min.js"></script>
<script src="lib/bootstrap/js/bootstrap.js"></script>
<script src="lib/angular/angular.min.js"></script>
<script src="lib/angular/angular-route.min.js"></script>
<script src="app/app.js"></script>
<script src="app/controller/LoginController.js"></script>
<script src="app/controller/LogoutController.js"></script>
<script src="app/controller/NavbarController.js"></script>
<script src="app/services/AuthService.js"></script>
<script src="app/services/UserService.js"></script>
<script src="app/factories/Configurations.js"></script>
<script src="app/factories/myInterceptor.js"></script>
<link rel="stylesheet" href="lib/bootstrap/css/bootstrap.css">
</head>
<body>
<nav class="navbar navbar-default" role="navigation" ng-controller="NavbarController as navbar">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed"
data-toggle="collapse" data-target="#navbar-collapse-1">
<span class="sr-only">Toggle navigation</span> <span
class="icon-bar"></span> <span class="icon-bar"></span> <span
class="icon-bar"></span>
</button>
<a class="navbar-brand" ng-href="navbar.root()">myApp</a>
</div>
<div class="collapse navbar-collapse"
id="navbar-collapse-1">
<ul class="nav navbar-nav">
<li><a ng-href="#/customers">Customers</a></li>
<li ng-show="!navbar.showLogout()"><a ng-href="#/login">Login</a></li>
<li ng-show="navbar.showLogout()"><a ng-href="#/logout">Logout</a></li>
</ul>
</div>
</div>
</nav>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div ng-view></div>
</div>
</div>
</div>
</body>
</html>
, , :
jasmine2browser.driver.get onPreparebrowser.waitForAngular beforeEach- 1.8
allScriptsTimeout conf.js
EDIT: . . btstrpd.