10

私はナイトメア js を使用して、ローカル ストレージにトークンを設定するサイトにログインしています。ただし、ユーザーが実行する将来のテストはすべて既にログインしています。ローカルストレージがクリアされていないと思います。これを行う方法はありますか?test.jsの私のコード

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', 'username@email.com')
      .type('.password-field', 'password')
      .click('.login button')
      .wait(1000)

  });
})

私は次を使用してテストを実行します: mocha

テストは正常に実行され、終了します。ただし、再度実行すると、ユーザーはログインした状態で開始されます。ナイトメアのキャッシュまたはローカルストレージをクリアする方法はありますか?

session.clearCacheElectron には( http://electron.atom.io/docs/v0.32.0/api/session/ )経由でセッション情報をクリアする方法がありますが、悪夢からセッション オブジェクトにアクセスする方法がわかりません。

4

1 に答える 1

14

わかりました。Electrons の「web-preferences」プロパティを使用できます。

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

悪夢を開始するときは、'web-prefences' パーティション プロパティを使用してセッションを処理します。詳細はこちら: https://github.com/atom/electron/blob/master/docs/api/browser-window.md。あらすじは以下の通りです。

ページは、同じパーティションを持つアプリ内のすべてのページで利用できる永続的なセッションを使用します。persist: プレフィックスがない場合、ページはメモリ内セッションを使用します。

基本的に、悪夢を次のように初期化すると:

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

その後、セッションは「derp」の下で持続します。これは、認証されたルート内の機能をテストするときに役立ちます。(derp は重要ではなく、persist:に続くものであれば何でもかまいません)

セッションを持続させたくない場合は、persist:を使用しないでください。私はnopersistを使用していますが、これはpersistのプレフィックスが付いていない任意の文字列である可能性があります。

編集: show:falseセッションにとって重要ではありません。設定した場合、電子(悪夢が使用する)が何をしているかを示すだけですshow:trueが、この行は削除できます

于 2015-12-09T03:58:13.297 に答える