Os testes de Karma são bem-sucedidos, mas o PhantomJS retorna "Um erro foi lançado em afterAll" SyntaxError: Token inesperado ','

Jordan Rieger

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:

  • Várias versões diferentes de karma / Node.js.
  • Algumas perguntas semelhantes sugeriram que há uma condição de corrida em nossos testes, e deveríamos desativar a ordem aleatória padrão do carma, mas isso não ajudou.
  • Não há assíncrono em nenhum lugar em nossos arquivos .spec.js.

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.

Jordan Rieger

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.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    UITextView não está exibindo texto longo

  3. 3

    Dependência circular de diálogo personalizado

  4. 4

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  5. 5

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  6. 6

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  7. 7

    Setas rotuladas horizontais apontando para uma linha vertical

  8. 8

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  9. 9

    Definir um clipe em uma trama nascida no mar

  10. 10

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  11. 11

    Como dinamizar um Dataframe do pandas em Python?

  12. 12

    regex para destacar novos caracteres de linha no início e no fim

  13. 13

    Why isn't my C# .Net Core Rest API route finding my method?

  14. 14

    Como obter a entrada de trás de diálogo em treeview pyqt5 python 3

  15. 15

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  16. 16

    How to create dynamic navigation menu select from database using Codeigniter?

  17. 17

    Como recuperar parâmetros de entrada usando C #?

  18. 18

    Changing long, lat values of Polygon coordinates in python

  19. 19

    Livros sobre criptografia do muito básico ao muito avançado

  20. 20

    Método \ "POST \" não permitido no framework Django rest com ações extras & ModelViewset

  21. 21

    Pesquisa classificada, conte números abaixo do valor desejado

quentelabel

Arquivo