One of Intern’s goals has always been to make writing high-quality tests easier, but running those tests hasn’t always been straightforward. Now there‘s a new way to run Intern tests — intern-cli. This package provides an
intern command that has a POSIX-like interface, using familiar flags and options like
--help. It follows some conventions that make running Intern simpler, and provides plenty of inline help. It even makes getting started with Intern easier with a new
First things first — you can install intern-cli using npm:
$ npm install -g intern-cli
Note that unlike a normal Intern install, we’re installing intern-cli globally. This is similar to how other popular npm-based dev tools work; the command-line interface is installed globally, and the tool itself will be installed in a project.
Now to try it out!
$ cd ~/tmp/new_project $ intern You'll need a local install of Intern before you can use this command. Install it with npm install --save-dev intern $
Ok, we weren’t quite ready yet. Intern must be locally installed in a project before you can use intern-cli.
Better! With no options or commands, intern-cli displays its top-level help menu. It provides three commands:
run command is just a convenience for running Intern’s Node.js client or WebDriver runner (
serve commands are new, though.
init command bootstraps a testing environment for a project. It creates a
tests/ directory and populates it with a default test config and example functional and unit tests.
$ intern init Intern initialized! A test directory containing example unit and functional tests has been created at tests/. See tests/intern.js for configuration options. Run the sample unit test with `intern run`. To run the sample functional test, first start a WebDriver server (e.g., Selenium), then run `intern run -w`. The functional tests assume chrome is installed. Note that running WebDriver tests with Chrome requires ChromeDriver to be available in the system path. See https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver for more information. $ tree tests tests ??? functional ? ??? hello.js ? ??? page.html ??? intern.js ??? unit ??? hello.js
At this point we can actually run tests. To do that, use the
run command. By default this command will use Intern’s Node.js client. While
intern-runner require that a test config be specified,
intern assumes the test config is at
tests/intern.js, so a simple
intern run command will suffice:
$ intern run PASS: hello - hello world (1ms) 0/1 tests failed 0/1 tests failed
That was neat, but what about tests that need a browser? One option is to use Intern’s WebDriver runner by passing a “-w” option to the
run command. Assuming a Selenium server is running and Intern is configured to use it, this will tell Intern to start a browser and run unit and functional tests. However, intern-cli provides another option for running unit tests in a browser with its
intern serve will start Intern’s test proxy server, which is basically a static web server with some additional functionality, and display a URL that you can open in a browser to run unit tests using Intern’s browser client.
Listening on 0.0.0.0:9000 To run unit tests, browse to: http://localhost:9000/node_modules/intern/client.html?config=tests/intern.js Press CTRL-C to stop serving.
serve command also accepts a
-o option. When this option is provided, intern-cli will open the default system browser automatically after the server starts. This makes running browser-based unit tests as easy as running tests in the Node.js client.
The initial version of intern-cli was sponsored by Ai Squared. If you or your company find Intern or intern-cli useful, consider supporting ongoing development of these tools with a similar sponsorship to add features and fixes you’d like to see! Just send us an email letting us know of your interest and we’ll set up a call to talk you through the process and what you can expect.
Let’s talk about how we can help your organization improve their approach to automated testing.
Have a question? We’re here to help! Get in touch and let’s see how we can work together.