Тесты кармы успешны, но PhantomJS возвращает «Ошибка после всех» SyntaxError: Неожиданный токен ',' - PullRequest
1 голос
/ 31 мая 2019

Кажется, что все наши модульные тесты кармы успешны в нашей автоматической сборке, но бегун PhantomJS возвращает ненулевой результат в среду сборки (TeamCity). Единственная ошибка, которую я могу найти в журналах:

[17:53:31][JavaScript Unit Tests] PhantomJS 2.1.1 (Windows 8.0.0) ERROR
[17:53:31][JavaScript Unit Tests]   An error was thrown in afterAll
[17:53:31][JavaScript Unit Tests]   SyntaxError: Unexpected token ','

Проект использует:

  • AngularJS@1.4.8
  • karma@4.1.0
  • npm@6.9.0
  • Node.js@v12.3.1

karma.conf.js:

// Karma Configuration
module.exports = function (config) {
    config.set({
        browsers: ["PhantomJS"],
        files: [
            "scripts/vendor/angularjs/1.4.8/angular.js",
            "scripts/vendor/angularjs/1.4.8/angular-animate.js",
            "scripts/vendor/*.js",
            "scripts/angular/**/*.module.js",
            "scripts/angular/**/*.app.js",
            "scripts/angular/**/*.js",
            "scripts/angular/**/spec/*.spec.js"
        ],
        exclude: [
            "scripts/vendor/angular-1*.js",
            "scripts/vendor/angular-animate.js",
            "scripts/angular/anycastManagementApp/anycastManagement.app.js",
            "scripts/angular/cart/**/.js",
            "scripts/angular/cart/*.js",
            "scripts/vendor/bootstrap.min.js",
            "scripts/angular/angular-bootstrap-datetimepicker/**/*.*"
        ],
        plugins: [
            "karma-jasmine",
            "karma-jasmine-matchers",
            "karma-chrome-launcher",
            "karma-phantomjs-launcher",
            "karma-teamcity-reporter",
            "karma-spec-reporter",
            "karma-coverage"
        ],
        frameworks: ["jasmine", "jasmine-matchers"],
        port: 9000,
        logLevel: config.LOG_DEBUG,
        client: {
            jasmine: {
                random: false
            }
        }
    });
}

Вещи, которые я пробовал:

  • Несколько разных версий karma / Node.js.
  • Некоторые похожие вопросы предполагали, что в наших тестах есть условие гонки, и мы должны отключить случайный порядок по умолчанию кармы, но это не помогло.
  • В наших файлах .spec.js нигде нет асинхронности.

Мои следующие шаги: Полагаю, я начну отключать отдельные тесты, чтобы посмотреть, повлияет ли какой-либо из них на этот результат после всего.

Обновление: отключение всех тестов с помощью xdescribe не устранило ошибку. Поэтому я знаю, что ошибка связана не с самими тестами, а с некоторой ошибкой или несовместимостью в плагинах / библиотеках.

1 Ответ

0 голосов
/ 01 июня 2019

Видимо PhantomJS не обновлялся с 2016 года (v2.1.1) и не является активным проектом.Кажется, что рекомендация состоит в том, чтобы заменить PhantomJS в ваших проектах на ChromeHeadless .

Даже сопровождающий PhantomJS Виталий Слободин сказал о ChromeHeadless:

Я думаю, что люди со временем перейдут на это.Chrome быстрее и стабильнее, чем PhantomJS.И он не ест память как сумасшедший.

Было бы неплохо найти браузер без головы, который не зависел бы от Google, но, очевидно, PhantomJS все равно использовал движок на основе WebKit, поэтомуВ результате этого изменения мы не теряем возможности выбора или расширения браузера.

Следуя инструкциям в связанных статьях, моя проблема ушла, вроде как.Я столкнулся с другой подобной afterAll ошибкой , связанной с отсутствующей ссылкой на библиотеку.Я подозреваю, что это была та же ошибка, что и в PhantomJS, но о ней не сообщалось правильно.После переключения на ChromeHeadless сообщение об ошибке сообщалось правильно и было легко исправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...