web-dev-qa-db-ja.com

サイプレス-大文字と小文字を区別しない方法でcontains()を機能させる方法

HTMLのレベルを活用していないプロジェクトがあり、HTMLの値の大文字と小文字が一致していません。

Contains()関数の引数として小文字の文字列のみを使用する場合にサイプレスにテキストを一致させる方法はありますか?

10
Jar

contains()は正規表現を取ることができ、iフラグを使用して大文字と小文字を区別しないマッチングを指定できます。

他の回答はすでにこれについて言及していますが、これはそれを使用する最も簡単な方法かもしれません:

cy.get('.some-selector').contains(/match cAse-InSENsitiVE/i);
1
mfit

大文字と小文字を区別しない正規表現をcontainsコマンドに追加できますが、正規表現を使用する場合は、特別な正規表現文字をエスケープするように注意する必要があります。
これを参照してください Javascript regexで使用するためのエスケープ文字列

const escapeRegExp = (string) => {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}

const expected = 'mYtEXTtO*tEST?';
const regex = new RegExp(escapeRegExp(expected), 'i');

cy.contains(regex);
cy.contains('MySelector', regex);

あなたは正規表現を使うことができます。

cy.get("#whatever").its("something").should("match", "[your regex here]")

0
Brendan

サイプレスには lodash が含まれています。したがって、これは Cypressにcy.contains()のこの機能が含まれている になるまで、大文字と小文字を区別しないテキストマッチングの現在の回避策です

cy.get('p.heading').then( $headings => {
  let texts = $headings.map( (_, el) => (Cypress._.toUpper(el.textContent)));

  expect(texts.get()).to.include('INCONSISTENT CAPITALIZED TITLE 1');

  //If you have more to match
  expect(texts.get()).to.include('INCONSISTENT CAPITALIZED TITLE 2');
});
0
wicky