2016-06-09 bouzuya/beater の browser support をかんがえた
bouzuya/beater の browser support を検討した。
slack kyoto.js team で beater の意見を聞いたところ browser support の話が出た。
その場でのぼくの気持ちは「やっぱり難しそう……。いや、動かすだけならできそうだけど、何を大切にしたいのかを見失いそう。」という発言に落ち着いた。
「 browser でも動く」という位置は mocha を目指すと避けられない。個人的には十分な beater なのだけど、目標は post mocha, 50 stars。再設計して browser support を目指すことにした。
このあたりの流れは、次の tweet からの一連の tweet で検討している。
beater をブラウザに載せる想定で、再設計しよう。
— bouzuya (@bouzuya) 2016年6月9日
`Beater` class の API は Browser でも動くように考慮したものに変えよう。エントリーポイントはユーザーに作成してもらって require はなんとかして提供してもらおう。
— bouzuya (@bouzuya) 2016年6月9日
beater の設計を大きく次のように見直した。
test()
必須なので file 単位の隔離は重要でない。- browser を制御して file 分離しなくても良い。browser を制御しない。
window
(global
) を共有しても良い。共有する。- mocha のように browser 内で動くようにする。
test()
とreporter
をつなぐべき。--dir
/--ext
など browser で使えないのでBeater
class から消す。- mocha / tape / jasmine などで十分に思えるが、そこに新たな選択肢を加える。
- 動的に
require()
してtest()
を呼ばせて実行する。 - server-side は files から走査して実行する。
- client-side は
Beater
にTest
を渡して実行する。 - それぞれに適した Runner を
process.browser
で選択する。
で、bouzuya/beater に browser support を軽く実装した。実際に試していない。理屈の上では動く。
- beater の doc/ の追加
- Runner interface の追加
- ServerRunner / ClientRunner の追加
- その他 directory の整理
beater の browser 対応、たぶん、できた。
— bouzuya (@bouzuya) 2016年6月9日
検証は進めていく。