CodeceptJS + NightmareJSでSSLのエラーを無視する設定
Aug 30, 2020 16:45 · 880 words · 2 minute read
テスト用のCodeceptJS周りをDockerに移行しました。
NightmareJSでエラーが発生したので、エラーの内容と解決方法を残しておきます。
以前の記事はこちら。
CodeceptJS + PuppeteerでWebアプリの動作テストを自動化した
目次
環境
- Docker
- CodeceptJS
- NightmareJS
CodeceptJSの公式ドキュメントに記載されているDockerコンテナを利用しました。
このコンテナには、最初からCodeceptJSとNightmareJSが動作する環境が整っています。
NightmareJSとは?
以前はPhantomJSを簡単に扱うためのラッパーツールだったようですが、現在はPhantomJSではなくElectronに入れ替わっているようです。
NightmareJSを使うことで、ヘッドレスブラウザでWebアプリを動作させたり、画面のキャプチャを取得することができます。
エラー内容
codecept.conf.jsの内容をNightmareJS用に変更したところ、「Step-by-step preview: file:///tests/output/records.html」に真っ白な画像だけが残されていました。
エラーメッセージに従い、「–verbose」オプションをつけて実行してみます。
Run with --verbose flag to see NodeJS stacktrace
「–verbose」をつけて実行した結果が下記です。これだけでは何が原因なのかわかりません。
Error: navigation error
at unserializeError (/codecept/node_modules/nightmare/lib/ipc.js:162:13)
at EventEmitter.<anonymous> (/codecept/node_modules/nightmare/lib/ipc.js:89:13)
at ChildProcess.<anonymous> (/codecept/node_modules/nightmare/lib/ipc.js:49:10)
at emit (internal/child_process.js:876:12)
at processTicksAndRejections (internal/process/task_queues.js:81:21)
FAIL | 0 passed, 1 failed // 3s
Emitted | global.result ([object Object])
◉ Step-by-step preview: file:///tests/output/records.html
Emitted | global.after ([object Object])
原因と解決方法
テスト対象のWebアプリで自己発行証明書を利用していたことが原因で、エラーが発生していました。
証明書エラーを無視する設定を追加したところ、無事に動作しました。
switches: {
'ignore-certificate-errors': true
},
の部分を追加しています。
exports.config = {
tests: './*_test.js',
output: './output',
helpers: {
Nightmare: {
url: 'https://********/',
switches: {
'ignore-certificate-errors': true
},
show: false,
restart: false
},
},
include: {
I: './steps_file.js'
},
plugins: {
stepByStepReport: {
enabled: true,
deleteSuccessful: false,
},
},
bootstrap: null,
mocha: {},
name: '********',
}
最後に
今回のエラーについて、日本語の情報が無いようでしたので、記事にしました。
同じエラーが発生している誰かの助けになれば幸いです。