Как сохранить локальное хранилище реагировать кипарис - PullRequest
0 голосов
/ 24 января 2020

Привет, извините за мой плохой Энгли sh.

Я делаю тест в своем проекте с использованием кипариса. Я обнаружил эту проблему / проблему после

it("call login",() => ...)

Cypress очищает мое локальное хранилище, удаляя мою аутентификацию, в результате чего следующий запрос возвращает мой аутентификацию как неопределенную, так как она была удалена в локальном хранилище

Как сохранить локальное хранилище после вызова вышеуказанного логина?

Ответы [ 3 ]

0 голосов
/ 24 января 2020

Это «особенность» Cypress, помогающая предотвратить влияние тестов на другие тесты, оставляя данные рядом. Идея состоит в том, чтобы каждый тест выполнялся в среде 'fre sh', свободной от остатков чего-либо еще.

В вашем кипарисовом коде внутри любого блока it() сохраняются файлы cookie и элементы локального хранилища. Таким образом, один из подходов состоит в том, чтобы поместить все в один (возможно, большой) it() блок.

Другой подход - скопировать значения localalstorage в переменную, а затем восстановить значения в каждом блоке it(). Вы также можете сделать это в разделе beforeEach.

Надеюсь, это поможет

0 голосов
/ 10 апреля 2020

Вы можете использовать плагин cypress-localstorage-commands для сохранения localStorage между тестами.

Вы можете создать команду для входа в систему с указанным c пользователем:

import "cypress-localstorage-commands";

Cypress.Commands.add('loginAs', (UserEmail, UserPwd) => {
  cy.request({
    method: 'POST',
    url: "/login",
    body: {
      user: {
        email: UserEmail,
        password: UserPwd,
      }
    }
  })
    .its('body')
    .then((body) => {
      cy.setLocalStorage("accessToken", body.accessToken);
      cy.setLocalStorage("refreshToken", body.refreshToken);
    });
});

А затем используйте эту команду для входа в систему до начала всех тестов и плагин cypress-localstorage-commands для сохранения localStorage между тестами:

describe("When user is authenticated", () => {
  before(() => {
    cy.loginAs("foo@user.com", "foo-password");
  });

  beforeEach(() => {
    cy.restoreLocalStorage();
  });

  afterEach(() => {
    cy.saveLocalStorage();
  });

  it("should be logged in", () => ...);
});
0 голосов
/ 24 января 2020

Вы можете использовать метод setItem

storage.setItem(keyName, keyValue);

Метод setItem() интерфейса Storage, когда ему передано имя и значение ключа, добавит этот ключ к указанному объекту Storage или обновит значение этого ключа, если оно уже существует.

onSave() => {
localStorage.setItem('data', JSON.stringify(state))
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...