Элемент Assert существует после завершения всех запросов XHR - PullRequest
0 голосов
/ 25 марта 2020

Я захожу на страницу, которая асинхронно извлекает данные (несколько запросов XHR), а затем проверяет, видим ли / присутствует ли на странице определенный элемент DOM.

До сих пор мне удавалось только получить страница и данные извлекаются с использованием cy.wait () либо с произвольным временем, либо с помощью псевдонима фактического запроса, и с использованием синтаксиса, подобного обещанию, чтобы убедиться, что мой cy.get() выполнен после Ответ XHR завершен. enter image description here

Вот что не работает:

 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');
    });
  });
});

1 Ответ

0 голосов
/ 25 марта 2020

Я вижу, что у вас есть перезагрузки браузера (beforeEach), которые потенциально могут уничтожить шпиона маршрута, но не уверены, почему cy.wait().then будет работать. Я бы попробовал переключиться с before на beforeEach, однако, создавать вещи один раз всегда сложнее, чем позволить их создавать перед каждым тестом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...