очистить кеш в Nightmare.js (Электрон)

Я использую кошмар 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', '[email protected]')
      .type('.password-field', 'password')
      .click('.login button')
      .wait(1000)

  });
})

Я запускаю тест, используя: mocha

тест проходит нормально и закрывается. Однако, когда я запускаю снова, пользователь запускается как вошедший в систему. Можно ли как-то очистить кеш или локальное хранилище в кошмаре?

У Electron есть способ очистить информацию о сеансе через session.clearCache (http://electron.atom.io/docs/v0.32.0/api/session/), но я не знаю, как получить доступ к объекту сеанса из кошмара.


person Saad    schedule 26.11.2015    source источник
comment
Вы разобрались? Просто интересуюсь. Спасибо.   -  person Felix    schedule 09.12.2015
comment
@FelixG ответил ниже   -  person Saad    schedule 09.12.2015


Ответы (1)


Хорошо разобрались, мы можем использовать свойство 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», это может быть полезно, когда вы тестируете функции внутри аутентифицированных маршрутов. (дерп не имеет значения, может быть что угодно после persist:)

если вы не хотите, чтобы сеанс сохранялся, не используйте persist:. Я использую nopersist, но это может быть любая строка без префикса persist:.

EDIT: show:false не имеет значения для сеанса, он просто показывает, что делает электрон (который использует кошмар), если вы установите show:true, но эту строку можно удалить.

person Saad    schedule 09.12.2015
comment
Кажется, имя свойства на самом деле webPreferences, а не web-preferences - person Maksim Luzik; 19.02.2016
comment
зависит от версии кошмара, возможно, они обновили его для более новой версии. - person Saad; 01.03.2016
comment
Максим привет5! веб-настройки это - person Dan Ochiana; 11.07.2016
comment
@Saad обнови свой ответ. Правильное свойство теперь webPreferences. - person BugHunterUK; 11.09.2016