Pertanyaan Buka halaman Karma debug.html saat startup


Versi singkat: 

Bagaimana cara memulai Karma dan membuatnya membuka file debug.html secara otomatis di browser yang sama dengan halaman awal Karma?

Versi panjang: 

Saya bukan penggemar berat menggunakan konsol reporter untuk Karma, jadi saya telah menggunakan karma-melati-html-reporter-livereload yang output ke localhost Karma: file 9876 / debug.html. Masalahnya adalah, setiap kali saya memulai sesi debugging, saya harus mengklik tombol 'debug' di halaman web yang akan dibuka karma.

Saya ingin menemukan cara agar karma membuka halaman debug.html secara otomatis melalui tugas tegukan. Saya menjalankan pengujian di beberapa browser, jadi saya ingin halaman debug.html dibuka sebagai tab kedua di masing-masing browser yang dibuka oleh Karma. Saya juga ingin dapat menutup tab debug.html ketika karma ditutup. Saya sudah mencoba banyak hal, tanpa hasil.

Inilah tugas gulpaku. Tugas 'watch' mengawasi file-file TypeScript sumber saya dan mengkompilasinya ke javascript ... tidak ada yang mewah.

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();
});

9
2017-10-08 18:40


asal


Jawaban:


Saya menemukan cara yang membuatnya permanen meskipun tidak sempurna .. Anda dapat menyuntikkan ke dalam konteks javascript:

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

dan masukkan ke dalam file kode ini:

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

ini akan memastikan bahwa jendela terbuka hanya saat pertama kali pengujian dijalankan dan itu akan dieksekusi hanya dalam context.html.

Anda dapat menambahkan kode init apa pun yang Anda inginkan di dalam blok itu.


5
2017-07-08 07:26



Saya tidak dapat menemukan cara yang berkelas untuk melakukannya, jadi inilah kecurangan yang kotor, rendah, tidak baik, busuk, benar-benar memalukan, tetapi itu berhasil. :)

Di node_modules> karma> static> karma.js saya menambahkan baris berikut:

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

Ditunjukkan di bawah ini dalam konteks, mulai sekitar baris 366 (dalam versi 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([])
  })
}

Nikmati. Anda memberontak, Anda.


2
2018-02-02 22:12



Anda bisa menggunakan customLauncher definisi browser:

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

Dan gunakan browser ini di konfigurasi karma Anda.


1
2018-03-08 10:40