2016-10-18 2 views
2

J'utilise Protractor pour implémenter des tests de bout en bout sur mon application AngularJS en utilisant Grunt, et mon application utilise un proxy pour gérer les appels d'API. Par conséquent, lors de l'exécution de tests, les appels API échouent car http://localhost:9000/api n'est pas géré.Utilisation de Protractor avec l'application AngularJS basée sur proxypass

J'ai essayé le plugin grunt-connect-proxy pour gérer /api passe proxy, mais il redirige simplement (code HTTP 301) localhost:9000/api-myserver.com/api, et ne reproduit pas le comportement d'une passe proxy (et l'application ne fonctionne pas non plus).

est ici la configuration Gruntfile:

connect: { 
    options: { 
     port: 9000, 
     hostname: 'localhost', 
     base: ['<%= globals.appFolder %>/'], 
     logger: 'dev', 
    } 
}, 

protractor: { 
    options: { 
     configFile: 'tests/e2e/protractor.config.js', 
     keepAlive: true, 
     noColor: false, 
     args: {} 
    }, 
    e2e: { 
     options: { 
      args: {} 
     } 
    } 
} 

Et voici le fichier de configuration Protractor:

exports.config = { 
    specs: ['./suites/*.js'], 
    baseUrl: 'http://localhost:9000', 
    maxSessions: 1, 
    multiCapabilities: [{ 
     browserName: 'chrome' 
    }], 
}; 

Comment voulez-vous traiter ce cas laisser des tests fonctionner à la fois une machine de bureau, et une télécommande machine (comme Jenkins)?

Répondre

1

Selon this issue lié à grunt-connect-proxy, il s'agit d'un bogue survenant lors du traitement des points de terminaison HTTPS. Utilisez plutôt la version master/.

Package.json:

"grunt-connect-proxy": "https://github.com/drewzboto/grunt-connect-proxy#master", 

Gruntfile:

proxies: [{ 
    context: '/api', 
    host: 'myserver.com', 
    port: 443, 
    https: true 
}]