Website-Suche

Selenium WebDriver - Wie man das Mocha-Timeout pro Suite in einem TypeScript-Test erhöht


Ich versuche, das Timeout für Mocha-Tests zu verlängern, da es sich um Webanfragen handelt, die Teil einer automatisierten UI-Testreihe sind und daher länger als die standardmäßigen 2000 ms dauern können.

Der Code selbst funktioniert großartig, wenn ich Mocha mit dem auf etwa 5000 ms gesetzten --timeout aufrufe, aber die standardmäßigen 2000 ms reichen nicht aus.

Ich möchte in der Lage sein, das Timeout pro Test-Suite festzulegen, damit das Timeout Teil der Erfolgskriterien wird, die je nach Fall unterschiedlich sein können.

before(()=>{
  var sw = require('selenium-webdriver');
  this.driver = new sw.Builder().withCapabilities(sw.Capabilities.chrome()).build();
  var c = require('chai');
  c.use(require('chai-webdriver')(this.driver));
  this.expect = c.expect;
  return this.driver.getWindowHandle();
})

after(() => {
  return this.driver.quit();
})

describe('Looking at github', () => {
  beforeEach(() => {
    this.driver.get('http://stackoverflow.com/');
  })
  describe('When we take a look at the stack overflow home page', () => {
    return it('It does not have crazy cat text in it!', () => {
      return this.expect('#h-top-questions').dom.to.not.contain.text("Just cats here!");
    });
  });
})

Antwort #1

Verwenden Sie function anstelle eines arrow und rufen Sie dann einfach this.timeout(5000); z.B.

describe('When we take a look at the stack overflow home page', () => {
    return it('It does not have crazy cat text in it!', function() {
      this.timeout(5000);
      return this.expect('#h-top-questions').dom.to.not.contain.text("Just cats here!");
    });
  });

Das liegt daran, dass ()=> das umgebende this erfasst. Mehr dazu unter http://basarat.gitbooks.io/typescript/content/docs/arrow-functions.html

Antwort #2

Eine Alternative zu Basarats Antwort, in ähnlicher Richtung, die eine andere Syntax verwendet (die auf eine andere Weise effektiv verwirrend ist!):

describe('When we take a look at the stack overflow home page', () => {
    it('does not have crazy cat text in it!', () => {
        expect('#h-top-questions').dom.to.not.contain.text("Just cats here!");
    }).timeout(5000);
});

Verwandte Artikel