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

xpcnnkqh  于 2022-12-08  发布在  Gulp
关注(0)|答案(4)|浏览(154)

简短版本:

如何启动Karma并让它在Karma起始页所在的浏览器中自动打开debug.html文件?

详细版本:

我不是一个使用控制台报告器的Karma的狂热爱好者,所以我一直使用karma-jasmine-html-reporter-livereload,它输出到Karma的localhost:9876/debug.html文件。问题是,每次我启动调试会话时,我都必须在Karma打开的网页中单击“debug”按钮。
我想找到一种方法,让karma通过一个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();
});
sg2wtvxw

sg2wtvxw1#

我发现了一种方法,使它永久,虽然它并不完美..您可以注入到上下文javascript:

files: [
    "test/init.js",
    ...
]

并在文件中放入以下代码:

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

这将确保窗口仅在第一次运行测试时打开,并且仅在context.html中执行。
您可以在该块中添加任何所需的init代码。

wfsdck30

wfsdck302#

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

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

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

v64noz0r

v64noz0r3#

我想不出一个优雅的方法来做这件事,所以这里有一个肮脏的,低下的,不好的,腐烂的,完全可耻的欺骗,但它的工作。
在node_modules〉karma〉static〉karma.js中,我添加了以下代码行:

var debugWin = window.open('http://localhost:7676/debug.html','Debugme');
debugWin.focus();

在上下文中显示如下,从第366行开始(在版本0.13.19中):

var updateBanner = function (status) {
    return function (param) {
      var paramStatus = param ? status.replace('$', param) : status
      titleElement.innerHTML = 'Karma v' + VERSION + ' - ' + paramStatus
      bannerElement.className = status === 'connected' ? 'online' : 'offline'
    }
  }

  var debugWin = window.open('http://localhost:7676/debug.html','Debugme');
  debugWin.focus();

  socket.on('connect', updateBanner('connected'))
  socket.on('disconnect', updateBanner('disconnected'))
  socket.on('reconnecting', updateBanner('reconnecting in $ ms...'))
  socket.on('reconnect', updateBanner('connected'))
  socket.on('reconnect_failed', updateBanner('failed to reconnect'))
  socket.on('info', updateBrowsersInfo)
  socket.on('disconnect', function () {
    updateBrowsersInfo([])
  })
}

好好享受吧。你这个叛逆的家伙。

svgewumm

svgewumm4#

可以将client.clearContext设置为false,默认情况下为true
请访问http://karma-runner.github.io/6.4/config/configuration-file.html#clientclearcontext

// Karma configuration

module.exports = function(config) {
  config.set({
    // [...]

    client: {
      clearContext: false
    }

    reporters: [ 'kjhtml' ],

    // [...]
}

相关问题