23t*_*tux 8 javascript angularjs gruntjs protractor
我目前正在使用我的AngularJS应用程序和Grunt中的E2E测试和Protractor.我按照https://www.npmjs.org/package/grunt-protractor-runner的安装,我有2个问题:
第一:
我想知道,如果有可能的话,我可以通过Karma的单元测试获得这种行为:
我非常喜欢实时监视和自动重新加载,因为它减少了整个套件的启动时间,并使一切变得更快.
但是使用Protractor,我遇到了一个问题:每次我用Grunt开始测试时,测试都会执行,然后一切都会关闭.虽然,我将keepAlive选项设置为我true的量角器配置部分Gruntfile.js.有任何想法吗?
第二:
我无法让它工作,将Protractor连接到我的角度应用程序.我是否必须启动grunt服务器来提供文件?当我尝试在我的测试中访问某个页面时,browser.get('app/index.html');或者browser.get('#/');,我无法访问该页面.我玩过我的baseUrl选项(比如baseUrl: 'http://localhost:' + (process.env.HTTP_PORT || '8000'))protractor.conf.js.但对我而言,我必须先启动grunt服务器,我是对的吗?我怎么能这样做?或者还有其他选项可以访问我的角度应用程序?我正在使用带指南针的萨斯,所以我想,我需要compass:dist以某种方式获得这些目标.
更新:
我找到了一个解决方法.我注册了以下grunt任务:
grunt.registerTask('e2e', [
'clean:server',
'concurrent:test',
'autoprefixer',
'connect:test',
'concurrent:server',
'autoprefixer',
'protractor',
'watch'
]);
Run Code Online (Sandbox Code Playgroud)
当grunt e2e我的服务器启动时,基于baseUrl: 'http://10.0.0.200:9001'我的内部protractor.conf.js,我的测试正在运行.测试完成后,watch任务会监视已更改的文件,并在需要时重新运行量角器.
这样做的缺点是,每次watch启动protractor任务时,都会生成一个新的Chrome实例,并在测试结束后终止.有没有办法防止量角器杀死Chrome实例?
此外,我想知道为什么在每个教程中它总是说"只是运行grunt protractor,你的测试被执行......".为什么我需要一个额外的任务来启动我的grunt服务器来访问我的angularjs应用程序?
这是我的配置文件:
protractor.conf.js
exports.config = {
capabilities: {
'browserName': 'chrome'
},
chromeOnly: true,
specs: ['test/e2e/**/*.js'],
jasmineNodeOpts: {
showColors: true
},
framework: 'jasmine'
};
Run Code Online (Sandbox Code Playgroud)
Gruntfile.js
module.exports = function(grunt) {
// Load grunt tasks automatically
require('load-grunt-tasks')(grunt);
grunt.loadNpmTasks('grunt-protractor-runner');
grunt.initConfig({
// ...
protractor: {
options: {
configFile: "protractor.conf.js",
keepAlive: false,
noColor: false
},
run: {}
},
// ...
});
// ...
grunt.registerTask('test:e2e', [
'clean:server',
'compass:dist',
'compass:server',
'autoprefixer',
'connect:test',
'protractor'
]);
// ...
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
我想知道是否有可能从我的 Karma 单元测试中获得这种行为:
通常,您不会在每次 HTML 更改后运行 E2E 测试。其主要原因是,随着添加越来越多的测试,运行 E2E 测试可能需要很长时间。因此,为了回答这个问题,我不相信有任何内置方法可以支持在同一浏览器中每次更改后运行 E2E 测试。我建议使用单元测试作为每次更改后进行测试的机制,并手动运行 E2E 测试。
我是否必须启动 grunt 服务器来提供文件?
是的,您需要启动服务器来运行量角器测试。你并不是在启动一个“grunt 服务器”,你实际上是在启动一个 Selenium 将使用的 Web 服务器,它是 Protractor 用于测试的引擎。这是使用 Protractor 和 ng-scenario 之间的主要区别因素之一(除其他外)。
有没有办法防止 Protractor 杀死 Chrome 实例?
再说一遍,我不相信 Protractor 应该这样使用,因为您不需要在每次更改后运行 E2E 测试。但要回答这个问题,我不这么认为。
为什么我需要额外的任务来启动 grunt 服务器来访问我的 angularjs 应用程序?
与上面关于硒的答案相同。
| 归档时间: |
|
| 查看次数: |
6761 次 |
| 最近记录: |