Cypress - Как сделать негативные взгляды с RegEx? - PullRequest
1 голос
/ 10 февраля 2020

Я пытаюсь проверить фильтр в Cypress, и как только фильтр будет удален, результат поиска должен снова содержать значения, превышающие фильтрованное значение.

Я пытаюсь сделать что-то вроде этого:

cy.get('.outputTableArea').within(() => {
    cy.get("td").then(($td) => {
        expect($td).to.contain(/^(?!regex)/);
    });
});

К сожалению, негативный прогноз не работает с (?!...) здесь.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2020

Вы используете chai, содержит совпадение (псевдоним include) для элемента DOM, но API ожидает строку и не берет иглу RegExp, а другую строку ( такие же как у DOM String.prototype.includes).

Вы можете использовать match :

expect($td.text()).to.match(/^(?!regex)/);

или еще лучше, Cypress '.contains() или .should('match') (внизу используется чай):

describe('test', () => {
  it('test', () => {
    cy.document().then( doc => {
      doc.body.innerHTML = `
        <div class="test">Hello world!</div>
        <div class="test">Hello Steve!</div>
      `;
    });

    // using cy.contains
    // -------------------------------------------------------------------------
    cy.get('.test:first').contains(/hello(?! world)/i); // will fail
    cy.get('.test:last').contains(/hello(?! world)/i); // will succeed

    // using chai matcher on yielded text
    // -------------------------------------------------------------------------
    cy.get('.test:first').invoke('text').should('match', /hello(?! world)/i); // will fail
    cy.get('.test:last').invoke('text').should('match', /hello(?! world)/i); // will succeed

    // using cy.contains in a callback
    // -------------------------------------------------------------------------
    cy.get('.test:first').then($el => {
      cy.wrap($el).contains(/hello(?! world)/i); // will fail
    });
    cy.get('.test:last').then($el => {
      cy.wrap($el).contains(/hello(?! world)/i); // will suceed
    });

  });
});
0 голосов
/ 10 февраля 2020

Как насчет проверки длины вашего списка, чтобы убедиться, что все результаты возвращаются при удалении фильтра? Например, где «10» - это количество элементов в полном списке:

cy.get('.outputTableArea td').should('have.length', 10);

Если вам нужно проверить, что в содержимом таблицы отсутствует указанное значение c, вы можете попробовать:

cy.get('.outputTableArea').contains(/^regex/).should(not.exist);

Или, возможно, сузить его до тегов:

cy.get('.outputTableArea td').contains(/^regex/).should(not.exist);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...