Skip to content

Releases: theintern/intern

3.2.0

08 May 03:21
Compare
Choose a tag to compare

Release overview

  • Dependency updates
  • Grunt enhancements
  • New instrumenterOptions property

Thanks to everyone who contributed code and bug reports, and special thanks to Ai Squared for their continued support!


Enhancements

  • The grunt task now understands a nodeOptions option; this allows Node.js options to be passed to the Intern process started by grunt ((#604)
  • The Pretty reporter no longer displays the coverage table when there's no coverage data (#609)
  • Intern now handles string values of excludeInstrumentation, such as from the command line (#577)
  • Intern understands an instrumenterOptions config property that allows configuration of the instrumenter. The coverageVariable option may now be specified as a property of instrumenterOptions. (#616)
  • New documentation has been added about debugging functional tests (#608)
  • Update Leadfoot dependency to 1.6.7 for improved Microsoft Edge support and other fixes
  • Update Dig Dug dependency to 1.4.1 to improve compatibility with Node 6 and update the default BrowserStack endpoint

Bugfixes

  • Fix incorrect loader typing data in intern.d.ts (#612)
  • ReporterManager now creates parent directories for output files.(b8b979a)

Install from npm

cd /my/project/root
npm install intern --save-dev

Download source

3.1.1

05 Apr 14:28
Compare
Choose a tag to compare

Release overview

  • Bug fixes

Bug fixes

  • Fix a regression where suites and functionalSuites could not be null (#600)

Install from npm

cd /my/project/root
npm install intern --save-dev

Download source

3.1.0

01 Apr 20:15
Compare
Choose a tag to compare

Release Overview

This release includes a number of new features and dependency updates, as well as an update to improve how Intern works with npm.

Thanks to @alekstorm, @Arnavion, @bartoszkaczorek, @jacobroufa, @jrgm, @JSMike, @kitsonk, @LingSpb, @rodneyrehm, and @sholladay for their contributions.

Special thanks to @sholladay and Ai Squared for sponsoring the new features in this release!


New features

  • Suite globbing -- The suites and funtionalSuites config properties may now contain glob expressions, such as tests/unit/foo/*. This feature works in both node and browser environments. When globs are used in a browser, tests must be served by the Intern proxy. (#359)
  • Improved async support for Suite -- An async function may now be called in suite lifecycle methods as this.async([timeout]). Like the async method in tests, it can be used to set a timeout for the async operations, and it returns an augmented Deferred object with callback and rejectOnError methods. (#289)
  • Fail fast support -- When the bail config option to true, Intern will skip all remaining tests after a failed test. This applies to both unit and functional suites. (#413)
  • Suite skipping -- Suites now have a skip method that works like the existing Test#skip. Calling it from a Suite lifecycle method, or from within a test (as this.parent.skip([reason])) will cause all remaining tests in the suite, and any sub suites, to be skipped. (#386)

Enhancements

  • Update Dig Dug dependency to 1.4.0
  • Update Leadfoot dependency to 1.6.6. This version improves compatibility with WebDriver servers that use traditionally-cased headers or use redirection when establishing a session.
  • Update dojo dependency to 2.0.0-alpha.7. This improves compatibility with IE 9.
  • Updated chai dependency to 3.5.0
  • Intern's AMD dependencies that need to be browser-accessible are now linked into browser_modules rather than node_modules. This lets Intern work with npm shrinkwrap, and prevents warnings about extraneous packages during npm install . (#586)

Bug fixes

  • Schema-less baseUrl's are now properly handled. (e.g., '//localhost')

Documentation updates


Install from npm

cd /my/project/root
npm install intern --save-dev

Download source

3.0.6

01 Oct 22:38
Compare
Choose a tag to compare

Release overview

  • Bug fixes

Bug fixes


Install from npm

cd /my/project/root
npm install intern --save-dev

Download source

3.0.5

29 Sep 01:57
Compare
Choose a tag to compare

Release overview

  • Bug fixes

Bug fixes

  • Tests that are skipped by grep are now correctly reported as being skipped. (d732da3)
  • The Runner reporter now clears the end of the line when reporting tunnel status messages, to avoid displaying confusing garbage from the previous message. (bbbad08)
  • Other bug fixes from Leadfoot 1.6.3.

Install from npm

cd /my/project/root
npm install intern --save-dev

Download source

3.0.4

25 Sep 08:45
Compare
Choose a tag to compare

Release overview

  • Bug fixes

Bug fixes

  • Setting waitForRunner to 'fail' now only waits on fail, instead of acting the same as setting the value to true. (#502)
  • Any suite error now correctly causes Intern to exit with a non-zero status. (#498)
  • Installation on Windows using npm 3 as a non-elevated administrator is now possible. (#500)
  • Code coverage analysis now works correctly when basePath is relative. (#492)
  • Other bug fixes from Leadfoot 1.6.1 and 1.6.2.

Install from npm

cd /my/project/root
npm install intern --save-dev

Download source

3.0.3

16 Sep 19:39
Compare
Choose a tag to compare

Release overview

  • Bug fixes

Bug fixes

  • The test runner will no longer hang when no environments are specified (really). (#487)
  • Reporters from the configuration file are no longer loaded when reporter overrides are specified. (The most frequent result of this bug was an error “Cannot find the Node.js require”.) (#491)

Install from npm

cd /my/project/root
npm install intern --save-dev

Download source

3.0.2

10 Sep 08:03
Compare
Choose a tag to compare

Release overview

  • Bug fixes

Bug fixes

  • A single environments option can now be specified from a Gruntfile or on the command line. (#486)
  • The test runner will no longer hang when no environments are specified. (#487)
  • Using loaderOptions no longer causes Intern to crash in Node 0.10. (#489)
  • Absolute URLs to in the loaders configuration is now correctly loaded as-is, instead of attempting to be loaded relative to the basePath. (#485)

Install from npm

cd /my/project/root
npm install intern --save-dev

Download source

3.0.1

02 Sep 04:34
Compare
Choose a tag to compare

Release overview

  • Bug fixes

Bug fixes

  • The args, mode, and config properties of the intern/main module are now correctly populated after a loader swap. (#450)
  • capabilities.name is no longer incorrectly overridden when it has been explicitly specified. (#461)
  • Various path resolution issues on Windows have been resolved. (#455, #459, #405)
  • Various ANSI rendering issues on Windows have been resolved. (#454, bd02216)
  • The test system will no longer hang when too many out-of-order messages are sent by the client when waitForRunner is disabled. (#466)
  • The test runner will no longer hang at startup when functionalSuites is left undefined. (#480)
  • The test runner will no longer crash when receiving a suiteError message. (#476)
  • Fixed a typo in the Runner reporter. (a8ef08c)
  • Config setup and teardown methods now run correctly when loading the test runner in Proxy Only mode. (#464)
  • Test objects are now accessible from beforeEach and afterEach lifecycle methods when using the object, TDD, and BDD test interfaces. (#342)
  • Test suites with very large numbers of tests will no longer cause Selenium to incorrectly reset the unit test system in the middle of loading test modules. (#466)

Install from npm

cd /my/project/root
npm install intern --save-dev

Download source

3.0.0

29 Jul 21:29
Compare
Choose a tag to compare

Release overview

👾 Please report any bugs or regressions you encounter with this release!

  • End of support for IE8 and earlier
  • Improved ES6 support
  • New executors API
  • Configurable reporters
  • New QUnit-compatible interface
  • New TypeScript ambient declarations
  • Test timeout improvements
  • Test lifecycle improvements
  • Bug fixes

Special thanks to @andyearnshaw, @apsdehal, @devpaul, @jason0x43, @kitsonk, @leohuber, @nicknisi, @plumlee, @sholladay, and @vladikoff for their code contributions!

Additional thanks to @Arnavion, @bartoszkaczorek, @devpaul, @JamesMGreene, @kitsonk, @mambocab, @mgingras, @nwhite89, @pocesar, @samplesizeofone, @sholladay, @stdavis, @treasonx, @vladikoff, @williamrjribeiro, and @wkeese for submitting tickets that were addressed in this release!


Backwards-incompatible changes

Here are the most common changes that need to be made when upgrading to Intern 3:

  • The new basePath configuration option takes the place of the old loader.baseUrl property. Nominally, this means that you’ll simply move a path from loaderOptions.baseUrl to basePath. loaderOptions.baseUrl should be unset (or changed to whatever you want, now that it can be set independently!). If you never used baseUrl before, you don’t need to change anything.

  • The built-in reporters should now be addressed using an upper-case first letter (e.g. 'Console' instead of 'console'). The test system will warn you about deprecated reporter naming.

  • The following configuration options have been renamed for clarity and consistency:

    • useLoaderloaders
    • loaderloaderOptions

    The test system will warn you about deprecated configuration option usage.

  • excludeInstrumentation paths are now normalized to always use forward-slashes regardless of OS. Windows users using backslashes with this configuration option should update to use forward-slashes.

  • For users upgrading from Geezer, calls to this.get('remote') need to change to this.remote. Any other calls to get Test or Suite properties also change similarly (from this.get('property') to simply this.property).

  • The paths to loaders in loaders are now relative to the basePath instead of relative to the default working directory, so these paths may need to be adjusted slightly if you are using a custom loader.

Other known backwards-incompatible changes that won’t affect most users:

  • The future is now, so IE8 and earlier are no longer officially supported as targets for unit testing. Intern 2 will continue to work if you need to run tests in these dead browsers, or you may engage SitePen to create intern-geezer 3.
  • Individual test timeouts are now inherited from their parent suites instead of from Test.prototype.timeout. If you were setting a global test timeout using Test.prototype.timeout, use defaultTimeout instead.
  • In order to allow Test runs to be repeatable, the skipped property of a test can no longer be set before calling test.run to prevent the test function from running.
  • Using the intern!object interface, a test named “timeout” is no longer allowed. (The timeout property has changed to define the timeout for all tests in a given test suite.)
  • beforeEach and afterEach are no longer executed when a test is skipped with grep. If you were relying on these functions being executed for skipped tests, please open a ticket.
  • Intern now uses a Promises/A+-compatible Promises implementation. If you were using Intern Promises directly and relied on the immediate invocation properties of resolved promises (this would be unusual), some of your code may execute in the wrong order. Promise callbacks are now guaranteed to execute on the next turn through the event loop.
  • The Deferred object created by this.async no longer has then, otherwise, or always methods; if you were using these methods, use dfd.promise.then, dfd.promise.catch, and dfd.promise.finally, respectively.
  • The Promise object created by this.async no longer has otherwise or always methods; if you were accessing these methods, use catch and finally, respectively. Note that the behaviour of finally is different from the behaviour of always: if the callback passed to finally does not throw or return a value other than undefined, the value will be passed through from the earlier promise. This matches more closely the way finally works in JavaScript itself.
  • The order of certain reporter events is now slightly different. For example, the tunnelStart event is not emitted until after the tunnel is successfully started, whereas in Intern 2 it was emitted before attempting to start the tunnel.
  • There is no longer a main suite called 'main'. Instead, there are one or more root suites whose names are null. Reporters that were using /suite/end and testing on suite.name to find the root suite can typically be switched to use the runEnd event instead and look at executor.suites for the list of root suites.
  • The name of the remote environment from the environments configuration property is now added to all test IDs when running the test runner (e.g. 'internet explorer 11 on WIN8.1').
  • The JUnit reporter outputs to stdout by default. Use { id: 'JUnit', filename: 'report.xml' } to restore the previous behaviour.
  • The following configuration options have been removed:
    • autoRun → return a Promise from a before function in the configuration file
  • suite.environmentType has been removed; use suite.remote.environmentType instead.
  • Various properties have been moved away from the intern/main object:
    • configexecutor.config
    • maxConcurrencyexecutor.config.maxConcurrency
    • suitesexecutor.suites
    • tunnelexecutor.tunnel
    • grepexecutor.config.grep
  • Any custom interface that registers suites directly with Intern needs to change to use intern.executor.register instead of intern.suites. Read the custom interfaces documentation for more information.

New features

  • Reporters have a new API and are now more testable and configurable. Custom reporters using the old style continue to be supported until 4.0, but are deprecated and should be updated to conform to the new API. (#141, #257)
  • Test “executors” have been introduced. These objects represent the entire Intern testing lifecycle. They can be loaded and called directly from other JavaScript programs, and are customisable so you can make Intern conform to your preferred testing workflow. (#373)
  • A new QUnit-compatible test interface has been introduced. Got a bunch of tests already written in QUnit? Just wrap them with define([ 'intern!qunit' ], function (QUnit) { /* tests go here */ }); and you’re done! (#383)
  • Intern is now bundled with TypeScript definitions for better integration with TypeScript. (Note: due to limitations in TypeScript not all APIs are currently modelled.) (#318)

Enhancements

  • The reporter used when the test runner executes unit tests in browsers (the WebDriver reporter) can now be configured with the new runnerClientReporter configuration option. The new configuration options allow the normal HTML rendering to be prevented, and to allow other reporters running on the server to pause unit test execution (for e.g. screenshots). (e4b56b9)
  • Early test run failures are now reported visibly, so you don’t have to guess why your tests aren’t loading. (#230)
  • Reporters can now pause test execution by returning promises. This allows reporters to interact with the environment to collect any extra information that needs to be reported before/after tests, like screenshots. (#368)
  • Suite lifecycle methods beforeEach and afterEach are now passed a reference to the current Test object. (#342, #369, 0450494)
  • The loader’s baseUrl property is now separate from the test system’s basePath property, so you can specify the base path for your test environment independently from the loader’s baseUrl configuration. (#249)
  • Instrumented code is cached by the instrumenting proxy during test runs, improving test runner performance. (ab03be3)
  • The new defaultTimeout configuration property specifies the default timeout for all tests in a test run. (#350)
  • The new Test#restartTimeout method allows a timeout limit to be restarted on long-running asynchronous tests. (33555ad)
  • Timeouts can now be configured on a per-suite basis by setting this.timeout inside a suite function (using TDD/BDD interfaces), or by setting the timeout property on a suite object (Object interface). (#342, #350)
  • TypeScript ambient declarations are now bundled with Intern. (#318)
  • beforeEach and afterEach are no longer executed when a test is skipped with grep. (#298)
  • Cancelling a test run with SI...
Read more