Publié le 06/13/2017, rédigé par Chloé MAHALIN

Karma

Comment configurer Karma dans votre projet NPM ?

Prérequis, set-up de karma au sein du projet.

Karma est un moteur de test unitaire très puissant, qui démontre une grande souplesse avec des possibilités de configuration vraiment appréciable.

Le fichier de conf de Karma est recherché automatiquement par Karma-cli aux adresses suivantes, dans l'ordre indiqué :

Dès que Karma trouve le fichier répondant à une des conventions de la liste, il utilisera ce fichier pour se set-uper. En fonction de l'extension que vous aurez choisi pour votre fichier, Karma s'attend à trouver un certain langage de déclaration de son contenu. Voici les déclarations de fichier disponibles :

// karma.conf.js
module.exports = function(config) {
  config.set({
    basePath: '../..',
    frameworks: ['jasmine'],
    //...
  });
};
# karma.conf.coffee
module.exports = (config) ->
  config.set
    basePath: '../..'
    frameworks: ['jasmine']
    # ...
// karma.conf.ts
module.exports = (config) => {
  config.set({
    basePath: '../..',
    frameworks: ['jasmine'],
    //...
  });
}

Voici les principales options de configuration disponibles sur Karma que je souhaite vous présenter :

singleRun : boolean
Default value : false
Description : Si Karma est configuré avec la propriété SingleRun à true, alors il s'arretera une fois les tests unitaires joués, que le résultat soit au vert ou pas.

autoWatch : boolean
Default value : true
Description : Indique si Karma rend la main et termine son process à la fin du jeu de test unitaire principal ou s'il surveille le filesystem dans l'attente de vos modifications pour rejouer tous les tests.

processKillTimeout : number
Default value : 2000
Description : Indique le temps d'attente que Karma respectera avant de forcer le navigateur à se fermer dans le cas ou le navigateur cesserait de répondre.

port : number
Default value : 9876
Description : Indique le port sur lequel se lance le serveur de test Karma. Peut être utile si l'on dispose de plusieurs serveurs en route sur sa machine.

hostname : String
Default value : 'localhost'
Description : Indique le nom de d'hébergeur à utiliser lorsque l'on teste sur le navigateur.

plugins : Array
Default value : ['karma-*']
Description : La liste des plugins que Karma peut utiliser pour lancer les tests unitaires déclarés.

frameworks : Array
Default value : []
Description : La liste des frameworks qui seront disponibles pour les tests unitaires. Je recommande vivement l'utilisation de Jasmine, qui est une petite pépite du test unitaire. Il ne lui manque plus que la gestion de mocks et c'est la cerise sur le gateau.

logLevel : Constant
Default value : config.LOG_INFO
Description : Le niveau de log que l'on souhaite voir afficher à l'écran lorsque l'on lance des tests unitaires.
Possible values : config.LOG_DISABLE, config.LOG_ERROR, config.LOG_WARN, config.LOG_INFO, config.LOG_DEBUG

concurrency : Number
Default value : Infinity
Description : Indique le nombre de browsers que Karma a le droit de lancer en parallèle. Même si cela peut sembler une bonne idée de paralléliser, pensez toujours à bien estimer les limites de vos machines, surtout si vous faites du test Angular, particulièrement coûteux...

colors : Boolean
Default value : true
Description : Permet de choisir si vous souhaitez que vos logs soient en couleur ou pas. Particulièrement utile pour les grincheux qui n'aiment pas la gaieté.

captureTimeout : Number
Default value : 60000
Description : Défini le délai de réponse toléré par Karma pour récupérer l'instance de navigateur déclaré.

browserDisconnectTimeout : Number
Default value : 2000
Description : Indique le temps d'attente de Karma pour que son browser se reconnecte.

Les autres sont disponibles à cette adresse.