💬

Cypressでページが開けない(ステータスコード404)ことをテストする

2022/01/17に公開

小ネタです。

Cypressでページが開けないこと、つまりステータスコードが404になることをテストする方法です。

cy.request()を使う

普通はvisitを使いますが、visitを使っているとステータスコードをテストすることはできませんし、400以上のステータスコードではその場でテスト失敗扱いになるためうまくいきません。

そこでcy.request()を使います。

cy.request({url: '/someNotFoundURL', failOnStatusCode: false}).its('status').should('equal', 404)

cy.request()はレスポンスでステータスコードを返すので、アサートできます。

https://docs.cypress.io/api/commands/request#Yields

ポイントとしてはfailOnStatusCodefalseに設定することです。これにより、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