Переглянути результати тестування Karma у браузері?


74

Я новачок у Karma, але мені цікаво, як переглянути його результати у браузері (подібно до того, як взаємодіє з Жасмином, коли присутній файл runner.html).

Я дивився вступний скринкаст і розумію, як переглядати тестові результати у вікні консолі, але у своєму браузері я майже не отримую вмісту для Karma, за винятком

Карма - пов’язана

Порадьте, будь ласка! Я хотів би уникнути необхідності підтримувати окремий файл runner.html, оскільки файл конфігурації Karma вже вимагає від мене включення всіх необхідних посилань на скрипт.


1
У моєму вікні Linux Karma також відкриває Chromium і повідомляє, що він підключений, але потім негайно закриває браузер. І так, singleRun є помилковим у конфігурації Karma.
Стефан

Я бачу ту саму проблему @StephaneEybert, ти її вирішив?
ChrisFletcher,

@ChrisFletcher Я перейшов із Chrome на PhantomJS у файлі test / karma.conf.js, маючи таке: браузери: ['PhantomJS' // 'Chrome'],
Стефан

Відповіді:


28

AFAIK, попередні дві відповіді правильні, оскільки ви хочете запустити тести в браузері; клацніть DEBUG і перегляньте вихідні дані в консолі.

Ввічливо суперечивши попередній відповіді, я регулярно роблю це та покрокову налагодження з повною змінною взаємодією за допомогою Karma.

Правильна відповідь на ваше запитання, адже те, що ви хочете - це досить вихідний результат на основі HTML, - це "ні". Однак цей плагін для карми може дати вам бажані результати.

https://npmjs.org/package/karma-html-reporter


Дякую, я повинен був згадати, що вам потрібно відкрити консоль, щоб побачити щось взагалі, а не просто для налагодження тестів. Я мав би перевірити того репортера.
Chris Nicola

10

Вам потрібно запустити його за допомогою singleRun = falsein, karma.conf.jsа потім натиснути кнопку у верхньому куті із написом "DEBUG". Тоді ви повинні побачити результат, і він не зникне або не закриється. Ви також зможете використовувати консоль для налагодження.

Варто зазначити, що налагодження тестів e2e не так просто, оскільки вони базуються на "майбутньому", тому ви не зможете перехоплювати значення (afaik).


Це не працює для мене @Chris, я знаю, що це стара відповідь, але чи є у вас пропозиції щодо того, чому це може бути так?
ChrisFletcher

Вибачте, минув якийсь час, і останнім часом я не використовую Карма так часто. Напевно, багато чого змінилося.
Кріс Нікола

5

Привіт У моєму випадку я вирішив цю проблему, встановивши karma-jasmine-html-reporterта помістивши її в масив репортерів.

  • Встановити npm i -D karma-jasmine-html-reporter
  • додайте "kjhtml" у свій репортер.
  • додати client:{clearContext:false}

var gulpConfig = require('./build/build.conf')();
module.exports = function (config) {
    config.set({
        browsers: ['Chrome'],
        basePath: './',
        plugins: [
          // all other plugins
          'karma-jasmine-html-reporter'
        ],
        colors: true,
        client: {
            clearContext: false    // will show the results in browser once all the testcases are loaded
        },
        frameworks: ['jasmine', 'jasmine-sinon', 'sinon'],
        files: [].concat(
            gulpConfig.deps.lib,
            'js/**/*mother*.js',
            'js/**/*mother.*.js',
            'js/**/*.tests.js'
        ),
        logLevel: config.LOG_INFO,
        reporters: ['kjhtml', 'progress', 'coverage'],
    });
};


2

Один із варіантів - відкрити консоль Javascript у вашому браузері. Карма створює запис журналу для кожного тесту, включаючи результат.


2

Я хотів відобразити веб-сповіщення HTML5 з Karma, тому написав щось швидке, щоб змусити його працювати з Karma версії 0.11. Може поводитися дещо по-іншому з іншими версіями. Я завантажую цей скрипт з рештою моїх сценаріїв програми, він зберігатиме результати тесту на карму, а після завершення визначатиме успіх тесту, а потім скидатиметься до початкових функцій карми, щоб вони не змінювалися, коли цей сценарій запускається знову.

// store all my test results
var results = [];
// Wrap the karma result function
var resultFunc = window.__karma__.result;
window.__karma__.result = function(result){
    // run the original function
    resultFunc(result);
    // push each result on my storage array
    results.push(result);
}

// wrap the karma complete function
var completeFunc = window.__karma__.complete;
window.__karma__.complete = function(result){
    // run the original function
    completeFunc(result);
    // determine success
    var success = results.every(function(r){ return r.success });

    if (success) {
        // display a success notification
    }
    else {
        // display a test failure notification
    }

    // reset the result function
    window.__karma__.result = resultFunc;
    // reset the complete function
    window.__karma__.complete = completeFunc;
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.