RSS惑星Python フォロー Bob Belderbos: Playwrightで全てのRustエクササイズをエンドツーエンドテストする Rustプラットフォームには多数のエクササイズがあり、それぞれユーザーはエディタをロードし、コードを記述し、Rustバックエンド経由で検証する必要があります。このプロセスでは、アップデートが既存の機能を壊さないことを保証するために、エンドツーエンドテストが必要です。手動テストは非効率的であり、ログインからフィードバックの受信までの完全なユーザーサイクルをカバーしません。DjangoアプリとRustバリデーターには単体テストが存在しますが、エクササイズの統合された体験をテストするものではありません。Playwrightはpytestと組み合わせることで、このエンドツーエンドテストのための簡潔なソリューションを提供します。単一のPythonテスト関数は、データベースからすべての公開エクササイズとそのソリューションを取得してパラメータ化されます。各パラメータ化されたテストは、エクササイズに移動し、正しいソリューションをエディタに注入し、提出を検証します。テストは、受信したフィードバックが正常な完了を示していることをアサートします。pytestのセッションスコープフィクスチャは、ブラウザの起動とログインをすべてのテストで一度だけ実行することで、パフォーマンスを最適化するために利用されます。Playwrightテストの重要な側面には、要素のタイミングの処理が含まれます。特にCodeMirrorエディタでは、要素の可視性とJavaScriptインスタンスの初期化のために明示的な待機を使用します。テストユーザーを作成する際にDjangoの非同期コンテキストトラップを回避するために、Playwrightフィクスチャの前に実行される別のフィクスチャでdjango_db_blockerを活用する回避策が実装されました。エンドツーエンドテストは、ライブデータベースと実際のRustバリデーターに対して実行されるように設計されており、現実的な統合テストを保証します。これらのテストは、主要なプッシュの前にローカルで実行されますが、CI環境では主に高速な単体テストが実行されます。このアプローチは、新しいテストコードを必要とせずに新しく追加されたエクササイズを自動的にテストし、フロントエンドの変更はすべてこの統合された回帰スイートに対して検証されます。Playwrightは、そのモダンで人間工学に基づいたインターフェースによりSeleniumよりも好まれており、要素のタイミングは管理可能な課題です。 Bob Belderbos: End-to-End Testing Every Rust Exercise with Playwright belderbos.dev
django_db_blockerを活用する回避策が実装されました。エンドツーエンドテストは、ライブデータベースと実際のRustバリデーターに対して実行されるように設計されており、現実的な統合テストを保証します。これらのテストは、主要なプッシュの前にローカルで実行されますが、CI環境では主に高速な単体テストが実行されます。このアプローチは、新しいテストコードを必要とせずに新しく追加されたエクササイズを自動的にテストし、フロントエンドの変更はすべてこの統合された回帰スイートに対して検証されます。Playwrightは、そのモダンで人間工学に基づいたインターフェースによりSeleniumよりも好まれており、要素のタイミングは管理可能な課題です。