2013-10-30 15 views
12

Ho una sola riga di comando Ubuntu 11.04 (GNU/Linux 2.6.35.4-rscloud x86_64) e sto lavorando attraverso lo Angular Phonecat tutorial che usa il Karma per i test. Il Karma browser config page dice che il launcher di Chrome è "fornito con Karma di default".Come far funzionare Karma con Chrome

Ma non funziona per me. This is the karma.conf.js. Di seguito è riportato l'output.

$ ./scripts/test.sh 

Starting Karma Server (http://karma-runner.github.io) 
------------------------------------------------------------------- 
INFO [karma]: Karma v0.10.4 server started at http://localhost:9876/ 
INFO [launcher]: Starting browser Chrome 
ERROR [launcher]: Cannot start Chrome 
     Can not find the binary google-chrome 
     Please set env variable CHROME_BIN 

This answer fa notare che ho bisogno di cromo.

Così ho provato a installare Chrome sulla mia Ubuntu con this guide con "scarica la versione a 64 bit utilizzando la riga di comando". Tutto è andato bene fino al sudo apt-get -f install, che si è conclusa con un sacco di "impossibilità di recuperare" da indirizzi IP ubuntu, come 91.189.91.15 o 91.189.92. . Anche con/usr/bin/google qualcosa * che il "Impossibile trovare il binario google-chrome" va via, ho ancora il "Can not start Chrome" sul singolo livello di test. Poi, mentre cercavo di correggere gli errori, ho cancellato/usr/bin/google qualcosa.

Attualmente, ho queste node_modules:

angular-phonecat/node_modules$ ls 
karma      karma-html2js-preprocessor karma-requirejs 
karma-chrome-launcher  karma-jasmine    karma-script-launcher 
karma-coffee-preprocessor karma-junit-reporter 
karma-firefox-launcher  karma-phantomjs-launcher 

Q 1: Dal momento che la mia macchina ha accesso solo da riga di comando, senza interfaccia grafica, è l'altro lanciatore Karma, PhantomJS, una scelta migliore di Chrome/Chromium ?

Q 2: Se dovessi ancora utilizzare Chrome/Chromium, dovrei ricevere Chrome o Chromium?

Q 3: qualcuno sa esattamente di cosa ho bisogno per ottenere google-chrome o chromium per Karma affinché funzioni nell'app Angular?

risposta

9
  1. Se si dispone solo di un'interfaccia della riga di comando, PhantomJS è l'unica scelta per voi.
  2. In linux (almeno 12.04 e in avanti) il cromo è l'alternativa. Ma non puoi installarlo se non hai un interfaccia grafica.
  3. L'indizio è qui: "Imposta la variabile env CHROME_BIN". Karma tenta di eseguire un file chiamato google-chrome e non esiste. Il nome dell'eseguibile per chrome varia da sistema operativo a sistema operativo. Pertanto è necessario impostare una variabile ambientale chiamata CHROME_BIN che abbia il valore del nome dell'eseguibile chrome. Sul mio sistema (desktop 13.10 di Linux) questo è chromium-browser.
-1

Hai provato a eseguire un test end-to-end? Sto usando Linux con la riga di comando solo sul mio VPS, quindi ho usato il test di e2e e funziona abbastanza bene.

22

mi spieghi terzo punto per i cercatori di risposta e per il mio riferimento nel futuro di Ludwig ...

La prima cosa che devi fare è trovare dove è installato chromium-browser.Run:

which chromium-browser 

Questo restituirà il percorso del file eseguibile, che sarà simile a questa:

/usr/bin/chromium-browser 

Poi basta impostare il percorso:

export CHROME_BIN=/usr/bin/chromium-browser 

Ora Karma può trovare la browser ha bisogno di eseguire i test (presumendo che tu abbia deciso di utilizzare un'interfaccia grafica).

+0

Trovo la risposta più leggibile di quella di Ludwig: mi piace il fatto che posso copiare e incollare il comando di esportazione (e che funziona solo dopo). Potresti forse fare un ulteriore passo avanti e spiegare come ricaricare automaticamente la variabile di esportazione usando un .bashrc per esempio. – nha

+1

Se sei un novizio del karma (che probabilmente è il motivo per cui stai leggendo questo), è utile sapere che il karma con Chromium richiede un display grafico. Nasconde comodamente il messaggio di errore "Impossibile aprire il display" che proverebbe a dirti che la tua variabile d'ambiente DISPLAY non è impostata per utilizzare un server X Windows in esecuzione. – nmgeek