15 min/d

ぼうずやのにっき

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 の設計を大きく次のように見直した。

  • 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 は BeaterTest を渡して実行する。
  • それぞれに適した Runner を process.browser で選択する。

で、bouzuya/beater に browser support を軽く実装した。実際に試していない。理屈の上では動く。

  • beater の doc/ の追加
  • Runner interface の追加
  • ServerRunner / ClientRunner の追加
  • その他 directory の整理

検証は進めていく。