Кипарис ждать xhr логи - PullRequest
0 голосов
/ 07 мая 2019

Я хочу дождаться регистрации этого URL: / hdlasrlogging

Это регистрирует каждое событие, происходящее в фоновом режиме, и сохраняет сообщение о событии в теле запроса. Таким образом, каждое событие имеет разные сообщения.

Например, вот так:

enter image description here

Я пытаюсь выполнить это с помощью этой функции:

Cypress.Commands.add('waitAtLoggingMsg', (logMsg)=>{

    return(
        cy.wait('@logging').then(data=>{
            let msg = data.requestBody.msg;
            expect(msg).to.include(logMsg);
        })
    );

});

В этой части теста

            cy.url().should('include', text.links.segmentmeasurements);

            cy.waitAtLoggingMsg('FETCH_SEGMEAS_LIST_OVERVIEW_SUCCESS');
            cy.get('[data-testid = "TableBody"]').should('not.be.empty');

Следует дождаться загрузки всех записей из БД. В настоящее время он просто ждет первого входа, но тот, который я ищу, уже позади.

enter image description here


Есть ли у вас какие-либо предложения?

1 Ответ

0 голосов
/ 07 мая 2019

Проблема, с которой вы здесь сталкиваетесь, заключается в том, что getByTestId не повторяет попытку, если не получится подтверждение.Он пытается только один раз, и в первый раз данные еще не были обработаны.

Известно, что команды из cypress-testing-library имеют этот недостаток.

Повторные команды кипариса по умолчанию повторяются, так что если выЕсли вы выберете .get(), у вас не возникнет этой проблемы.

Если вы хотите придерживаться cypress-testing-library, есть обходной путь с использованием .should(fn), но в вашем случае это сложно, потому что .waitAtLoggingMsg()тоже не повторяется и рекурсивен для загрузки.Это ставит вас в очень неловкое положение, чтобы использовать обходной путь.

Лучший способ, который я вижу без контекста, - это отказаться от .waitAtLoggingMsg() в пользу чего-то вроде:

cy.url()
    .should('include', text.links.segmentmeasurements)
    .should(() => {
        cy.getByTestId('TableBody')
            .should('not.be.empty');
    });

Это будетповторите грубую команду getByTestId().

...