J'essaie de configurer le test End-2-End pour mon site Angular (1.4) à l'aide de rapporteur (2.1.0). Jasmine est installé et les tests unitaires fonctionnent bien. Lorsque j'exécute le rapporteur, la page d'index #/login se charge dans une fenêtre de navigateur, mais aucun code ne s'exécute et le rapporteur signale cette erreur.
Echec: Angular introuvable sur la page http: //localhost/SpectrumGMWeb/index.html#/login : tentatives de recherche du dépassement angulaire
Mon confr rapporteur ressemble à ceci
exports.config = {
allScriptsTimeout: 11000,
seleniumAddress: 'http://127.0.0.1:4444/wd/hub',
specs: [
'*.js'
],
rootElement:'html',
capabilities: {
'browserName': 'chrome'
},
baseUrl: 'http://localhost/SpectrumGMWeb/',
framework: 'jasmine2',
jasmineNodeOpts: {
defaultTimeoutInterval: 30000
},
};
Mon fichier de test est très simple
describe('my app', function() {
describe('login', function() {
beforeEach(function() {
browser.get('index.html#/login');
});
it('should render login page when user navigates to login page', function() {
expect(true).toBe(true);
});
});
});
ng-app = "main" est défini sur l'élément html de index.html. Le site Web fonctionne.
Des idées?
Merci à tous pour votre contribution. J'ai finalement résolu ce problème en copiant tout le contenu du fichier index.html dans un nouveau fichier. Il semble que le fichier ait été corrompu d’une manière que le rapporteur n’a pas aimée. Je sais que cela semble simple, mais j’ai perdu 2 journées complètes sur ce projet, alors espérons que cela aidera quelqu'un.
Essayez de mettre un browser.ignoreSynchronization = true;
avant de faire une browser.get()
dans votre fonction de connexion.
Si vous devez naviguer vers une page qui n'utilise pas Angular, ajoutez cette ligne de code avant la ligne browser.get ():
browser.waitForAngularEnabled (false);
Référence: https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular-on-page-load
J'ai aussi reçu cette erreur et je l'ai corrigée en modifiant la variable "scripts" de package.json à partir de:
"scripts": {
...
"pree2e": "webdriver-manager update --standalone false --gecko false",
"e2e": "protractor"
}
à
"scripts": {
...
// REMOVE "pree2e"
"e2e": "ng e2e"
}
Êtes-vous sûr d'avoir lancé votre serveur à http://localhost/SpectrumGMWeb/
?
Le rapporteur fournit cette URL à Selenium et tente d'accéder à votre application à cette adresse. S'il ne fonctionne pas à cette adresse, Protractor n'obtiendra aucune réponse et vous indiquera l'erreur que vous obtenez.
Si vous avez besoin de conseils sur la manière de mettre en place un serveur local pour servir votre projet, je vous recommande grunt-connect , par exemple comme ceci (qui lancera un serveur à http://localhost:9001
module.exports = function(grunt) {
grunt.initConfig({
connect: {
server: {
options: {
port: 9001,
base: '', // root folder of your app files
keepalive: true
}
}
}
});
grunt.loadNpmTasks('grunt-contrib-connect');
grunt.registerTask('default', ['connect:server'])
}