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.
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>
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.
- The HTML reporter now supports collapsible suites, making it easier to find failing tests in large test runs.
- The test proxy server now creates
proxyUrlusing the current value of
proxyPort. This saves the user from having to specify both property values just to change
- The TeamCity reporter now uses test and suite names rather than complete IDs.
SeleniumTunnelnow 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.
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.