2013-02-23

SpookyJS & mochaでnode.jsのクライアントサイドテスト

SpookyJS + Mocha


MochaはNode.jsでも動くJavaScriptテストフレームワーク。
SpookyJSとは、PhantomJSというHeadless Webkit(GUIのないWebkit的なもの)を、クライアントサイドのテストUtilityとして使えるCasperJSをNode.jsで使えるようにしたモノです。

やりたいことと構成

Node.jsのプロジェクト(express)上でMocha使ってやってるBackendのテストと一緒に、FrontendのテストもSpookyJS経由で行う。


経緯

この前試したZombie.jsがうまくいかないみたいなので別の方法を探したというわけです。。


やってみよう!!

Mocha

Mochaのインストールとか簡単なhello world



導入としてこのサイトも参考にしました。
http://d.hatena.ne.jp/hokaccha/20111202/1322840375
今回はassertionをshouldでやってるけど、元々使ってるのもあってexpectを採用してます。

PhantomJS

インストールはmacなのでHomebrew。
$ brew install phantomjs

実行とかは公式なQuickStartが良かった。
https://github.com/ariya/phantomjs/wiki/Quick-Start

CasperJS

こちらもHomebrewで。

$ brew install casperjs

APIなどはSpookyJSで使えるものと大体同じ、というかこちらが本家なのでAPIリファレンスをちゃんと見ておくと良いです。むしろSpookyの方にドキュメントが殆ど無い。。

http://casperjs.org/api.html#casper

SpookyJS 

インストールはnpmでできます。
$ npm install spooky

入れた時にnode_module/spooky/template?だったかにsampleがあったのでnodeコマンドで実行して試せます。

その他環境

SpookyJSでunderscoreなど必要みたいなので、package.jsのdependenciesをこんな感じで書く。

"dependencies": {
 "express": "3.0.6",
 "jade": "*",
 "mocha": "*",
 "expect": "*",
 "spooky": "*",
 "underscore": "*"
}


spookyHelper.js

ヘルパーを作っておいて、テストスクリプトから呼べるようにしておきます。



spookyMochaTest.js

spookyHelper.jsを使って、spooky + mochaを実現してるコード。



こっからは、SpookyJS(CasperJS)のAPIゴリゴリ使って、テストを書いてく感じ。
CasperJSの使い方については、また書けたら書きます。







2013-02-20

Zombie.jsでクライアントサイドのテストしてみる




Zombie.js is headless browser.


Zombie.jsはnode.jsで動くクライアントサイトテストフレームワーク。またはユーザーインターフェースを持たないブラウザです。
コレを使ってクライアントサイドのテストが書けます。

Hello Zombie.js


すっごく簡単に使ってみる。(神戸蘭子のアメブロ見てtitleタグ確認するだけ。)



こんな感じ。

browser.successでstatusCodeが200かどうかをnodeのAPI、assert.okを使ってチェック。
browser.textでCSSセレクタ使って見つけたエレメントを取得して、assert.equalでチェック。


その他


form入力とかもできる。


pressButtonとか、clickLinkとか、色んなAPIがあるみたい。

調べてる途中なのだけど、JavaScript使ってDOM生成したエレメントが見れないぽい。。

どうやったらええんや…。

2013-02-18

SublimeText2でEmmet入れたらコケた件


久々にブログを書いた動機


SublimeText2でZenCoding使ってたら機能不全に陥ってしまっていたのでremove packageして、Emmetを入れてみた時のメモ。

現象


 ctrl + shift + pでEmmetをインストールして再起動したら下記のエラーが出た。
Error while loading PyV8 binary: exit code 4
from https://github.com/emmetio/pyv8-binaries
PyV8ってのが足らんらしい。


対処

  1. githubのリンクを辿って行くと下部のREADMEにPyV8のOS別ダウンロードリンクがあったのでそこから自分のOS用のファイルをDLし解凍。
  2. SublimeText2でctrl+shift+p -> "Browse Packages..." を開いて、解凍したフォルダを移動。
  3. SublimeText2を再起動。

その他設定など


Emmetを入れただけだと日本語使えないらしいので、下記サイトを参考に設定変更。

勉強会があったらしい。使い方など。

スニペットの変更はココ
/Users/username/Library/Application Support/Sublime Text 2/Packages/Emmet/emmet/snippets.json

ZenCodingの時と一緒で、langの設定変えたい時等はココで変更できる。