2016-10-28 3 views
0

Dank @pipo_dev konnte ich ein Problem lösen, das ich mit mehreren Bewertungen in NightmareJS hatte, eine Sache, die ich gerne wissen würde, ist, wenn ich mehrere Berichte für den gleichen Test bereitstellen kann folgendes als Beispiel:NightmareJS mehrere Berichte vom gleichen Test

describe('test google search results', function() { 
    this.timeout(15000); 
    it('should find the nightmare github link first', function(done) { 
    var nightmare = Nightmare({show: true}) 

    nightmare 
     .goto('http://google.com') 
     .wait(1000) 
     .type('form[action*="/search"] [name=q]', 'github nightmare') 
     .click('form[action*="/search"] [type=submit]') 
     .wait(1000)//.wait('#rcnt') 
     .evaluate(function() { 
     return document.querySelector('div.rc h3.r a').href 
     }) 
     .then(function(link) { 
     console.log("TESTING 1"); 
     expect(link).to.equal('https://github.com/segmentio/nightmare'); 

     nightmare 
      .evaluate(function() { 
      return document.querySelector('div.rc h3.r a').href 
      }) 
      .end() 
      .then(function(link) { 
      console.log("TESTING 2"); 
      expect(link).to.equal('https://github.com/segmentio/nightmare'); 
      done(); 
      }) 
     }) 
     .catch(function(error) { 
     done(new Error(error)) 
     }) 
    }); 
}); 

Was ich möchte, wie die Ausgabe zu sehen ist:

Test Google search results 
    ✓ should find the nightmare github link first TEST 1 (8718ms) 
    ✓ should find the nightmare github link first TEST 2 (8718ms) 

Statt zur Zeit ich so etwas wie dieses:

Test Google search results 
    ✓ should find the nightmare github link first (8718ms) 

Allerdings bekomme ich mit dem aktuellen Setup nur einen Bericht für den gesamten Test, vielleicht ist mein Ansatz nicht effizient, aber ich muss bis zu 100 Tests auf der Benutzeroberfläche auf der gleichen Seite ausführen und muss die Tests nicht jedes Mal neu erstellen Ein neuer Teststart würde viel Zeit sparen.

Antwort

4

Nachdem ich mehr mit Nightmare gearbeitet habe, konnte ich herausfinden, dass ich Nightmare instanziieren und für andere Tests wiederverwenden kann. Vereinfachte Version:

describe('descr', function() { 

var ur = "http://www.helmutgranda.com"; 
var nightmare = new Nightmare{); 
nightmare.goto(url); 

it('first test', function(done) { 
    nightmare 
    .wait('element') 
    .evaluate(....) 
    .run(); 
} 

it('second test', function(done) { 
    nightmare 
    .wait('element') 
    .evaluate(....) 
    .run(); 
} 

}); 
Verwandte Themen