Meet your newest Intern

By on May 1, 2013 9:10 am

The Intern

JavaScript tooling has gained a huge amount of attention over the past few years, no doubt due to the language’s rapidly increasing popularity and maturity. Many fantastic utilities and powerful debuggers have emerged to help close painful gaps for Web developers, but despite these advancements, high-quality JavaScript testing is still notably absent.

Up to this point, JavaScript authors have had to pick and choose testing tools with incredibly fragmented feature sets. Whereas one tool might support easily running tests manually in many browsers, another might allow command-line automation but only use PhantomJS. A third might be designed to integrate with a continuous integration service, where a fourth might support none of that but allow you to emulate true browser events from outside the JavaScript sandbox. One might have so many plugins that it’s impossible to figure out which ones to use, whereas another might be so inflexible that adding any new features is impossible. It’s a mess.

Intern, from SitePen Labs, is different. It combines all the best features from various testing tools (plus a few new ones of our own) into a single, versatile, easy-to-use, standards-based browser testing stack for JavaScript. We’ve been using this testing framework internally for a while with great success and are really excited to be able to make this level of JavaScript testing available to the entire Web community.

For more information on Intern’s features, usage examples, and documentation, please visit the Intern Web site. If you just want to get started straight away, take a look at the quick start guide. We’ll be making an npm package available very soon to make getting started even easier. Bug reports and feature requests can be posted to the GitHub issue tracker. If you have any other questions, we’re here to help! Free end-user support is currently available via Stack Overflow. SitePen also offers commercial JavaScript support if you need a little extra TLC.

Please let us know in the comments how Intern can work better for you, so you can focus on delivering high-quality code while the Intern does the testing. Happy coding!


  • how is your stuff better than mocha ( )?

  • You can check out the comparison table at for a high level comparison to other frameworks including Mocha.

  • bod.zak

    That really says it all, it’s an all in one fully featured testing stack and I can’t see any comparison to other “frameworks”
    Honestly, well done getting this out

  • Eric Elliott

    Looks interesting. Spreading the word…

  • Wow looks good. I will git this a try later.

  • Wow! This looks great. Will surely try it.

  • We need a getting started, in depth tutorial. Doc’s are not enough yet. Thanks!

  • BigAB

    This looks to be exactly what I need and have been waiting for… too bad I wasted a whole Saturday trying to get it to work. But unfortunately nothing quite works “right”, the examples all needed tweaking to make work, I still haven’t been able to get it to connect to sauce labs, or actually run selenium tests locally, but it all comes so close to working I figure it could be me doing something wrong.

    I guess I’ll have to wait until more “Getting Started with Intern” tutorials come out. Pity, it looked so promising, I wanted to be the guy writting those blog posts.

  • Interesting ~~~

  • Promising. Our team got a deep introduction on BusterJS by Christian Johansen himself (a great testing platform by the way) and looked a bit at Jasmine, but we’ll definitely be giving Intern a go.

  • CasperJS only tests with PhantomJS, which means you aren’t actually testing in real browsers and aren’t going to discover real bugs caused by differences in the browsers end-users actually use to run your app.

  • Which step of the quick start did you get stuck on? Knowing that will help us focus our documentation efforts.

  • Which examples were you using that didn’t work without tweaks?

  • Hi I attempted to get this up an running tonight. A few questions that could help with documentation.

    Using a basic module I attempted to test it using jasmine. I gave up on this and rewrote the tests in chai.

    I’m not sure exactly how to view my test coverage in istanbul, do I need to use the lcov reporter?

    I haven’t got around to running the tests with selenium yet, just using the console reporter. Do I have to write my own reporter for something better then the console reporter? Is there some way to have a watcher so this quickly updates to make BDD more efficient?

    Hope these questions are relevant, Thanks.

  • gilbert beveridge

    It seems like your suggesting that testing isn’t a pleasurable activity and that one should make an unpaid, lowly, assistant do this kind of work. Work that is above a developer’s pay-grade. I realize that the name is tongue in cheek. But I thought I would let you know that it could be perceived as a degrading chide to the testing professional. Just a consideration. Otherwise exciting work!


    Fantastic work. Question though, why did you opt for instead of the Selenium provided ?

  • 1. Currently, you will only receive code coverage results if you are using the test runner via Selenium. Watch for updates to client.js code coverage support.

    2. It is hard to objectively decide what reporter would be “better” than console reporter. The answer to that depends upon what you prefer to see in your output. The best way to get exactly what you want is to write your own reporter.

    3. There are no plans to add a watch mechanism at this time, but you can always make a request in the issue tracker for such a feature.

    An improved tutorial will be released shortly that should provide better guidance. You can see it in-progress at

  • At the time of evaluation, WebDriverJS didn’t provide a huge portion of the WebDriver protocol (none of the touch APIs, for example). It might now, but WD.js is serving our needs well enough that I haven’t felt any need to re-evaluate the underlying library.

  • Rick Graham

    you give us the code base, and an example object…but how to tie them together is a little elusive. do we have a server to setup? should I use a pyhton http simple server? what goes where? do I need to build up an index.html to get started? I have no idea.

  • Bruce Holm

    Will it work with Jenkins for CI? Any tips/tutorials available on how?

  • Yes, you should be able to use Jenkins; no, we do not currently have any tutorials available about how to do so. Since running Intern just involves executing a single command, my understanding is that you just add the runner command as a normal command to run in “Execute shell”.

  • Gaurav Ramanan

    My company and I have been long time users of Dojo and we were just getting the handle on DOH (Dojo Objective Harness). SitePen is definitely one of the front runner companies when it comes to Dojo.

    Does the release of theintern mean the end of support for DOH (and the very useful DOH Robot / DOH Recorder) ?

  • Wayne

    well, i’ve already looked at casperjs, wd.js, spookyjs, selenium-webdriver.js, (webdriver.js), zombie.js, etc. I’m game for one more, but I am beginning to fatigue! lol

    Any appium support planned?

  • Appium uses the same WebDriver API, so it already works with Intern.

  • Pingback: Dojo Automated Testing Improvements: Updating to Intern | Blog | SitePen()