PhantomJS не перехватывается при запуске через сервер сборки

Я использую Karma и PhantomJS с Jasmine для тестирования своего AngularJS. Когда я запускаю тест gulp локально, он работает нормально, запускает PhantomJS и выполняет все мои тесты, но когда тесты запускаются на сервере сборки, он завершается со следующими ошибками:

Обратите внимание, что я использую VSTS и использую их встроенную систему облачной сборки (размещенный агент). Сказав, что это в значительной степени средство запуска задач, и я использую его только для запуска задач gulp (сборка, тестирование и т. д.) при регистрации.

[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.

Моя конфигурация кармы:

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"]
    }
};

Вот соответствующие части моего package.json. Обратите внимание, что установка NPM выполняется до запуска теста.

"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",

Я пробовал следовать советам из разных ответов по этому поводу, но, похоже, ни один из них не работает! Возможно, я что-то упускаю?


person Chris    schedule 13.07.2016    source источник
comment
Несмотря на то, что я понятия не имею, что это такое, я склонен спросить, установлен ли на удаленном сервере PhantomJS и доступен ли он через PATH работающего пользователя.   -  person apokryfos    schedule 13.07.2016
comment
@apokryfos Это должно подойти, я настроил свои модули npm для включения phantom-prebuilt - я обновлю свой вопрос соответствующими частями моего package.json   -  person Chris    schedule 13.07.2016
comment
Пытается ли PhantomJS запустить интерактивный процесс? Так что агенту сборки VSTS не разрешено это делать.   -  person James Davis - MSFT    schedule 13.07.2016
comment
@debugthings Честно говоря, понятия не имею, есть ли что-нибудь вокруг этого, если да?   -  person Chris    schedule 13.07.2016


Ответы (1)


Итак... решение довольно простое, но потребовалось некоторое время, чтобы найти:

На вкладке «Переменные» настройки сборки добавьте переменную среды:

PHANTOMJS_BIN C:\NPM\Modules\PhantomJS.cmd

Благодаря этой ссылке и эта ссылка.

person Chris    schedule 14.07.2016
comment
В VSTS на момент написания я смог заставить это работать только с переменной в поле «Размещенный», а не с размещенным VS2017. Не уверен в различии в поле, которое вызывало это: visualstudio .com/en-us/docs/build/concepts/agents/hosted - person David Douglas Anderson; 18.05.2017