Laravelのブラウザテスト(dusk)で指定したテストを実行したい

ファイルを指定して実行する

php artisan app:dusk --filter tests/Browser/XXXTest.php

クラスとメソッドを指定して実行する

php artisan app:dusk --filter XXXTest::testXXX

–filterオプションの引数は正規表現パターンになる。

詳しくはPHPUnitのマニュアルの「–filter」の項目を参照。

Example 3.2 フィルターパターンの例
--filter 'TestNamespace\\TestCaseClass::testMethod'
--filter 'TestNamespace\\TestCaseClass'
--filter TestNamespace
--filter TestCaseClase
--filter testMethod
--filter '/::testMethod .*"my named data"/'
--filter '/::testMethod .*#5$/'
--filter '/::testMethod .*#(5|6|7)$/'

Laravelでブラウザテスト(dusk)を実行したときにJavaScriptのエラーを取得するには

Laravelでブラウザテスト(php artisan dusk)を実行すると、テストが失敗した。

ログやスクリーンショットから、JavaScriptが失敗していると推測された。

しかし、JavaScriptでどのようなエラーが発生しているのかわからない。

調べた結果、次のコードでJavaScriptのエラーを取得することができた。

$browser->driver->manage()->getLog('browser');

ちなみに、このときのエラーの原因は、VuexでPromiseのpolyfillが必要だった。

macOSにJavaをインストール/アンインストール/複数Javaの切り替えをする

macOSにJavaをインストール/アンインストール/複数Javaの切り替えをする

Homebrewを使うとJavaの管理が簡単にできる。

Javaをインストールする

Homebrewをインストールしていない場合はインストールする

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

homebrew-cask-versionsをインストールしていない場合はインストールする。

$ brew tap caskroom/versions

インストール可能なJavaを確認する

$ brew search java
==> Formulae
app-engine-java java11 jslint4java
google-java-format javacc libreadline-java
java javarepl pdftk-java
==> Casks
charles-applejava java netbeans-java-se
eclipse-java java-beta oracle-jdk-javadoc
eclipse-java java11 oracle-jdk-javadoc
eclipse-javascript java6 yourkit-java-profiler
eclipse-javascript netbeans-java-ee yourkit-java-profiler
font-noto-sans-javanese netbeans-java-ee
java netbeans-java-se

Java8をインストールする

$ brew cask install java8

インストールされているJavaを表示する

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (1):
1.8.0_242, x86_64: "AdoptOpenJDK 8" /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

Javaをアンインストールする

単純に削除するだけで良い。

$ sudo rm -rf /Library/Java/JavaVirtualMachines/adoptopenjdk-13.0.2.jdk

使用するJavaを設定する

$ /usr/libexec/java_home -v "1.8"
/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

設定されているJavaを確認する

$ java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_242-b08)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.242-b08, mixed mode)

スタイルシート(CSS)が反映されない問題と対策

スタイルシート(CSS)が反映されない問題と対策

CSSは読み込まれているかを確認する

F12キーを押して、Google Chromeのデベロッパーツールを起動し、ネットワークタブを選択する。

通信を見ると、CSSファイルは読み込まれていた。

Consoleにwarningを確認する

ChromeデベロッパーツールのConsoleタブを見ると、warningが1件あった。

Resource interpreted as Stylesheet but transferred with MIME type text/plain:

スタイルシートのMIME typeがtext/plainになっていた。

対策

スタイルシートのMIME typeを”text/css”に設定することで、正しく表示されるようになった。