2016-07-13 12 views
7

Tôi đang sử dụng Karma và PhantomJS với Jasmine để kiểm tra AngularJS của tôi. Khi tôi chạy thử nghiệm gulp cục bộ, nó hoạt động tốt, khởi chạy PhantomJS và chạy tất cả các thử nghiệm của tôi, nhưng khi các thử nghiệm chạy trên máy chủ xây dựng, nó không thành công với các lỗi sau:PhantomJS không bị bắt khi chạy qua máy chủ xây dựng

Lưu ý rằng tôi đang sử dụng VSTS và sử dụng trong hệ thống tạo đám mây (tác nhân được lưu trữ). Có nói rằng nó khá nhiều một Á hậu công việc và tôi chỉ sử dụng nó để chạy nhiệm vụ ngụm (xây dựng, thử nghiệm vv) trên checkin

[32m13 07 2016 15:21:32.260:INFO [karma]: [39mKarma v1.1.1 server started at http://localhost:9876/ 
[32m13 07 2016 15:21:32.262:INFO [launcher]: [39mLaunching browser PhantomJS with unlimited concurrency 
[32m13 07 2016 15:21:32.284:INFO [launcher]: [39mStarting browser PhantomJS 
[33m13 07 2016 15:22:32.285:WARN [launcher]: [39mPhantomJS have not captured in 60000 ms, killing. 
[33m13 07 2016 15:22:34.287:WARN [launcher]: [39mPhantomJS was not killed in 2000 ms, sending SIGKILL. 
[33m13 07 2016 15:22:36.288:WARN [launcher]: [39mPhantomJS was not killed by SIGKILL in 2000 ms, continuing. 

My Karma cấu hình là:

var configuration = { 
    basePath: "", 
    files: listFiles(), 

    singleRun: true, 

    autoWatch: false, 

    //usePolling: true, 
    //transports: ["xhr-polling", "jsonp-polling"], 

    frameworks: ["jasmine", "angular-filesort"], 

    angularFilesort: { 
     whitelist: [path.join(conf.paths.src, "/**/!(*.html|*.spec|*.mock).js")] 
    }, 

    ngHtml2JsPreprocessor: { 
     stripPrefix: "src/", 
     moduleName: "veriApp" 
    }, 

    browsers: ["PhantomJS"], 
    //browsers: ["Chrome"], 

    plugins: [ 
     "karma-chrome-launcher", 
     "karma-phantomjs-launcher", 
     "karma-angular-filesort", 
     "karma-jasmine", 
     "karma-ng-html2js-preprocessor" 
    ], 

    preprocessors: { 
     "src/**/*.html": ["ng-html2js"] 
    } 
}; 

Sau đây là các bộ phận liên quan của package.json của tôi. Lưu ý rằng cài đặt NPM được thực hiện trước khi chạy thử nghiệm

"karma": "1.1.1", 
"karma-angular-filesort": "1.0.0", 
"karma-jasmine": "1.0.2", 
"karma-ng-html2js-preprocessor": "1.0.0", 
"phantomjs-prebuilt": "2.1.4", 
"karma-phantomjs-launcher": "1.0.0", 
"karma-chrome-launcher": "1.0.1", 

Tôi đã thử các lời khuyên sau đây về các câu trả lời khác nhau về vấn đề này nhưng dường như không có cách nào hoạt động! Có lẽ tôi đang thiếu một cái gì đó?

+0

Mặc dù tôi không biết phần lớn điều này là gì, tôi sẽ hỏi liệu máy chủ từ xa đã cài đặt PhantomJS chưa và có thể truy cập được qua PATH của người dùng đang chạy hay không. – apokryfos

+0

@apokryfos Nó nên làm, tôi đã thiết lập mô-đun npm của tôi để bao gồm 'ma-prebuilt' - Tôi sẽ cập nhật câu hỏi của tôi với các phần có liên quan của package.json của tôi – Chris

+0

PhantomJS có cố gắng để khởi động một quá trình tương tác? Là như vậy các tác nhân xây dựng VSTS không được phép làm điều đó. –

Trả lời

16

... Vì vậy, giải pháp là khá dễ dàng nhưng mất một thời gian để tìm thấy:

Dưới tab biến của việc xây dựng thiết lập, thêm một biến môi trường:

PHANTOMJS_BIN C: \ NPM \ Mô-đun \ PhantomJS.cmd

Nhờ this linkthis link.

+1

Theo VSTS, tại thời điểm viết bài, tôi chỉ có thể làm việc này với biến dưới hộp 'Được lưu trữ', chứ không phải Hosted VS2017. Không chắc chắn về sự khác biệt trên hộp đã gây ra điều này: https://www.visualstudio.com/en-us/docs/build/concepts/agents/hosted –

Các vấn đề liên quan