nightmare.jsを使ってみる
はじめに
使ったことないE2Eフレームワークを使ってみる月間、第2弾。 nightmareという名前のため触らずにはいられなかった。
http://www.nightmarejs.org/www.nightmarejs.org
インストール
$ npm install --save-dev mocha $ npm install --save-dev nightmare $ npm install --save-dev power-assert $ mkdir test $ touch test/simpe_spec.js
テストを書く
test/simple_spec.js
const Nightmare = require('nightmare') const assert = require('power-assert') describe('Load a Page', function() { this.timeout('20s') let nightmare = null beforeEach(() => { nightmare = new Nightmare() }) describe('My First Test', () => { it('Search riririusei99', done => { nightmare.goto('http://teamspirit.hatenablog.com/') .type('input[type=text]', 'riririusei99') .click('input[type=submit]') .evaluate(() => { return document.title; }) .end() .then((title) => { assert.ok(title === 'riririusei99 の検索結果 - TeamSpirit Developer Blog'); done(); }) .catch(done) }) }) })
テストコマンドを追加
package.jsonに下記を追加
"scripts": { "test": "mocha" },
テスト実行
$ npm test > nightmare-test@1.0.0 test /Users/username/Repository/nightmare-test > mocha Load a Page My First Test ✓ Search riririusei99 (6500ms) 1 passing (7s)
使ってみた感想
- アサーションを複数入れようとしたらテストコードがいろいろ複雑になってしまったので断念
- specファイル一個で動いているので設定をいじるとさらにスッキリするかも
- Electronが裏で動いているので、Electronを使ったアプリのテストに採用されるのかも
- ヘッドレスブラウザが裏で動くので簡単なツールの自動化には良いのかも
- テストコードの書き方に前回と違いが出たので良かった