Я захожу на страницу, которая асинхронно извлекает данные (несколько запросов XHR), а затем проверяет, видим ли / присутствует ли на странице определенный элемент DOM.
До сих пор мне удавалось только получить страница и данные извлекаются с использованием cy.wait () либо с произвольным временем, либо с помощью псевдонима фактического запроса, и с использованием синтаксиса, подобного обещанию, чтобы убедиться, что мой cy.get()
выполнен после Ответ XHR завершен.
Вот что не работает:
before(() => {
cy.login();
cy.server();
cy.route('/v0/real-properties/*').as('getRealPropertyDetails');
cy.visit('/real-properties/1/real-property-units-table');
});
beforeEach(() => {
Cypress.Cookies.preserveOnce('platform_session');
});
after(() => {
cy.clearCookies();
});
context('when viewport is below 1367', () => {
it('should be closed by default', () => {
cy.wait('@getRealPropertyDetails'); // the documentation says this is the way to go
sSizes.forEach((size) => {
cy.viewport(size[0], size[1]);
cy.get('.v-navigation-drawer--open.real-property-details-sidebar').should('not.exist');
});
});
Добавление cy.wait(1000);
в хуках before()
или beforeEach()
также работает, но это не совсем приемлемое решение.
Что работает, но не уверен, если это способ сделать это (я должен был бы добавить это для каждой страницы, было бы довольно раздражающим):
it('should be closed by default', () => {
cy.wait('@getRealPropertyDetails').then(() => {
sSizes.forEach((size) => {
cy.viewport(size[0], size[1]);
cy.get('.real-property-details-sidebar').should('not.be.visible');
});
});
});