Cypress не отправляет запросы сервера ожидаемой учетной записи

#node.js #cookies #mocha.js #ui-automation #cypress

#node.js #файлы cookie #mocha.js #пользовательский интерфейс-автоматизация #cypress

Вопрос:

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

Когда я выполняю некоторый автоматизированный вариант использования cypress на моем локальном компьютере для получения результатов поиска, он должен возвращать данные, но что-то не так в случаях, когда cypress обрабатывает данные для новых экранов.

Ниже приведены протестированные варианты использования: 1. переход к главному экрану 2. переключение на другую учетную запись 3. поиск допустимого порядка, существующего в базе данных

Фактический результат Cypress: сервер не вернул никаких данных, на самом деле я заметил, что запрос отправляется учетной записи по умолчанию, а не ожидаемой.

Фактический результат вне сеанса cypress: данные возвращаются нормально для ожидаемой учетной записи.

Код, включающий предварительные условия для обработки сеансовых файлов cookie для запоминания переключенной учетной записи для всех запросов (utils.auth_handler) —

 let server_auth_url = Cypress.env('server')   urls.server_auth;
cy.request('POST', server_auth_url, currentUser);
Cypress.Cookies.preserveOnce('session_id', 'remember_token');
  

Тестовый сценарий полного обращения:

 import * as loc from '../support/locators';
import * as urls from '../support/urls';
import * as utils from '../support/utils';
import { quick_login } from '../support/init.js';

describe('WebApp - Orders', function() {
    beforeEach(() => {
        utils.auth_handler();
    });

    before(() => {
        quick_login();
    });

    it('Orders - data loading time',function() {
        cy.visit(urls.expand_data_orders);
        cy.get(loc.switch_to_orders).click();
        cy.get(loc.graphs,{ timeout: 5000 }).should('be.visible');
        cy.get(loc.orders_table,{ timeout: 5000 }).should('be.visible');
        cy.get(loc.data_summary,{ timeout: 5000 }).should('be.visible');
    });

    it('Orders - Search data validation', function () {
        cy.get(loc.order_results_row).first().then(($id_value) => {
            // store the button's text
            let txt = $id_value.text();
            cy.log(txt);
            cy.get(loc.search_field).type(txt   '{enter}');
        })
    });
});
  

введите описание изображения здесь

Мой главный вопрос заключается в том, как справиться с этим вариантом использования при смене учетных записей и хочу использовать новую переключенную учетную запись по умолчанию для любого запроса сервера / Что не так с моим текущим кодом?

Спасибо.

Комментарии:

1. По умолчанию Cypress очищает сеанс после шага тестирования (после каждого it ). Использование Cypress.Cookies.preserveOnce('session_id', 'remember_token'); сохранит информацию о сеансе между тестами. Не уверен, что это может соответствовать вашим потребностям в переключении учетной записи.

2. @KondasamyJayaraman Спасибо за ваш комментарий, у вас есть какие-либо идеи, что может быть альтернативой для этого варианта использования вместо ‘cookies.preserveOnce’?

3. Поскольку вы хотите имитировать многопользовательские тесты, я бы посоветовал вам удалить упомянутую строку. Cypress должен автоматически обрабатывать новые пользовательские сеансы.