2015-11-26 7 views
9

Ich benutze Albtraum js, um sich bei einer Website anmelden, die ein Token im lokalen Speicher setzt. Alle zukünftigen Tests, bei denen der Benutzer ausgeführt wird, sind jedoch bereits angemeldet. Ich vermute, dass der lokale Speicher nicht gelöscht wurde. Gibt es eine Möglichkeit, dies zu tun? Mein Code in test.jslöschen Sie den Cache in Nightmare.js (Elektron)

require('mocha-generators').install(); 

var Nightmare = require('nightmare'); 
var expect = require('chai').expect; 

describe('test login', function() { 
    var nightmare = Nightmare({show: true}) 

    after(function*() { 
    yield nightmare.end(); 
    }) 

    it('should login given right credentials', function*() { 
    this.timeout(50000); 
    console.log("running test"); 
    var link = yield nightmare 
     .goto('http://127.0.0.1:3000/login') 
     .wait(1000) 
     .type('.email-field', '[email protected]') 
     .type('.password-field', 'password') 
     .click('.login button') 
     .wait(1000) 

    }); 
}) 

ich den Test laufen mit: Mokka

der Test läuft gut und schließt. Wenn ich jedoch erneut laufe, startet der Benutzer als eingeloggt. Gibt es trotzdem einen Cache oder einen lokalen Speicher in nightmarejs?

Electron hat eine Möglichkeit, Sitzung Informationen über session.clearCache (http://electron.atom.io/docs/v0.32.0/api/session/) zu löschen, aber ich weiß nicht, wie auf das Session-Objekt von Albtraum zugreifen.

+0

Haben Sie es herausgefunden? Ich frage mich nur. Vielen Dank. – Felix

+0

@FelixG antwortete unter – Saad

Antwort

11

Alles klar, wir können die Web-Präferenzen von Electrons verwenden.

Wenn Albtraum eingeleitet wird, verwenden Sie die Partitionseigenschaft 'web-prefences', um Sitzungen zu behandeln. mehr Infos hier: https://github.com/atom/electron/blob/master/docs/api/browser-window.md. Der Kern von ist wie folgt:

Die Seite wird eine persistente Sitzung für alle Seiten in der App mit der gleichen Partition verwenden. Wenn es kein persist: -Präfix gibt, verwendet die Seite eine Sitzung im Speicher.

also im Grunde, wenn Sie init Alptraum wie:

var nightmare = Nightmare({ 
    show: false, 
    webPreferences: { 
    partition: 'persist:derp' 
    } 
}); 

dann die Sitzung unter ‚derp‘ anhalten wird, kann dies hilfreich sein, wenn Sie Funktionen innerhalb authentifizierten Routen testen. (Derp nicht signifikant ist, kann alles sein, folgende bestehen:)

wenn Sie nicht verwenden, keine Sitzung wollen anhalten bestehen:. Ich benutze nopersist aber dies könnte eine beliebige Zeichenfolge sein, die nicht von vorangestellt wird anhalten:

EDIT:show:false ist nicht signifikant zu Sitzung, es zeigt nur, was Elektron (der Albtraum verwendet) tut, wenn Sie setzen show:true, aber diese Zeile kann entfernt werden

+2

Es scheint, der Name der Eigenschaft ist eigentlich webPreferences, nicht Web-Einstellungen –

+0

hängt von der Version von Albtraum, sie haben es möglicherweise für neuere Version aktualisiert. – Saad

+0

Maksim hi5! webPreferences ist es –