Wygląda na to, że mam błąd podczas korzystania z przykładu conf.js
dostarczonego z kątomierzem. Uruchomiłem testy z grunt-protractor-runner
, ale błędy wystąpiły nawet podczas korzystania z podanej konfiguracji przykładu."window.angular nie jest zdefiniowana." podczas używania kątomierza do automatycznego testowania?
My Gruntfile.js
wygląda następująco:
/*global module:false*/
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
protractor: {
options: {
configFile: "smoketest.conf.js", // Default config file
keepAlive: false, // If false, the grunt process stops when the test fails.
noColor: false, // If true, protractor will not use colors in its output.
webdriverManagerUpdate: true,
args: {
seleniumServerJar: './node_modules/protractor/selenium/selenium-server-standalone-2.51.0.jar'
}
},
smoke_test: { // Grunt requires at least one target to run so you can simply put 'all: {}' here too.
options: {
configFile: "smoketest.conf.js", // Target-specific config file
args: {
}
}
},
protractor_test: { // Grunt requires at least one target to run so you can simply put 'all: {}' here too.
options: {
configFile: "./node_modules/protractor/example/conf.js", // Target-specific config file
args: {
}
}
},
},
})
grunt.loadNpmTasks('grunt-protractor-runner');
// Default task.
grunt.registerTask('default', ['protractor:smoke_test']);
};
Używam grunt protractor:protractor_test
który wykorzystuje ten plik
describe('angularjs homepage', function() {
it('should greet the named user', function() {
browser.get('http://www.angularjs.org');
element(by.model('yourName')).sendKeys('Julie');
var greeting = element(by.binding('yourName'));
expect(greeting.getText()).toEqual('Hello Julie!');
});
describe('todo list', function() {
var todoList;
beforeEach(function() {
browser.get('http://www.angularjs.org');
todoList = element.all(by.repeater('todo in todoList.todos'));
});
it('should list todos', function() {
expect(todoList.count()).toEqual(2);
expect(todoList.get(1).getText()).toEqual('build an angular app');
});
it('should add a todo', function() {
var addTodo = element(by.model('todoList.todoText'));
var addButton = element(by.css('[value="add"]'));
addTodo.sendKeys('write a protractor test');
addButton.click();
expect(todoList.count()).toEqual(3);
expect(todoList.get(2).getText()).toEqual('write a protractor test');
});
});
});
jednak, gdy ten skończy jestem przedstawiane z błędem
Error while waiting for Protractor to sync with the page: "window.angular is undefined. This could be either because this is a non-angular page or because your test involves client-side navigation, which can interfere with Protractor's bootstrapping. See http://git.io/v4gXM for details"`enter code here`
Byłem w http://git.io/v4gXM, ale nie mogę wydaje się, że znajdziesz coś, co naprawi mój problem? Czy ktokolwiek inny miał ten problem, na pewno przykładowy test powinien działać zawsze?
powróciła do starszej wersji kątomierz (ostatni znany pracować z naszych scenariuszy testowych) i działa ...? –
Prawdopodobnie z powodu 'Jasmine' spróbuj przełączyć się na użycie' Jasmine2' następnym razem, jeśli masz podobny problem. (Istnieje wiele możliwości, ale najłatwiejszym rozwiązaniem jest użycie jaśminu2). –
Po aktualizacji Kątomierza pojawia się podobny błąd. Dla mnie nie dostałem tego błędu w 3.1.1, ale dostałem inne błędy, więc miałem nadzieję, że 3.2.1 naprawi te błędy. Ale w 3.2.1 mam dokładnie ten błąd. Pomyślałem, że może to wynikać z faktu, że moja dyrektywa ng-app znajduje się na elemencie HTML, a nie na elemencie body. Ale dodanie rootElement: "html" do mojej konfiguracji Protractor nie pomogło. https://github.com/angular/protractor/issues/1742 – Keith