2015-11-26 53 views
9

Sto usando nightmare js per accedere a un sito che imposta un token nella memoria locale. Tuttavia, eventuali test futuri che eseguo l'utente sono già registrati. Suppongo che la memoria locale non sia stata cancellata. C'è un modo per fare questo? Il mio codice in test.jscancella cache in Nightmare.js (Electron)

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) 

    }); 
}) 

ho eseguire il test utilizzando: moka

il test funziona bene e si chiude. Tuttavia, quando corro di nuovo, l'utente si avvia come registrato. Esiste comunque la possibilità di svuotare la cache o la memoria locale in nightmarejs?

Electron ha un modo per cancellare le informazioni di sessione tramite session.clearCache (http://electron.atom.io/docs/v0.32.0/api/session/) ma non so come accedere all'oggetto di sessione da incubo.

+0

Hai capito? Mi stavo solo chiedendo. Grazie. – Felix

+0

@FelixG ha risposto sotto – Saad

risposta

11

Va bene, abbiamo capito, possiamo usare la proprietà delle preferenze web di Electrons.

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

all'avvio dell'incubo utilizzare la proprietà della partizione "web-prefences" per gestire le sessioni. maggiori informazioni qui: https://github.com/atom/electron/blob/master/docs/api/browser-window.md. Il primo è il seguente:

la pagina utilizzerà una sessione persistente disponibile per tutte le pagine nell'app con la stessa partizione. se non c'è persist: prefisso, la pagina userà una sessione in memoria.

in modo sostanzialmente se init incubo come:

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

quindi la sessione persisterà sotto 'derp', questo può essere utile quando si esegue il test funzioni all'interno percorsi autenticati. (Derp non è significativo, può essere qualsiasi cosa seguente persistono:)

se non si vuole sessione persistere non utilizzare persistono:. Io uso nopersist ma questo potrebbe essere qualsiasi stringa che non sia preceduto da persistono:

EDIT:show:false non è significativo per sessione, solo mostra ciò che di elettroni (che utilizza incubo) sta facendo, se hai impostato show:true, ma questa riga può essere rimossa

+2

Sembra che il nome della proprietà sia effettivamente WebPreferences, non le preferenze web –

+0

dipendono dalla versione di incubo, potrebbero averlo aggiornato per la versione più recente. – Saad

+0

Maksim hi5! webPreferences è –