Проверьте, существует ли запись на странице - PullRequest
0 голосов
/ 03 марта 2019

У меня есть страница с несколькими панелями результатов, каждая панель имеет свою собственную кнопку удаления, как только пользователь нажимает кнопку удаления, появляется модальное подтверждение, спрашивающее, хочет ли он удалить эту запись.

Я написалCypress-тест для проверки процесса удаления, тест работает должным образом, модальное окно появляется, если пользователь подтверждает удаление, панель удаляется.

В тесте я проверяю, что правильная панель была удаленапроверяя, не существует ли его id на странице.

const deleteResult = action => {
  cy.get('div[data-test="Results"]').should('be.visible');
  let contactID;
  cy.get('div[data-test="Results"]')
    .first()
    .within(() => {
      cy.get('p[data-test="Contact ID"]').then($match => {
        contactID= $match.html();
        cy.get('button[data-test="Delete Contact"]')
          .click()
          .get('div[data-test="Delete Record Modal"]')
          .should('be.visible')
          .get(`button[data-test="${action}"]`)
          .click();
      });
    });
  cy.get('p[data-test="Contact ID"]').each($match => {
    cy.wait(2000);
    if (action === 'Confirm Deletion') {
      cy.wrap($match)
        .invoke('text')
        .should('not.eq', contactID);
    } else {
      cy.wrap($match)
        .invoke('text')
        .should('eq', contactID);
    });
};

Теперь я пытаюсь написать тест другого варианта - пользователя, который отменяет удаление, мне нужно проверить,данный contactID существует на странице, как мне этого добиться?

Приведенный выше код неверен, ожидается, что на панели all будет задан contactID.

Редактировать:

const deleteResult = action => {
  cy.get('div[data-test="Results"]').should('be.visible');
  let contactID;
  cy.get('div[data-test="Results"]')
    .first()
    .within(() => {
      cy.get('p[data-test="Contact ID"]').then($match => {
        contactID= $match.text();
        cy.get('button[data-test="Delete Contact"]')
          .click()
          .get('div[data-test="Delete Record Modal"]')
          .should('be.visible')
          .get(`button[data-test="${action}"]`)
          .click();
      });
    });
  cy.wait(2000);
  const els = cy.get('p[data-test="Contact ID"]');
  if (action === 'Confirm Deletion') {
    els.each($match => {
      cy.wrap($match)
        .invoke('text')
        .should('not.eq', contactID); //contactID is the actual ids
    });
  } else {
    els.should('contain', contactID); //contactID is undefined
  }
};

1 Ответ

0 голосов
/ 03 марта 2019

Вы можете переместить if перед вашим cy.get, чтобы ваша логика больше не была вложена в .each

const els = cy.get(...)
if (something) {
  cy.then(() => els.should('not.contain', contactID))
} else {
  els.each(...)
}

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