ブラウザベースのテストランナーおよびダッシュボードであるCypressは、最近、Cypress5.0リリースでテスト再試行のネイティブサポートを導入した。これにより、開発者は断続的なテストエラー発生を回避できる。その他、最近、Cypressは進化しており、ネットワーキングのスタブとシャドウDOMをサポートしている。
CypressのシニアデベロッパーエクスペリエンスエンジニアであるBen Hong氏が説明した。
エンドツーエンド(E2E)テスト実行の過程で、統合の依存関係が一時的にオフラインになったり、ランダムネットワーク障害になったり、競合状態になったりなどが原因で、テストが断続的に失敗することはかなり一般的です。ユーザが404エラーを受け取った場合にユーザにブラウザを更新することを期待するかのように、ランダムな停止によりテスト実行全体が失敗するのは無駄のように思えます。
Cypressチームはバージョン5への移行ガイドを提供する。そこには、テストの再試行を有効にするための情報、ホワイトリストCookieの名前の変更、テスト中のさまざまなホストのブロック、そして、ブロブ、Node.js、TypeScriptなどのその他の依存関係の更新が含まれる。
5.0リリース以降、Cypress 5.1は実験的なネットワークスタブサポートを導入し、Cypress 5.2ではシャドウDOMサポートを追加している。
Cypressは当初、ChromeおよびChromiumベースのブラウザでのみ利用可能であったが、Firefoxでもベータサポートで利用できる。
Cypressの創設者は、Seleniumのようなテストツールでの作業に不満を感じて、Cypressを作成した。Seleniumはコマンドをブラウザの外部でネットワーク経由でリモートで実行するが、CypressはWebアプリケーションと同じループでコマンドを実行する。その後、Cypressは、通信、同期、タスク実行を行うNode.jsプロセスによってサポートされる。
Cypressは、エンドツーエンド、統合、ユニットテストをサポートしている。Cypressはタイムトラベルテストを提供し、テストの実行時にスナップショットをキャプチャする。Cypressは、ブラウザベースの開発者ツールを使用した簡単なデバッグ機能も推奨している。Cypressの他の機能には、自動待機、スパイ、スタブ、クロック、ネットワークトラフィック制御がある。
Cypressは、MITライセンスの下で利用可能なオープンソースソフトウェアである。コントリビューションとフィードバックはTypeScript GitHubプロジェクトを通じて奨励される。Cypressのコントリビューションガイドラインと行動規範に従う必要がある。Cypressは、テストランナー以外にも、オプションで商用テストダッシュボードサービスを提供する。