С традиционной точки зрения, блок beforeEach
в support / index.js должен иметь только код, который применяется к всем спецификациям тестирования. Если логика относится только к одним тестам, а не к другим, ее не следует помещать в support / index.js .
Попытка переопределить, как Cypress намеревается использовать support / index.js работает против фреймворка, а не с ним.
Впоследствии альтернативой дублированию этой логики beforeEach
во всех тестах, в которых она требуется, будет создание Пользовательской команды , например:
Cypress.Commands.add('login', () => {
cy.request('POST', 'https://exampleURL.com', {
email: 'email',
password: 'password'
}).then((response) => {
cy.setCookie('accessToken', response.body.AccessToken);
});
cy.setCookie('email', 'email');
cy.setCookie('environment', '3');
cy.setCookie('name', 'name');
})
... а затем, в рамках спецификаций, требующих этой функциональности, вы можете получить более простой блок beforeEach
, например:
beforeEach(function() {
cy.login();
});
Однако, учитывая, что ваш тест access.spec.js связан с отсутствующим accessToken
, вы не будете использовать блок beforeEach
в этом конкретном тесте. Вместо этого скопируйте код входа в этот тест и используйте cy.route
вместо cy.request
(что соответствует вашей фактической конечной точке), чтобы вы могли заглушить ответ, который не возвращает accessToken
.