💬
Cypressでページが開けない(ステータスコード404)ことをテストする
小ネタです。
Cypressでページが開けないこと、つまりステータスコードが404になることをテストする方法です。
cy.request()を使う
普通はvisitを使いますが、visitを使っているとステータスコードをテストすることはできませんし、400以上のステータスコードではその場でテスト失敗扱いになるためうまくいきません。
そこでcy.request()
を使います。
cy.request({url: '/someNotFoundURL', failOnStatusCode: false}).its('status').should('equal', 404)
cy.request()
はレスポンスでステータスコードを返すので、アサートできます。
ポイントとしてはfailOnStatusCode
をfalse
に設定することです。これにより、200や301ではないステータスコードでもテストの実行が続きます。
カスタムコマンドにする
覚えにくい記法なのでカスタムコマンドにしましょう。
Cypress.Commands.add('visitAndCheckStatus', (path: string, status: number) => {
cy.request({url: path, failOnStatusCode: false}).its('status').should('eq', status)
})
declare global {
namespace Cypress {
interface Chainable<Subject> {
visitAndCheckStatus(path: string, status: number): Chainable<any>
}
}
}
これにより、visitAndCheckStatus
メソッドでテストができます。
cy.visitAndCheckStatus('/someNotFoundURL', 404)
以上です。
Discussion