Cypress очищает все куки и локальное хранилище перед каждым тестом.Это говорит о том, что ваша проблема одна из следующих:
a) Вы выполняете несколько логических тестов в рамках одного теста, или
b) Тестируемая система использует другой механизм для сохранения имени входа
Если вы не выполняете a) , то вам нужно выяснить, что хранится (и где), когда пользователь входит в систему. Как только вы это знаете, вы можете написать механизм дляочистите его.
Дополнительные заметки Cypress
Одна из основных концепций Cypress заключается в том, что вам следует избегать условного тестирования.Например, в других средах обычно выполняется эквивалент ...
// Not real code
if (getelement(x).exists) {
}
Но это не Cypress-способ.
Правильный способ обработки вашего конкретного случая - выбратьодин из следующих вариантов:
Перейдите по URL-адресу, который всегда будет позволять войти в ваш тест, например http://www.example.com/login/
- где даже зарегистрированные пользователи могут отправить форму входа в форму
Используйте параметр запроса, чтобы сообщить серверу, что он должен очистить любое пользовательское состояние (если оно не хранится в одном из ожидаемых мест - представьте сервер, который привязывает IP-адрес к некоторому состояниюи т. д.)
Встраивать данные в DOM таким образом, чтобы Cypress всегда находил их, например: <body data-logged-in="true">
.Затем вы можете прочитать этот атрибут в своем тесте, поскольку он всегда там ...
Получение атрибута:
cy.get('body').should('have.attr', 'data-logged-in').then((loggedIn) => {
// Use loggedIn here...
});