Open4
Cypress小ネタ
urlに日本語が入ってることを確かめたいときがある。
でもCypressのcy.url()
メソッドをそのまま使うとエラーになってしまうことがある。
// エラーになるかも?
cy.url().contains('こんにちは');
そういうときは
// urlをデコードする
cy.url({ decode: true }).contains('こんにちは');
とかやるとうまくできる
ちなみにcy.url()
はcy.location('href')
のaliasらしい
support/commands.ts
内に新しいコマンドを追加しようとするとCypressのバージョンが新しめだと型関係で怒られることがある
support/commnads.ts
// 型 '"dataCy"' の引数を型 'keyof Chainable<any>' のパラメーターに割り当てることはできません。
Cypress.Commands.add('dataCy', (selector: string) => {
return cy.get(`[data-cy=${selector}]`);
});
この場合は型宣言ファイルsupport/index.d.ts
を追加するといい
support/index.d.ts
// 名前空間Cypressのinterface Chainable<Subject = any>を拡張する
declare namespace Cypress {
interface Chainable<Subject = any> {
dataCy: (selector: string) => Chainable<JQuery<HTMLElement>>;
}
}
Cypressのcommands.ts
とfunctions.ts
の使い分けについて
- chainさせたいなら
commands.ts
- コマンドをまとめる目的なら
functions.ts
- それ以外(あまり思いつかないけど)大体
functions.ts