Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using PhantomJS with Karma (Win7 x64)

Does anyone have a simple getting started guide on how to configure Karma to use PhantomJS?

Using the phonecat sample, I have Karma running with Chrome fine and although the Karma docs mention PhantomJS (which I now have installed) I can't figure out how to amend the config file to get it to run.

I've tried putting PhantomJS in the the browsers array of testacular.conf.js but I get;

 { [Error: spawn OK] code: 'OK', errno: 'OK', syscall: 'spawn' }

Which I think means it's launching OK but it appears to me that (as a PhantomJS noob) it requires a different command line. I've also downloaded phantomjs-launcher but it's not obvious how to use that.

(I'm running Windows 7 64-Bit if that makes a difference.)

test.bat

@echo off

REM Windows script for running unit tests
REM You have to run server and capture some browser first
REM
REM Requirements:
REM -NodeJS (http://nodejs.org/)
REM -Testacular (npm install -g karma)

set BASE_DIR= % ~dp0
karma start "%BASE_DIR%\..\config\testacular.conf.js" %*

testacular.conf.js

basePath = '../';

files =[
  JASMINE,
  JASMINE_ADAPTER,
  'app/lib/angular/angular.js',
  'app/lib/angular/angular-*.js',
  'test/lib/angular/angular-mocks.js',
  'app/js/**/*.js',
  'test/unit/**/*.js'
];

autoWatch = true;

browsers =['Chrome', 'phantomjs'];

junitReporter = {
    outputFile: 'test_out/unit.xml',
    suite: 'unit'
};

According to procmon.exe PhantomJS wasn't launching at all, so to circumvent environmental issues, I've since amended my config thus;

browsers = ['Chrome','%USERPROFILE%\\AppData\\Roaming\\npm\\phantomjs.cmd'];

where %userprofile% is expanded, which seems to launch it, but now I get this;

INFO [launcher]: Starting browser %USERPROFILE%\AppData\Roaming\npm\phantomjs.cmd
ERROR [launcher]: Cannot start %USERPROFILE%\AppData\Roaming\npm\phantomjs.cmd
        Can't open 'http://localhost:9876/?id=16572367'

events.js:72
        throw er; // Unhandled 'error' event
          ^
Error: spawn OK
    at errnoException (child_process.js:975:11)
    at Process.ChildProcess._handle.onexit (child_process.js:766:34)

That error seems to be coming from PhantomJS.exe now.

like image 549
cirrus Avatar asked May 01 '13 14:05

cirrus


1 Answers

First, install PhantomJS using npm:

npm install -g phantomjs

You may then need to specify the location of the PhantomJS executable for karma. The npm install will tell you where it put the executable. For me, running karma in Git Bash, I added the following to ~/.profile:

export PHANTOMJS_BIN ='C:/Users/JohnSmith/AppData/Roaming/npm/node_modules/phantomjs/lib/phantom/phantomjs.exe'`

Those two steps, plus adding PhantomJS to the browsers entry, were sufficient to get karma to successfully invoke Phantom and run all of my tests.

like image 145
S McCrohan Avatar answered Sep 28 '22 10:09

S McCrohan