
Security News
CISA Kills Off RSS Feeds for KEVs and Cyber Alerts
CISA is discontinuing official RSS support for KEV and cybersecurity alerts, shifting updates to email and social media, disrupting automation workflows.
mocha-casperjs
Advanced tools
Combine the power of casperjs' automation with Mocha's robust testing framework features
For example, let's rewrite Casper's google testing example
describe('Google searching', function() {
before(function() {
casper.start('http://www.google.fr/')
})
it('should retrieve 10 or more results', function() {
casper.then(function() {
'Google'.should.matchTitle
'form[action="/search"]'.should.be.inDOM.and.be.visible
this.fill('form[action="/search"]', {
q: 'casperjs'
}, true)
})
casper.waitForUrl(/q=casperjs/, function() {
(/casperjs/).should.matchTitle
})
})
})
npm install -g mocha-casperjs
mocha-casperjs
For the sample above you also need chai
and casper-chai
, a great assertion library and a plugin that works well with casperjs (more info below)
npm install -g chai casper-chai
Like Mocha, if you place your tests in the test
or tests
directory, it will find them and run them. You can also specify tests to run individually instead.
Note that mocha-casperjs has peer dependencies on casper and mocha, and will be installed ajacent to where you are installing mocha-casperjs (e.g. if you install mocha-casperjs globally, you'll have mocha and casperjs also installed globally).
Note that slimerjs isn't supported at the moment
Remember that your tests do not run in node.js, but whatever engine you choose from casperjs, so your language and API features will depend on that.
You need to use mocha-casperjs.bat
that will call into casperjs.exe
. Please also refer to CasperJS' Installation Instructions on Windows.
I no longer have access to a Windows box or VM to develop on, so you'll have to dig into any issues with the batch file yourselves and send a pull request. In the end it's a shell and PATH
issue and you can always call casperjs.exe
yourself.
If chai is discovered (it must be installed adjacent to mocha-casperjs), it will automatically use the should
style as well as expose expect
globally.
If casper-chai is discovered, it will be used with chai.
The selectXPath casper helper method is exposed globally as xpath
.
In addition to specifying options on the command line, you can add them to a mocha-casperjs.opts
like mocha.opts, except it looks for this file in the current directory.
--reporter
--timeout
--grep
--ui
--invert
--no-color
--slow
--bail
--require
These are all Mocha command line options that mocha-casperjs supports. Currently the default timeout is 30 seconds, not two, as writing end to end tests takes more time.
Note the CasperJS cli parser does not support shorthands or spaces between parameters. So rather than -g foo
and --grep foo
, use --grep=foo
--casper-timeout=<timeout in ms>
Set Casper's timeout. If not set, no timeout will happen. This is one overall timeout for the entire test run.
--wait-timeout=<timeout in ms>
Set Casper's waitTimeout, the timeout used by the waitFor*
family of functions. If not set, the casper default is used (as of this writting, it is 5 seconds)
--step-timeout=<timeout in ms>
Set Casper's stepTimeout, the timeout for individual steps. If not set, the casper default is used (as of this writing, no timeout is set).
--file=<file>
Pipe reporter output to the specified file instead of standard out. Use this if you have to filter out console messages from reporter output, like for json
, xunit
, etc. type of reporters. However, this only works if you the reporter uses process.stdout.write
. If it uses console.log
, mocha-casperjs cannot distinquish reporter output from test output. In that case, simply pipe the output to a file.
--mocha-path=<path>
Load Mocha from the specified path, otherwise look for it adjacent to mocha-casperjs
--chai-path=<path>
Load Chai from the specified path, otherwise look for it adjacent to mocha-casperjs
--casper-chai-path=<path>
Load casper-chai from the specified path, otherwise look for it adjacent to mocha-casperjs
Also, you can add CasperJS options to mocha-casperjs.opts
. Below are the supported options:
--user-agent
--viewport-width
--viewport-height
--client-scripts
--user-agent=<userAgent>
Sets the User-Agent
string (like Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
) to send through headers when performing requests.
--viewport-width=<pixels> --viewport-height=<pixels>
Sets the PhantomJS
viewport to custom size. Useful for testing media queries and capturing screenshots:
casper.on('load.finished', function (resource) {
this.captureSelector(screenshots_path + 'body.png', 'body');
});
--client-scripts=<file1>,<file2>
A comma seperated list of files to inject into the remote client every page load.
Any phantomjs options (use phantomjs --help
- online documentation is very old) will be passed through as-is to casperjs, which then passes them to phantomjs. Note you cannot pass them via mocha-casperjs.opts
file, as these options are only for specific options that mocha-casperjs
knows about.
You can provide your own reporter via the --reporter
flag. mocha-phantomjs will try to require
the module and load it. Some things to take note of:
--reporter=./foo
to load foo.js
that is in the current directory. CoffeeScript files can be directly required too, as phantomjs has coffeescript built in.url
, http
, etc. Refer to PhantomJS's built in modules. However, mocha-casperjs does provide a very minimalistic process
shim to PhantomJS's system
module.Mocha.reporters
. For example, Mocha.reporters.Base
.casper.start
once. casper initializes state in this call and it doesn't support being called twice. use casper.thenOpen
if you need to navigate to another page later onwaitFor
call. Mocha also allows overridding timeout per test and hook.mocha-casperjs is a big conglomeration of various ideas and approaches.
Runnable
to have every runabble be async and flush the casper tests - an approach taken from mocha-as-promised.Mocha.process.stdout
with phantom's, including formatting - an approach taken from mocha-phantomjsFAQs
Write CasperJS tests using Mocha
We found that mocha-casperjs demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CISA is discontinuing official RSS support for KEV and cybersecurity alerts, shifting updates to email and social media, disrupting automation workflows.
Security News
The MCP community is launching an official registry to standardize AI tool discovery and let agents dynamically find and install MCP servers.
Research
Security News
Socket uncovers an npm Trojan stealing crypto wallets and BullX credentials via obfuscated code and Telegram exfiltration.