Tôi hiện đang chơi xung quanh với các thử nghiệm E2E một Thước đo góc trong ứng dụng AngularJS và Grunt của tôi. Tôi làm theo các cài đặt từ https://www.npmjs.org/package/grunt-protractor-runner, và tôi có 2 câu hỏi:AngulrJS + Grunt + Thước đo: keepAlive và xem
Đầu tiên:
tôi đã tự hỏi, nếu có thể, để có hành vi từ đơn vị xét nghiệm của tôi với Karma:
- bắt đầu máy chủ thử nghiệm
- chạy tất cả các thử nghiệm
- khi tệp thử nghiệm hoặc bất kỳ thay đổi tệp html/js nào khác, chạy lại tất cả các thử nghiệm
Tôi thích cách đó với đồng hồ trực tiếp và tự động tải lại rất nhiều, bởi vì nó làm giảm thời gian khởi động từ toàn bộ bộ và làm mọi thứ nhanh hơn.
Nhưng với thước đo góc, tôi có vấn đề: Mỗi khi tôi bắt đầu thử nghiệm với Grunt, các kiểm tra được thực hiện, và sau đó mọi thứ tắt. Mặc dù, tôi đặt tùy chọn keepAlive
thành true
trong phần cấu hình thước đo của Gruntfile.js
. Bất kỳ ý tưởng?
Thứ hai:
tôi không thể có được nó để làm việc, để kết nối thước đo để ứng dụng góc của tôi. Tôi có phải khởi động máy chủ grunt, để phục vụ các tập tin không? Khi tôi cố truy cập một trang trong các thử nghiệm của tôi như browser.get('app/index.html');
hoặc browser.get('#/');
, tôi không thể truy cập trang. Tôi đã chơi xung quanh với tùy chọn baseUrl
(như baseUrl: 'http://localhost:' + (process.env.HTTP_PORT || '8000')
) từ số protractor.conf.js
của tôi. Nhưng với tôi có vẻ như, tôi phải bắt đầu máy chủ grunt trước đây, tôi có đúng không? Và làm thế nào tôi có thể làm điều này? Hoặc có bất kỳ tùy chọn nào khác để truy cập ứng dụng góc của tôi không? Tôi đang sử dụng sass với la bàn, vì vậy tôi nghĩ rằng, tôi cần số tiền tống tiền compass:dist
.
UPDATE:
Tôi tìm thấy một workaround. Tôi đã đăng ký nhiệm vụ grunt sau:
grunt.registerTask('e2e', [
'clean:server',
'concurrent:test',
'autoprefixer',
'connect:test',
'concurrent:server',
'autoprefixer',
'protractor',
'watch'
]);
Khi bắt đầu với grunt e2e
máy chủ của tôi được bắt đầu, dựa trên baseUrl: 'http://10.0.0.200:9001'
bên protractor.conf.js
của tôi, và các bài kiểm tra của tôi đang chạy. Khi các bài kiểm tra được hoàn thành, các đồng hồ nhiệm vụ watch
cho các tệp đã thay đổi và chạy lại thước đo góc nếu cần.
Hạn chế của việc này là, mọi lúc watch
bắt đầu nhiệm vụ protractor
, một phiên bản Chrome mới được sinh ra và sau khi thử nghiệm bị giết. Có cách nào để ngăn chặn thước đo góc khỏi việc giết chết phiên bản Chrome không?
Hơn nữa, tôi đã tự hỏi tại sao trong mọi hướng dẫn, nó luôn luôn nói sth như "Chỉ cần chạy grunt protractor
và các thử nghiệm của bạn được thực thi ...". Tại sao tôi cần một nhiệm vụ bổ sung để khởi động máy chủ grunt của tôi để truy cập ứng dụng angularjs của tôi?
Và đây là file cấu hình của tôi:
protractor.conf.js
exports.config = {
capabilities: {
'browserName': 'chrome'
},
chromeOnly: true,
specs: ['test/e2e/**/*.js'],
jasmineNodeOpts: {
showColors: true
},
framework: 'jasmine'
};
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'
]);
// ...
}
cảm ơn!
Tại sao một phiếu giảm giá? Vui lòng giải thích một chút – 23tux
Một downvote khác, bạn có thể giải thích những gì là sai với câu hỏi của tôi để giúp cải thiện nó? – 23tux