Panther ドキュメント
Symfony Panther、Chrome、PHPUnit 9.6 を使った、 pieceofcake2/cakephp アプリケーションのための End-to-End テストです。 Symfony のアプリケーションと同じ方法でセットアップします。
概要
Panther は、Symfony の End-to-End テスト用の ライブラリです。その PantherTestCase は、PHP のビルトイン Web サーバーでアプリケーションを起動し、 WebDriver プロトコルを通して本物の Chrome (または Firefox) で操作します。このパッケージは、それと同じことを CakePHP 2 アプリケーションで行います。
| Panther | このパッケージ |
|---|---|
Symfony\Component\Panther\PantherTestCase | PieceOfCake2\Panther\TestSuite\PantherTestCase。Panther の PantherTestCaseTrait を使う CakeTestCase |
Symfony\Component\Panther\ServerExtension | PieceOfCake2\Panther\ServerExtension。PantherTestCase のための同じ拡張 |
WebTestAssertionsTrait のアサーション | PieceOfCake2\Panther\TestSuite\WebTestAssertionsTrait。Symfony の FrameworkBundle なしで使える同じアサーション |
PANTHER_WEB_SERVER_DIR のデフォルトは public/ | デフォルトは webroot/ (または app/webroot/) |
PANTHER_WEB_SERVER_ROUTER のデフォルトはなし | デフォルトは CakePHP のルータースクリプト |
phpunit.xml.dist の APP_ENV=test で、テストと Web サーバーが .env.test を読み込む | 同じ。pieceofcake2/app の config/.env.test を読み込む。テストはデフォルトで APP_ENV=test で動く |
それ以外はすべて Panther そのものです。Client (request()、clickLink()、submitForm()、waitFor()、 takeScreenshot() など)、createPantherClient() とそのオプション、そして PANTHER_* 環境変数です。 Symfony のドキュメント がそのまま当てはまります。
End-to-End テストは、ControllerTestCase や IntegrationTestTrait を使ったコントローラーのテストより 遅くなります。JavaScript、レイアウト、複数のページにまたがる操作の流れなど、ブラウザーが必要なものに 使ってください。
動作要件
- PHP 8.0 以降 (PHP 8.0 では Panther 2.1、PHP 8.1 以降では Panther 2.4)
- pieceofcake2/cakephp 2.12 以降
- PHPUnit 9.6
- Google Chrome または Chromium と、同じメジャーバージョンの chromedriver
インストール
composer require --dev pieceofcake2/panther dbrekelmans/bdi
vendor/bin/bdi detect driversvendor/bin/bdi detect drivers は、お使いの Chrome に合った chromedriver を drivers/ にダウンロード します。Panther は chromedriver を PATH から探し、次に drivers/ と vendor/bin/ から探すので、 パッケージマネージャーでインストールした chromedriver (brew install chromedriver、 apt-get install chromium-chromedriver) も使えます。/drivers/ を .gitignore に追加してください。
クイックスタート
phpunit.xml.distで拡張を登録します (設定)。xml<extensions> <extension class="PieceOfCake2\Panther\ServerExtension"/> </extensions>config/.env.testでDATABASE_URLをテスト用データベースに設定します。テストと Web サーバーは、 テストのデフォルトのAPP_ENV=testでこのファイルを読み込みます (テスト用データベース)。tests/TestCase/EndToEnd/に、PieceOfCake2\Panther\TestSuite\PantherTestCaseを継承するテストを 書きます (テストを書く)。テストを実行します。
bashvendor/bin/phpunit # the App suite only (defaultTestSuite) vendor/bin/phpunit --testsuite EndToEnd # the End-to-End tests vendor/bin/phpunit --testsuite App,EndToEnd # everythingSymfony のアプリケーションと同じように
vendor/bin/phpunitですべてを実行するには、defaultTestSuite="App"を削除してください。
pieceofcake2/app には、すでにこの設定が含まれています。
由来
このパッケージは pieceofcake2 が作成し、メンテナンスしています。 他のプロジェクトのフォークではなく、他のプロジェクトをもとにしたものでもありません。 Composer の依存パッケージとして Symfony Panther の上に構築されており、 pieceofcake2/e2e-test を置き換えるものです。
ライセンス
MIT ライセンスです。LICENSE をご覧ください。
