Today we’re pleased to announce the release of Intern 3.4. This release brings usability enhancements and bugfixes, including a new benchmarking mode! We’ve outlined some of the features below, but as always, visit the release notes for more details.

A number of contributors made this release possible. Thanks to all of them for their code and issue submissions. We’d especially like to thank Mozilla Open Source Support for their sponsorship of the performance benchmarking functionality.

Benchmarking

The most significant addition to Intern 3.4 is support for performance benchmarking. Intern can now record performance data from individual benchmark tests and then use that information in the future to verify the application’s performance. More information is available from the Benchmark testing section found in the Intern user guide.

Error stack filtering

Intern now understands a new filterErrorStack config option. When this flag is set to true in an Intern config, stack trace lines for non-application code will be pruned from error messages. This can make identifying the source of a problem much simpler, especially in functional tests (which can have very long stack traces due to Promise chaining).

Whereas before you might see an error like this:

UnknownError: [GET .../text] Element reference not seen before: %5Bobject%20Object%5D
  at runRequest  <node_modules/leadfoot/Session.js:88:40>
  at <node_modules/leadfoot/Session.js:109:39>
  at new Promise  <node_modules/dojo/Promise.ts:411:3>
  at ProxiedSession._get  <node_modules/leadfoot/Session.js:63:10>
  at Element._get  <node_modules/leadfoot/Element.js:23:31>
  at Element.getVisibleText  <node_modules/leadfoot/Element.js:199:21>
  at Command.<anonymous>  <node_modules/leadfoot/Command.js:680:19>
  at <node_modules/dojo/Promise.ts:393:15>
  at run  <node_modules/dojo/Promise.ts:237:7>
  at <node_modules/dojo/nextTick.ts:44:3>
  at Command.target.(anonymous function) [as getVisibleText]  <node_modules/leadfoot/Command.js:674:11>
  at Test.check contents [as test]  <tests/functional/hello.js:21:6>
  at <node_modules/intern/lib/Test.js:191:24>
  at <node_modules/intern/browser_modules/dojo/Promise.ts:393:15>
  at runCallbacks  <node_modules/intern/browser_modules/dojo/Promise.ts:11:11>
  at <node_modules/intern/browser_modules/dojo/Promise.ts:317:4>
  at run  <node_modules/intern/browser_modules/dojo/Promise.ts:237:7>
  at <node_modules/intern/browser_modules/dojo/nextTick.ts:44:3>
  at _combinedTickCallback  <internal/process/next_tick.js:67:7>

With filterErrorStack, you’ll see this type of error:

UnknownError: [GET .../text] Element reference not seen before: %5Bobject%20Object%5D
  at Test.check contents [as test]  <tests/functional/hello.js:21:6>

Support for CrossBrowserTesting

Through Dig Dug, Intern now supports the CrossBrowserTesting (CBT) cloud testing service with the CrossBrowserTestingTunnel class. This tunnel provides the same features as the existing tunnel classes, but there are a few configuration differences that users need to note. Read more about the CrossBrowserTestingTunnel in the Dig Dug docs.

Other updates

  • The HTML reporter now supports collapsible suites, making it easier to find failing tests in large test runs.
    collapsed_and_failed
  • The test proxy server now creates proxyUrl using the current value of proxyPort. This saves the user from having to specify both property values just to change proxyPort.
  • The TeamCity reporter now uses test and suite names rather than complete IDs.
  • SeleniumTunnel now supports Selenium 3.x.
  • Intern’s TypeScript typings have been updated to better support TypeScript 2. Intern now uses official chai and Node typings, and exports its typings in its package.json. TypeScript 2 will now automatically discover Intern’s typings with no additional configuration required.

See the release notes for a complete list of details.

Related projects

Along with Intern, the Dig Dug and Leadfoot projects have both been updated. Dig Dug 1.6 includes support for the CrossBrowserTesting cloud service, as well as a utility command to make discovering service environments easier. Leadfoot 1.7 improves general support for MS Edge, Firefox 49+, and WebDriver in general.

Looking to the future

Intern 3.4 will likely be the last minor release in the 3.x series, but we have great things planned for Intern 4! A significant behind-the-scenes change will be porting the codebase to TypeScript. This will make future development easier, and will also help us create a more robust external API for Intern. We’re also working to improve Intern’s support for non-AMD code, making Intern an excellent choice for projects using CommonJS, AMD, and ES6 modules.