Evaluate Javascript in PhantomJS, and print the output.
Last updated 5 years ago by fardog .
Apache-2.0 · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install ghostface 
SYNC missed versions from official npm registry.


Evaluate javascript in PhantomJS, and print the output.

Build Status npm install

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


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.


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

// file: test.js

var test = require('tape')

test('always passes', function(t) {

Run it with ghostface:

$ browserify test.js | ghostface | faucet

See the output printed to the console:

✓ always passes
# tests 1
# pass  1
✓ ok

Note: In the example above, we pipe output to faucet, 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.


$ ghostface --help

Usage: ghostface [options] [file]

file    Javascript file to be evaluated

  -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.


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

Current Tags

  • 1.5.0                                ...           latest (5 years ago)

14 Versions

  • 1.5.0                                ...           5 years ago
  • 1.4.0                                ...           5 years ago
  • 1.3.0                                ...           5 years ago
  • 1.2.1                                ...           5 years ago
  • 1.1.4                                ...           5 years ago
  • 1.1.3                                ...           6 years ago
  • 1.1.2                                ...           6 years ago
  • 1.1.1                                ...           6 years ago
  • 1.1.0                                ...           6 years ago
  • 1.0.2                                ...           6 years ago
  • 1.0.1                                ...           6 years ago
  • 1.0.0                                ...           6 years ago
  • 0.2.0                                ...           6 years ago
  • 0.1.0                                ...           6 years ago
Maintainers (1)
Today 0
This Week 0
This Month 4
Last Day 0
Last Week 1
Last Month 1
Dependencies (7)
Dev Dependencies (4)

Copyright 2014 - 2016 © |