Protractor: Erro: tempo limite - o retorno de chamada assíncrono não foi invocado dentro do tempo limite especificado por jasmine.DEFAULT_TIMEOUT_INTERVAL

Criado em 19 fev. 2016  ·  26Comentários  ·  Fonte: angular/protractor

eu uso o exemplo de " http://www.protractortest.org/#/tutorial "

// spec.js
describe('Protractor Demo App', function() {
  it('should have a title', function() {
    browser.get('http://juliemr.github.io/protractor-demo/');

    expect(browser.getTitle()).toEqual('Super Calculator');
  });
});

// conf.js
exports.config = {
  framework: 'jasmine',
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['spec.js']
}

Agora execute o teste com

protractor conf.js

Em seguida, a exibição do console:
image

needs more info

Comentários muito úteis

@sallojusuresh , a solução abaixo funcionou.
jasmineNodeOpts: {
defaultTimeoutInterval: 2500000
},
Pergunta - Quando podemos definir um tempo padrão como acima, de onde vem o uso da função setTimeout em 'beforeEach' e callbacks feitos em 'it'. Qualquer ideia?

Todos 26 comentários

Você pode encontrar a solução no post abaixo: basta passar pelo post inteiro.

https://github.com/angular/protractor/issues/2941#issuecomment -186104304

Você consegue iniciar o selênio com sucesso? O que acontece se você usar directConnect ?

Fechando problemas obsoletos.

estou tendo o mesmo problema e o outro post não funciona para mim.
@juliemr alguma solução para isso? eu tentei allScriptsTimeout: 900000 mas isso não resolve o problema.

Também não funciona para mim. aumentar defaultTimeoutInterval não resolve

@juliemr Estou com o mesmo problema e aumentar o ScriptsTimeout não funciona para mim. Você tem alguma solução para isso? Obrigada.

Olá a todos,

Estou executando um caso de teste no transferidor obtendo erro de tempo limite. Aqui estão os detalhes. Conselho por favor. Obrigada

Erro: Tempo limite - o retorno de chamada assíncrono não foi invocado dentro do tempo limite especificado por jasmine.DEFAULT_TIMEOUT_INTERVAL.

sample_spec.js

describe('Teste de aplicativo Mcac', function() {
browser.get('http://localhost:3000/integrated/myWeb.html');
beforeEach(função (concluída) {
window.jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
setTimeout(função() {
console.log('dentro do tempo limite');
feito();
}, 50.000);
});
//browser.get(' http://localhost:3000/integrated/myWeb.html');
// browser.get('http://localhost:3000/integrated/myWeb.html').then(function() {
it('Validação de endereço de e-mail', function()
{

        element(by.model('ctrl.formData.emailAddress')).sendKeys('').clear();
        element(by.model('ctrl.formData.emailAddress')).sendKeys('[email protected]');
        element(by.model('ctrl.formData.emailAddress')).getAttribute('value').then(function (value) {
            expect(value).toEqual('[email protected]');
        });


}, 10000);

// element(by.xpath("//button[text()='Confirmar']")).click();
navegador.sono(5000);

});

config.js

// Um ​​arquivo de configuração de exemplo.
export.config = {
directConnect: verdadeiro,

// Capacidades a serem passadas para a instância do webdriver.
capacidades: {
'browserName': 'cromo'
},

// Estrutura a ser usada. Jasmim é recomendado.
estrutura: 'jasmim',

// Os padrões de especificação são relativos ao diretório de trabalho atual quando
// o transferidor é chamado.
// especificações: ['example_spec.js'],
//especificações: ['mcac_spec.js'],
//especificações: ['mcac_spec_mobile.js'],
especificações: ['mcac_online.js'],
// Opções a serem passadas para Jasmine.
jasmineNodeOpts: {
defaultTimeoutInterval: 5000
}

};

qualquer ajuda muito apreciada.

Eu tive esse problema e foi por causa de um $timeout repetido ( $timeout bloqueia o transferidor, enquanto $interval não).

Para encontrar o $timeout repetido, você pode usar o explorador de elementos do Protractor, por exemplo:

$ protractor config/protractor.js --elementExplorer
Starting debugger agent.
Debugger listening on port 5858
> var body = element(by.css('body'))
> body.isPresent()
ScriptTimeoutError: Timed out waiting for asynchronous Angular tasks to finish after 15 seconds. This may be because the current page is not an Angular application. Please see the FAQ for more details: https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular
While waiting for element with locator - Locator: By(css selector, body). 
The following tasks were pending:
 - $timeout: function () {
        // ......
    }

Obrigada.

Encontrei o problema. é por causa do carregamento de url leva tempo e procura
ng-app tag na página html.

Cumprimentos,
Narendra

Narendra...!

Em 15 de dezembro de 2016 às 06:12, Amy Boyd [email protected] escreveu:

Eu tive esse problema e foi por causa de um $ timeout repetido ($ timeout
bloqueia o Transferidor, enquanto $interval não).

Para encontrar o $timeout repetido, você pode usar o explorador de elementos do Protractor,
por exemplo:

$ transferidor config/protractor.js --elementExplorer
Iniciando o agente depurador.
Depurador escutando na porta 5858

var corpo = elemento(by.css('corpo'))
body.isPresent()
ScriptTimeoutError: Tempo limite esgotado aguardando a conclusão de tarefas Angular assíncronas após 15 segundos. Isso pode ocorrer porque a página atual não é um aplicativo Angular. Consulte as perguntas frequentes para obter mais detalhes: https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting -for-angular
Enquanto espera por elemento com localizador - Localizador: By(seletor css, corpo).
As seguintes tarefas estavam pendentes:

  • $timeout: function() {
    // ......
    }


Você está recebendo isso porque comentou.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/angular/protractor/issues/2963#issuecomment-267302567 ,
ou silenciar o thread
https://github.com/notifications/unsubscribe-auth/AViSFkiN29oWnH6AJ0P_wNY_LNzE2fglks5rISCYgaJpZM4Hd20v
.

Olá a todos,

Estou executando um caso de teste no transferidor obtendo erro de tempo limite. Aqui estão os detalhes. Conselho por favor. Obrigada

Falha: tempo limite esgotado aguardando a conclusão de tarefas Angular assíncronas após 30 segundos. Isso pode ocorrer porque a página atual não é um aplicativo Angular.

@sallojusuresh , a solução abaixo funcionou.
jasmineNodeOpts: {
defaultTimeoutInterval: 2500000
},
Pergunta - Quando podemos definir um tempo padrão como acima, de onde vem o uso da função setTimeout em 'beforeEach' e callbacks feitos em 'it'. Qualquer ideia?

Eu consertei da seguinte maneira

 var originalTimeout;

    beforeEach(function() {
        originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
        jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
    });

    afterEach(function() {
      jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
    });

Obrigada.

Narendra...!

Em 11 de março de 2018 às 23h53, Md. Zahirul Haque [email protected]
escreveu:

Eu consertei da seguinte maneira

` var originalTimeout;

antesEach(função(){
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
jasmim.DEFAULT_TIMEOUT_INTERVAL = 10000;
});

depoisEach(função(){
jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
});`


Você está recebendo isso porque comentou.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/angular/protractor/issues/2963#issuecomment-372187210 ,
ou silenciar o thread
https://github.com/notifications/unsubscribe-auth/AViSFg7ITAW3XW5zky_-QXXmAudt11qDks5tdfE1gaJpZM4Hd20v
.

@NickTomlin Você acabou de ganhar meu dia :) Eu usei o directconnect e trabalhei. Seria ótimo se você esclarecesse o que o directconnect realmente faz

No meu caso, esse erro foi causado pelo uso indevido de "fixture.detectChanges()" Parece que esse método é um ouvinte de eventos (assíncrono) que só responderá a um retorno de chamada quando forem detectadas alterações. Se nenhuma alteração for detectada, ele não invocará o retorno de chamada, resultando em um erro de tempo limite. Espero que isto ajude :)

@juliemr Tempo limite - o retorno de chamada assíncrono não foi invocado dentro do tempo limite especificado por jasmine.DEFAULT_TIMEOUT_INTERVAL. este erro vem no meu teste novamente n novamente eu usei antes de cada, depois de cada, browser.sleep, aumentou o iterval de timeout do jasmine até 100000. mas meu código não é executado, então por favor me sugira o que eu poderia fazer.

Eu tenho esse problema e não consigo resolver enquanto aumentamos o tempo limite do jasmim para 300.000. Então, por favor, sugira-me o que devo fazer para isso.

Você poderia fornecer um exemplo simples?

A solução para isso é, se você estiver tentando escrever testes para aplicativos não angulares, vá para runner.js em node_modules/protractor/built
Edite a linha # 210 para waitForAngularEnabled: false //true

@juliemr uma sugestão para tornar essa configuração configurável.

você pode fazer isso na seção onPrepare() :

onPrepare: async () => {
    await browser.waitForAngularEnabled(false);
    ....
}

Eu tenho o mesmo problema, mas as soluções fornecidas aqui não funcionaram para mim. Se você tiver tempo, dê uma olhada na minha pergunta no Stack Overflow. O problema pode ser facilmente reproduzido e eu tenho um repositório. Eu acho que é possível um bug.
https://stackoverflow.com/questions/53786401/error-debugging-protractor-with-node-8-async-await-and-angular-6

Esperado false para igual a true porque: logs de erros presentes no console:Entry {
level: Level { name_: 'SEVERE', value_: 1000 },
mensagem:
Erro "ERRO": formGroup espera uma instância FormGroup. Por favor, passe um.\n\n Exemplo:\n\n \n

\n \n
\n\n Na sua classe:\n\n this.myGroup = new FormGroup({\n firstName: new FormControl()\n });\n em Function.e.missingFormException

obtendo problema ao clicar no botão pop-up, alguma solução?

Eu tenho um problema semelhante com o post e resolvi meu problema adicionando HttpClientModule nas importações:

antesEach(() => {

TestBed.configureTestingModule({

    declarations: [],

    providers: [ CookieService, HttpClient],  

    imports: [HttpClientModule],
});

});

Eu tenho um problema semelhante com o post e resolvi meu problema adicionando HttpClientModule nas importações:

antesEach(() => {

TestBed.configureTestingModule({

    declarations: [],

    providers: [ CookieService, HttpClient],  

    imports: [HttpClientModule],
});

});

Eu pessoalmente tive problemas para importar o HttpClientModule dentro de um testbed. Ele tenta executar suas APIs em seus testes de unidade e, como resultado, eles falham. A abordagem correta seria usar HttpClientTestingModule

@sallojusuresh , a solução abaixo funcionou.
jasmineNodeOpts: {
defaultTimeoutInterval: 2500000
},
Pergunta - Quando podemos definir um tempo padrão como acima, de onde vem o uso da função setTimeout em 'beforeEach' e callbacks feitos em 'it'. Qualquer ideia?

Esta é a melhor solução, basta colar este pedaço de código em seu arquivo de configuração, ele deve resolver seu problema.

Esta página foi útil?
0 / 5 - 0 avaliações