はじめに
本投稿は、Nightmare v2を前提とした内容になっています。
v1については、こちらの投稿を参照ください。
Nightmare v2になって
いつからv2になったのか
$ npm info nightmare
{ name: 'nightmare',
description: 'A high-level browser automation library.',
'dist-tags': { latest: '2.0.7' },
versions:
[ '0.0.1',
...(( 中略 ))...
time:
{ modified: '2015-10-01T18:28:53.265Z',
...(( 中略 ))...
'2.0.0': '2015-09-13T08:14:23.986Z',
どうやら、2015-09-13にv2.0.0がnpm上でリリースされたようです。
v2になって何が変わったのか
ブラウザがphantomjsからelectronに変更
- 実行速度の大幅改善が見込まれる
- electronがデスクトップアプリとして動作するので、実行中にウィンドウを見ることができる
ES6のジェネレーター構文を採用
mochaを使う場合は、co-mocha(または将来的に、mocha-generators)が必須になる- mochaを使う場合は、mocha-generatorsを使う
- #281 Replace co-mocha w/ mocha-generators
- [#290 Initialize mocha-generators so tests run](Initialize mocha-generators so tests run)
coffee-scriptは現実問題使えない
APIの変更
- インスタンスの生成が、
new Nightmare()
ではなく、Nightmare()
に - evaluate関数の値の受け渡し方が変更
- end関数の導入
現状の問題点(v2.0.7時点)(v2.1.4で解消)
screenshotを使うとtimeoutになる- #217 implement screenshots
Example
githubにあげていたexampleをv2に対応させました。
https://github.com/imunew/nightmare-example
おわりに
v2で破壊的変更が加えられたnightmareですが、実行速度は大幅に改善されています。(v1がphantomjsのために遅過ぎたというのはありますが)
ただ、ES6構文が取り込まれたことで、コードの書き直しが発生するなど、利用する側の負担も正直、小さくはありません。
構文は変えずに、phantomjs→electronの変更だけをするバージョンがあっても良かったのかなと。