ちょっと前から検索しているけど、あんまりこの話題活発ではない。FirefoxやOperaのAdd-onsやExtensionsはどんな感じなんでしょうか。 おおまかに以下の2パターンのアプローチがある。
(1) Chrome拡張独自のAPIをモック化してブラウザやコマンドラインから独立したテストを実行できるようにする
Testing Chrome Extensions with Jasmine - Roberto Soares
- Chrome Extension API のモック化+jasmine-spyでテスト
- require.js を使ってbackgroundscriptやcontentscriptをテスト時に動的に読み込む。
- chrome.extention 以下をモック化しているのでテストがブラウザに依存しなく実行できる(コマンドライン、CI)
ソースコード: gist-io-chrome/spec at master · roberto/gist-io-chrome
(2) ブラウザ上で実行できるテストフレームワークをChrome拡張のサンドボックス内にすべて含めて、拡張機能の内部URLにブラウザからアクセスしテストランナーを実行する
Browser Testing as a Chrome Extension · Adrian Unger
ソースコード:staydecent/jasmine-chrome-extension
あとはてなブックマーク拡張がQUnitでテスト書いてあって参考になる https://github.com/hatena/hatena-bookmark-googlechrome-extension
所感
(1)の方が可用性の観点から好みなんだけど(2)のが本番に近いし手軽。(1)を志向しつつ妥協するところは(2)及び手動というのが現実解かなあと感じた。
またyeomanでChromeAppsがサポートされているらしい(http://yeoman.io/gettingstarted.html )ので見てみた。mocha+chai+phantomjs あたりのテスト環境が一発で生成されるんだけどChrome拡張API独自のサポートとかはないかんじ。
その他の参考になる情報
Chrome Extension開発を勉強してみる (15) - QUnitでChrome拡張の単体テスト - - kinjou_j (転職中?)のメモログ