Skip to content

Instantly share code, notes, and snippets.

@stomita
Last active August 29, 2015 14:01
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stomita/a5265f1e4c397d2532e5 to your computer and use it in GitHub Desktop.
Save stomita/a5265f1e4c397d2532e5 to your computer and use it in GitHub Desktop.
Power-Assert & browserify

質問

  1. 現在、power-assertをbrowserify+espowerifyでブラウザ上でのテストに試していますが、espowerifyはsourceMapサポートと聞いた (http://efcl.info/2014/0411/res3820/) ので、以下のようにbrowserify に debugオプションを立ててsourceMapを出力するようにしています。
$ browserify test/foo.test.js -d -t espowerify -o ./browser-test/foo.test.js 

(上記記事でazuさんはWebStormのデバッガで見ているようですが)こちらではtestemでテストを走らせ、Chrome上でSourceMap済のコードを参照していますが、そこではPowered後のソースが表示されてしまいます。 http://gyazo.com/db447920e6a4da38c522c68c4b74deef

こちらで試したソースを以下に上げました https://github.com/stomita/power-assert-browserify-test

  1. power-assertを使うと、assert以外の場所で例外発生した場合、stacktrace上のlineはpowered後のものになってしまうようですが(これはまあ仕組み上仕方ないかなと思っていたのですが)、もしかしたらSourceMapがちゃんと機能すればここも改善するかな?と思っています。この認識は正しいでしょうか?
@azu
Copy link

azu commented May 19, 2014

espowerify(Browserify + Sourcemap)が何かバグってる感じがする。

power-assertを使うと、assert以外の場所で例外発生した場合、stacktrace上のlineはpowered後のものになってしまう

こちらは、Sourcemapが機能していれば、ブラウザのDevToolsはSourcemapを使ってスタックトレースの対応もやってくれるみたいです。

テストのレポーターは多分デフォルトだとやってくれない気がするので、
レポーターにsourcemapを使ったスタックトレースの行数書き換えが必要になると思います。

Karmaの場合はそういう仕組みが本体にあったのでplugin側にそういう対応いれてました。

基本的なやり方はhttp://tech.nitoyon.com/ja/blog/2013/02/19/node-source-map/ と似たような話で、
source-mapを使ってsourcemapファイルからオリジナルファイルの行数を表示するようにする感じです。

なので、testemのレポーター側の仕組みがどうなってるかにもよるかな

@twada
Copy link

twada commented May 19, 2014

espowerify(Browserify + Sourcemap)が何かバグってる感じがする。

そうかも…… testem + Chrome で見てみます。

後者は testem のレポーター次第ということですね。

@twada
Copy link

twada commented May 19, 2014

@stomita さんのリポジトリで再現しましたし、さらに espowerify を coffeeify に置き換えて browserify + coffeeify + SourceMap の構成にしてみても、 DevTools でブレークポイント等が動くことが確認できました。つまりは espowerify の問題の可能性大ですね……調査します。

@twada
Copy link

twada commented May 19, 2014

いろいろ試してみました。

espower-source 0.6.1 に加えた変更を元に戻すと Chrome の DevTools できちんと表示されるようです。ブレークポイントも動作しました。

この変更自体は karma + browserify の組み合わせの際にエラーが発生したために施した変更なのですが、現在は元に戻しても発生しないようです……もう少し調査します。

@twada
Copy link

twada commented May 19, 2014

@twada
Copy link

twada commented May 19, 2014

espower-source 0.7.1, espowerify 0.7.1 で対応作業を行い、それぞれリリースを行いました。

動作確認は下記の環境で行いました

  • power-assert-browserify-test + Chrome DevTools
  • power-assert-testem-seed + WebStorm
  • power-assert-karma-seed + WebStorm

プルリクエストも出しておきました stomita/power-assert-browserify-test#1

お手数ですが、試してみて下さい。

@stomita
Copy link
Author

stomita commented May 20, 2014

上記 Chrome DevToolsで元のソースが表示されること、確認しました。
スタックトレースの方はレポータの対応が必要なんですね。Karmaに切り替え or testemの対応待ち or 自前対処、など、検討します。

@twada
Copy link

twada commented May 20, 2014

解決したようでよかったです!
ではリリースアナウンスしますね。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment