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.