-
-
Notifications
You must be signed in to change notification settings - Fork 7
Docker で Laravel Dusk を利用する方法
docker-compose.yml には E2E テスト用の dusk サービス(Selenium Standalone Chrome)が含まれています。
本番開発用の webapp サービスとは分離されており、通常の docker compose up では起動しないよう profiles で制御しています。
# Dusk プロファイルを有効にして起動
docker compose --profile dusk up -d dusk
# webapp と合わせて起動したい場合
docker compose --profile dusk up -d webapp dusk
webapp コンテナには既定で DUSK_DRIVER_URL=http://dusk:4444/wd/hub が設定されているため、Dusk テストを走らせる際は上記コマンドで Selenium を起動しておけばそのまま接続できます。
docker compose --profile dusk stop dusk
または本体ごと停止する場合は docker compose down を実行してください。
- VNC クライアントで接続する場合:
localhost:${DUSK_VNC_PORT:-5900}を指定します(パスワードなし)。 - ブラウザから確認したい場合:
http://localhost:${DUSK_NOVNC_PORT:-7900}にアクセスすると noVNC 画面でブラウザ操作をライブ観察できます。
docker-compose.ymlでは各ポート番号を環境変数で上書き可能です。必要に応じて.envやdocker compose実行時に変更してください。
-
なぜデフォルトで起動しないのか?
Selenium イメージの取得やヘルスチェックに失敗すると webapp の起動まで阻害してしまうためです。必要なときだけ--profile duskを指定することで、通常の開発フローへの影響を避けています。 -
任意のブラウザ設定を追加したい
docker-compose.override.ymlを作成し、duskサービスに追加の環境変数やボリュームを上書きしてください。
- Selenium を起動
docker compose --profile dusk up -d dusk - Dusk 用の環境変数を準備
.env.dusk.localを作成し、必要なDUSK_*設定を記述します(無ければ.env.duskを利用)。 - Dusk 用 Seeder の準備
.env.dusk.localにDUSK_AUTO_MIGRATE=trueと
DUSK_SEEDERS="Database\\Seeders\\DatabaseSeeder,Database\\Seeders\\DuskPagesTableSeeder"を設定します。
これにより Dusk 実行前にmigrate:freshとページシーダーが自動で適用され、実行順依存を解消できます。 - 目的のテストクラスを実行
php artisan dusk --filter=FormsPluginTest
(--filter=にはクラス名やメソッド名のプレフィックスを指定できます。PHPUnit を直接使う場合はvendor/bin/phpunit -c phpunit.dusk.xml --filter=FormsPluginTestでも同様に実行可能です。)
-
画面を映したままデバッグしたい場合
.env.dusk.localのDUSK_HEADLESS=falseを設定し、Selenium コンテナの noVNC (http://localhost:${DUSK_NOVNC_PORT:-7900}) へアクセスしてください。
.env.example には Dusk 実行時に参照される設定値(コメントアウト済み)がまとまっています。
Laravel Dusk は php artisan dusk 実行時に、現在の APP_ENV(例: local)を用いて .env.dusk.{APP_ENV} を探し、見つかった場合はその内容を .env として読み込みます。したがってローカル開発では .env.dusk.local を用意すると、本番・開発用設定を汚さずに Dusk 専用の値を切り分けられます。該当するファイルが無ければフォールバックとして .env.dusk が利用されます。Docker で Selenium を使う場合は必要に応じて .env か .env.dusk.{APP_ENV} にコピーして有効化してください。
| 変数名 | 役割 | 既定値/補足 |
|---|---|---|
DUSK_DRIVER |
使用する WebDriver 名。Selenium コンテナに接続する場合は selenium を指定します。 |
指定なし(ChromeDriver 直接接続時は空のままで問題ありません) |
DUSK_DRIVER_URL |
WebDriver の接続 URL。docker compose --profile dusk で起動した Selenium に合わせて http://dusk:4444/wd/hub を指定します。 |
未設定時は http://localhost:9515(ローカル ChromeDriver) |
DUSK_HEADLESS |
true でヘッドレス実行。UI を見ながらデバッグしたい場合は false にします。 |
true |
DUSK_AUTO_MIGRATE |
true にすると Dusk の初回起動前に php artisan migrate:fresh --force を実行します。テスト専用 DB を初期化したい場合に有効化してください。 |
false |
DUSK_SEEDERS |
DUSK_AUTO_MIGRATE と併用。カンマ区切りで Seeder クラスを指定すると migrate:fresh 後に順番に実行されます。例: Database\\Seeders\\DatabaseSeeder,Database\\Seeders\\DuskPagesTableSeeder
|
空文字 |
DUSK_NO_MANUAL_ALL |
true でマニュアル生成をスキップ。スクリーンショットのみ取得したい場合に使用します。 |
未設定 |
DUSK_NO_API_TEST_ALL |
true で Dusk 実行時に API テストを除外します。 |
未設定 |
- home
- Overview
- Install
- Install (インストール)(Linux等へのインストール:root権限ある場合)
-
Install-sakura(さくらのレンタルサーバ)
- Install-sakura-root(ドキュメントルート版)
- Install-Xserver(XServer)
- Install-lolipop(ロリポップ-ハイスピードプラン)
- Install-ColorfulBox(カラフルボックス)
- install-CentOS7+PHP7
- Install-XAMPP(Windows+XAMPP)
- install-Docker
- Install‐WSL
- Update
- Plans
- Data
- File Upload
- Design
- Theme(テーマ)
- Font-Icon(アイコン)
- Button(ボタン)
- Display of input error(入力エラーの表示)
- Multi Language
- Policies
- Plugin
- Basic function(基本の関数)
- Opac(蔵書管理)
- OpeningCalendar(開館カレンダー)
- Template(テンプレート)
- Cabinet(キャビネット)
- Whatsnew(新着)
- Search(サイト内検索)
- Approval(承認機能)
- Holidays(祝日管理)
- Menu(メニュー)
-
OriginalPlugin(オリジナル・プラグイン開発)
- OriginalPluginFiles(ファイル一覧)
- Sample.php
- SamplePost.php
- plugin.ini
- SamplesPlugin.php
- create_samples_table.php
- create_sample_posts_table.php
- samples_frame_edit_tab.blade.php
- card/index.blade.php
- card/template.ini
- default/bucket.blade.php
- default/edit.blade.php
- default/index.blade.php
- default/list_buckets.blade.php
- default/show.blade.php
- default/template.ini
- WYSIWYG
- Session
- Programing tips
- Rule(ルール)
- Laravel method tips
- Laravel reference pages
- PHP
- phpcs
- Datetimepicker(日付入力)
- Hook(処理のフック)
- SQL
- Pull-Request(Web画面上)
- Post
- Optimize
- Composer
- npm
- コントローラー側の$this--can()-の調査
- API (外部サービスAPI)
- Test Case(テストケース)
- memo(永原のメモ)
- TCPDF(実装サンプル)
- Phpunit(ユニットテスト)
-
Dusk(ブラウザテスト)
- Github-Actions-Dusk(Github Actionsでブラウザテスト)
- Docker で Laravel Dusk を利用する方法
- Dusk-Manual(マニュアル自動生成)
- Develop-Windows(Windows開発環境)
- users_columns(ユーザ任意項目)
- container-page-beta(コンテナ方式(ページ)対応(ベータ版))
- Migration
- Other
- Link
- MultiLanguage(多言語化の際の注意点)