|
Publié le 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é :

  • ./karma.conf.js
  • ./karma.conf.coffee
  • ./karma.conf.ts
  • ./.config/karma.conf.js
  • ./.config/karma.conf.coffee
  • ./.config/karma.conf.ts

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.