Todos os nossos testes de unidade de karma parecem ter sucesso em nossa construção automatizada, mas o executor PhantomJS retorna um resultado diferente de zero para a estrutura de construção (TeamCity). O único erro que encontro nos registros é:
[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 ','
O projeto está usando:
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
}
}
});
}
Coisas que eu tentei:
Minhas próximas etapas: suponho que começarei a desabilitar os testes individuais para ver se algum deles tem influência sobre o resultado final.
Update: desabilitar todos os testes via xdescribe não resolveu o erro. Portanto, sei que o erro não está relacionado aos testes em si, mas a algum bug ou incompatibilidade nos plug-ins / bibliotecas.
Aparentemente, o PhantomJS não foi atualizado desde 2016 (v2.1.1) e não é um projeto ativo. Parece que a recomendação é substituir o PhantomJS em seus projetos pelo ChromeHeadless .
Até o mantenedor do PhantomJS, Vitaliy Slobodin, disse sobre o ChromeHeadless:
Acho que as pessoas vão mudar para ele, eventualmente. O Chrome é mais rápido e estável que o PhantomJS. E não come a memória como um louco.
Teria sido bom encontrar um navegador sem cabeça que não dependesse do Google, mas aparentemente o PhantomJS estava usando um mecanismo baseado em WebKit de qualquer maneira, então não estamos realmente perdendo nenhuma variedade / amplitude de navegador ao fazer essa alteração.
Seguindo as instruções nos artigos vinculados, meu problema foi embora, mais ou menos. Eu encontrei outro erro afterAll semelhante relacionado a uma referência de biblioteca ausente. Suspeito que tenha sido o mesmo erro do PhantomJS, mas não foi relatado corretamente. Depois de mudar para ChromeHeadless, o erro foi relatado corretamente e foi fácil de corrigir.
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras