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”に設定することで、正しく表示されるようになった。

node.jsでテキストファイルを1行ずつ読み込む

readlineモジュールを使うと、テキストファイルを1行ずつ読み込むことができます。

readlineモジュールの使い方

readlineモジュールを読み込みます。

const readline = require('readline');

readline.Interfaceのインスタンスを作成します。
引数のinputには読み込み可能なストリームを指定します。

const rl = readline.createInterface({ input: rs });

入力ストリームが行末(\r、\n、\r\n)を受け取るたびに、lineイベントが発生します。

rl.on('line', (line) => {
    console.log(line);
});

ソースコード

sample.txtを1行ずつ読み取り出力するコードです。

const fs = require('fs');
const readline = require('readline');

const rs = fs.createReadStream('sample.txt');
const rl = readline.createInterface({ input: rs });
rl.on('line', (line) => {
    console.log(line);
});

関連

読み込むテキストファイルの文字コードがわからないときは、次の記事をご覧ください。