translate

Cypress で Form を操作した時に「Whoops, there is no test to run.」と出る時の対処法
2021年 4月 15日

Cypress いいですよね。オールインワンのE2Eテストフレームワークなのでテストを書くことだけに集中できます。超絶おすすめです。

さて、先日いつものように E2E テストを書いていた時に Cypress が落ちてしまいました。

スクリーンショット 2021-04-15 16.01.25

調査していくとどうやら Form を操作した時に落ちるみたいです。そこまではすぐに分かったのですが、全然原因が分かりませんでした。めちゃくちゃハマって悩んで、ようやく原因と対応が分かったので、メモを残しておきます。

Form に target="_top" などが設定されていると落ちる

原因はこれでした。issues も上がっていました。しかしまさか target が原因だとは思わず、なかなか絞ることができませんでした。

対応方法

こちらの対応方法はいろいろありますが、一番楽だなと思ったのは、submit する前に target を直接書き換えてしまう方法です。

cy.window().then((window) => {
  window.document.querySelector('form').setAttribute('target', '_self')
})
cy.get('form').submit()

このような感じで target の値を直接別のものに変えてから submit をする事で Cypress がクラッシュする事を防げます。