Skip to content

fardog/ghostface

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ghostface

Evaluate javascript in PhantomJS, and print the output.

Build Status npm install js-standard-style

Inspired by jsdom-eval, this module makes it trivial to run tests in a headless browser.

Installation

npm install -g ghostface will expose the ghostface command in your environment.

ghostface does not include phantomjs as a dependency; you should install that however works best in your environment, and ghostface will find it so long as it exists in your $PATH.

ghostface supports phantomjs versions ^1.9.0 or ^2.0.0.

Example

Imagine a browserify project that you're testing using tape:

// file: test.js

var test = require('tape')

test('always passes', function(t) {
  t.plan(1)
  t.pass()
})

Run it with ghostface:

$ browserify test.js | ghostface | tap-set-exit

See the output printed to the console:

TAP version 13
# always passes
ok 1 (unnamed assert)

1..1
# tests 1
# pass  1

# ok

Note: In the example above, we pipe output to tap-set-exit, which parses TAP output and sets the correct exit codes; ghostface is just evaluating javascript, it doesn't know/care what the output is, or how to set the correct exit codes.

Usage

$ ghostface --help

Usage: ghostface [options] [file]

file    Javascript file to be evaluated

Options:
  -h --html            The HTML file to be used as the page template
  -t --timeout         Milliseconds to wait for output before stopping execution. Default 1000
  -f --forever         Ignore the timeout and wait forever
  -p --phantomPath     Specify the path to the phantomjs executable
  --help               Show this message
  --version            Print version and quit

You can specify the JS file to be evaluated, or pipe a JS file directly into ghostface. For an imaginary file.js in the current directory, these two commands are equivalent:

$ ghostface file.js
$ cat file.js | ghostface

The JS you are evaluating will be done in a blank web page. If you want to provide your own context, use the --html <filename> option to load your own html; the JS will be evaluated after the page loads.

By default, execution is stopped if no console output is seen for over 1000ms. You can override this timeout with --timeout <ms>, or choose to run forever with --forever. Note you will have to send a SIGHUP to end execution.

License

This project is licensed under the Apache License, Version 2.0. See LICENSE for the full license.