Я новичок в кипарисе. Мой сценарий выглядит следующим образом:
1) Go на тестовую страницу.
2) Запустите сценарий инициализации, который взаимодействует с сервером и создает сеанс.
3) Go бэк-офис
4) Убедитесь, что новый сеанс отображается в таблице
Идентификатор сеанса получен с тестовой страницы. Когда я инициирую сеанс, я получаю sessionId в качестве ответа (это часть моего теста).
Проблема в том, что когда я go отправляю в бэк-офис (используя cy.visit
), весь Сеанс Cypress сбрасывается, и я теряю sessionId.
Я пытался использовать глобальные переменные и псевдонимы, но безрезультатно.
Есть ли способ передать переменную sessionId в тест backoffice?
Вот мой код:
describe('Session init', () => {
let requestBody;
let responseBody;
let sessionId;
describe('Init the session in the client', () => {
before(() => {
cy.server();
cy.route({
method: 'POST',
url: initUrl,
onRequest: (xhr) => {
requestBody = xhr.request.body;
},
onResponse: (xhr) => {
responseBody = xhr.response.body;
}
}).as('init');
visitTestPage(); // uses cy.visit to go to the test page - also initiates a new session
});
it('should send POST init request', () => {
cy.wait('@init').then(() => {
expect(requestBody).to.contain.keys(
keysToExpectInRequest
);
});
});
it('should receive an init response', () => {
cy.wrap(responseBody.session).as('session');
sessionId = responseBody.session;
expect(responseBody).to.contain.keys(
keysToExpectInResponse
);
});
});
describe('Verify a session was created in backoffice', () => {
before(() => {
backofficeLogin(); // using cy.server and cy.visit, using premade jwt to avoid UI login
});
it('should see a live session with the id from the init', () => {
cy.get('.session-row').then((sessions) => {
expect(session[0].id).toEqual(sessionId); // expect the latest session created to be with the id of the session created in the test page
});
});
});
});