Cypress は、その自動化機能により、Web ブラウザ テストの分野で巨人としての地位を確立しています。しかし、多くのテスト ツールと同様に、特にテスト サイクルに予想よりも時間がかかる場合には、課題が生じます。
この包括的な Cypress チュートリアルでは、テスト スイートの実行時間を向上させるための標準および高度なアプローチを案内し、 Cypress と Launchable をシームレスに統合して最適な結果を得る方法を示します。
建物の基礎がその安定性にとって重要であるのと同様に、基本的な Cypress 最適化テクニックを理解して実装することは、テスト時間に大きな影響を与える可能性があります。開始方法は次のとおりです。
Cypress Dashboard のパワーを並列化に活用する: Cypress Dashboard を使用して、複数のマシン間でテストの実行を並列化します。これにより、テスト スイートの実行時間を大幅に短縮できます。
構成例:
// In your cypress.json configuration file { "projectId": "your-project-id", "record": true, "parallel": true, "group": "your-group-name" }
注: 複数のマシンまたはコンテナを同時に実行できるように CI 環境をセットアップしてください。
テスト シナリオを分割する:テストをより小さく、特定されたシナリオに分割して、複雑さを軽減し、速度を向上させます。テストが小規模であれば、デバッグやメンテナンスも容易になります。
API リクエストのモック: 「cy.intercept()」を使用して実際の API レスポンスをモックすることで、実際の API レスポンスの待ち時間を排除します。これにより、テストの実行が大幅に高速化されます。
例:
cy.intercept('GET', '/api/users', { fixture: 'users.json' });
ページの読み込み時間を最適化する:特にテスト時には、速度が非常に重要です。 Web アプリケーションのコンポーネントを最適化することで、Web アプリケーションが迅速に読み込まれるようにします。これにより、テストの実行が迅速化される可能性があります。
例:
// Opt to visit only necessary pages during tests cy.visit('/essential-page');
「cy.wait()」の制限された使用: cy.wait() を慎重に使用することで、不必要な遅延を回避し、テストの効率を向上させます。
例:
// Instead of: cy.wait(5000); // waits 5 seconds // Use: cy.get('element-selector', { timeout: 5000 }); // waits up to 5 seconds for the element
フックの賢明な使用法:フック内の反復タスクを減らすことは、テスト ランタイムに大きな変革をもたらす可能性があります。
ヘッドレス モードを採用する:ブラウザーでテストを視覚化せずにテストを実行すると、UI のレンダリングにリソースが消費されないため、速度が向上します。
例:
npx cypress run --headless
Cypress キャッシュの管理: Cypress キャッシュ コマンドを利用して、キャッシュされたアセットを適切に処理することで起動時間を最適化します。
例:
npx cypress cache clear npx cypress cache list
Cypress の優れた機能にもかかわらず、本当の魔法は、 Launchable の Predictive Test Selectionを組み込むときに起こります。
Launchable を使用すると、テストの問題をすばやく見つけて検証できます。時間を節約し、コストを削減し、すべてのテスト実行を確実に有意義なものにします。テストが実行されるたびに、変更内容とテスト結果が渡されます。
モデルを継続的にトレーニングするために起動可能。
モデルのトレーニング中に、システムは各ビルドにリンクされた変更を分析し、失敗したテストを特定します。変更されたファイルと、一般的に失敗が見られるテストとの間の接続を確立します。
このプロセスは、障害と対応するソース コードの変更との間の関連性を効果的にマッピングする、高度な頻度カウント アルゴリズムにたとえることができます。
最近のコード変更に基づいて最も重要なテストのみを実行し、待ち時間を短縮し、より迅速なリリースを可能にします。
Launchable CLI のセットアップ: Launchable CLI が CI パイプラインにセットアップされていることを確認します。
インテリジェントなテストの選択: Launchable のインテリジェンスは、過去のテスト結果とコードの変更から導き出されます。これを利用するには、次を実行します。
launchable record tests --name <BUILD NAME> cypress <PATH TO TEST RESULTS>
Cypress を効率的に利用する:加速されたテスト サイクルの中心には、標準および高度な Cypress テクニックの両方を深く理解して適用することが必要です。 Cypress ダッシュボードを介した並列化の利用から cy.wait() の賢明な採用まで、自由に使えるツールが数多くあります。
待機よりもモッキング:実際の API 応答には時間がかかる場合があります。 cy.intercept() などのモック手法を採用することで、応答をシミュレートし、テストをより迅速かつ一貫性のあるものにすることができます。
リソースの最適使用:高度な技術、特にヘッドレス モードでのテストの実行とキャッシュの管理により、テスト プロセスのリソース効率が可能な限り確保され、テスト サイクルが短縮されます。
ツールの組み合わせの力: Cypress は単独でも強力です。しかし、Launchable と統合すると、その機能がさらに高まります。 Launchable の予測テスト選択は、最も関連性の高いテストのみを実行し、開発パイプラインを変革し、より迅速なフィードバックとリリースを保証します。
合理化されたテスト パイプライン: Cypress と Launchable を組み合わせることで、個々のテスト サイクルが高速化されるだけでなく、テスト パイプライン全体が合理化されます。これにより、履歴データと最近のコード変更から情報を得た最も重要なテストが常に最前線に置かれ、フィードバック ループと開発プロセスが最適化されます。
変化への備え:開発とテストの状況は常に進化しているため、最新のツールとテクニックを常に備えておくことが重要です。 Launchable は、複雑で膨大なエラー ログを簡潔な概要に変換し、問題の核心を迅速に特定します。
Cypress と Launchable を活用することで、将来の要求に対してテスト プロセスを将来にわたって保証できます。