javascript - 启动时打开 Karma debug.html 页面

标签 javascript node.js debugging gulp karma-runner

简短版:

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

长版:

我不太喜欢使用控制台报告器来记录 Karma,所以我一直在使用 karma-jasmine-html-reporter-livereload输出到 Karma 的 localhost:9876/debug.html 文件。问题是,每次我开始调试 session 时,我都必须单击 karma 打开的网页中的“调试”按钮。

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

这是我的 gulp 任务。 “监视”任务监视我的源 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();
});

最佳答案

我找到了一种使它永久化的方法,尽管它并不完美。你可以在上下文中注入(inject)一个 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 中执行。

您可以在该 block 中添加任何您希望的初始化代码。

关于javascript - 启动时打开 Karma debug.html 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33023535/

相关文章:

node.js - Nodejs 构建 sublime-text2

node.js - 无法重新启动 redis-server.service : Unit redis-server. 找不到服务

node.js - 输入 Angular 找不到名称错误

ruby-on-rails - Rails 调试器在一段时间后自动退出,Ubuntu 终端选项卡挂起

javascript - ag-grid:滚动时将标题保持在顶部

javascript - Angular/Socket.io/HTML/从 HTML 中的 <script> 内调用 Controller 的函数

javascript - 如何确定用户何时离开网页(不包括某些链接)

javascript - Visual Studio JavaScript 调试速度极慢

PHP:数组声明中的变量

javascript - 是否可以在JS中验证URL