在启动时打开Karma debug.html页面

Twi*_*ron 10 javascript debugging node.js karma-runner gulp

简短版本:

如何启动Karma并让它在与Karma启动页面相同的浏览器中自动打开debug.html文件?

长版:

我不是很喜欢使用控制台记者的Karma,所以我一直在使用karma-jasmine-html-reporter-livereload输出到Karma的localhost:9876/debug.html文件.问题是,每次我开始调试会话时,我都必须单击业力打开的网页中的"调试"按钮.

我想找到一种方法让业力通过gulp任务自动打开debug.html页面.我在多个浏览器中运行测试,因此我希望在每个Karma打开的浏览器中打开debug.html页面作为第二个选项卡.当karma关闭时,我还希望能够关闭该debug.html选项卡.我尝试了很多东西,没有成功.

这是我的gulp任务.'watch'任务监视我的源TypeScript文件,并将它们编译成javascript ...没什么特别的.

gulp.task('watch-test', ['watch'], function (done) {
    //start a livereload server so that the karma html 
    //reporter knows to reload whenever the scripts change
    livereload.listen(35729);
    gulp.watch('dist/src/**/*.js').on('change', livereload.changed);

    new KarmaServer({
        configFile: __dirname + '/karma.conf.js',
        singleRun: false
    }, done).start();
});
Run Code Online (Sandbox Code Playgroud)

zus*_*off 7

您可以使用customLauncher浏览器定义:

  customLaunchers: {
    ChromeDebugging: {
      base: 'Chrome',
      flags: [ '--remote-debugging-port=9333', '--auto-open-devtools-for-tabs', 'http://localhost:9876/debug.html' ]
    }
  }
Run Code Online (Sandbox Code Playgroud)

并在您的 karma 配置中使用此浏览器。

  • 这将打开 debug.html 页面和默认页面。 (3认同)

ntr*_*trp 5

我发现了一种使它永久化的方法虽然它并不完美..你可以在上下文中注入一个javascript:

files: [
    "test/init.js",
    ...
]
Run Code Online (Sandbox Code Playgroud)

并在文件中放入此代码:

(function (window) {
    if (!window.parent.initDone && window.location.pathname === '/context.html') {
         window.parent.initDone = true;
         window.open('/debug.html', '_blank');
    }
})(window)
Run Code Online (Sandbox Code Playgroud)

这将确保窗口仅在第一次运行测试时打开,并且仅在context.html中执行.

您可以在该块中添加任何所需的初始化代码.