The list of updates planned for Intern 5 is still being determined, but a few things are already known or in progress. As this is a major release there will be a few breaking changes, but we hope to keep those to a manageable level.
You can track Intern 5's development on the project board.
Simplifying development
Intern’s development has been relatively slow for the last few months. A big part of that is maintenance overhead and organization. Intern has more projects than it has people regularly working on it, and keeping up with them was slowing down the development process. A big behind-the-scenes part of the next release therefore involves simplifying the development and maintenance process. We want any potential contributors, including ourselves, to be able to easily setup a full Intern dev environment, make changes, and run tests.
One part of this is consolidating the code base. The core Intern projects (Leadfoot, Dig Dug, and the cli) are all being pulled back into the main Intern repository. These three projects were originally part of a single code base, and have always been closely dependent. Having them together makes development and testing new features much simpler. The non-Intern repositories are being deprecated; while they’ll still receive bug fixes, they may not receive new features, and any new feature requests should come through Intern’s issue tracker. That’s not to say that standalone Dig Dug and Leadfoot are necessarily finished, but future releases would be generated from the code in the Intern repository rather than from separate repositories.
New features
There are a lot of things we want to do with Intern, much more than will fit into the next release (well, assuming we want to actually get the next release out the door). A discovery process is ongoing (take a look at the list in #1080, and feel free to make suggestions!). A few of the more significant features we plan to include are:
Watch mode (#1020), at least a basic version
Some ability to re-run an executor (#919, #803)
A new command line experience (#1022)
Other big features that may make it in include:
A tunnel class for directly managing webdriver binaries (#1072, aka no more Selenium!)
Parallelization (#546)
Once we’ve finished the discovery process we’ll have a firmer idea of what new features will be included.
Other improvements
Along with adding new features, we also want to improve Intern’s existing functionality and fix some annoyances.
Clean up the public API; don't require users to import deep paths for common things like test interfaces (#1041)
Focus on modern ES6 in documentation and examples; less with the intern global, more with import (#1041, #1088)
Improve the consistency of the configuration system (e.g., the rules around property merging, #1041)
Improve the reporting system with easier to access options, fewer redundant reporters, and better default output (#1023)
Improve support for the W3C webdriver standard (#1046)
Use standard Promises everywhere. The plan is to provide the existing chainable Command API and a similar API based on standard Promises, and to focus on standard promises and async/await going forward. (#1041, #1046, #1018)
Breaking changes
As we work to improve Intern, some of the changes may not always be backwards compatible. Breaking changes will include:
Changed export paths. As part of cleaning up the API, some module locations will change.
Changed configuration options. Some options will be renamed or restructured to improve configuration consistency. In general we'll deprecate existing config options rather than removing them entirely.
Switch to native Promises. Async APIs will switch from custom Task and CancellablePromise classes to native Promises.
The list of updates planned for Intern 5 is still being determined, but a few things are already known or in progress. As this is a major release there will be a few breaking changes, but we hope to keep those to a manageable level.
You can track Intern 5's development on the project board.
Simplifying development
Intern’s development has been relatively slow for the last few months. A big part of that is maintenance overhead and organization. Intern has more projects than it has people regularly working on it, and keeping up with them was slowing down the development process. A big behind-the-scenes part of the next release therefore involves simplifying the development and maintenance process. We want any potential contributors, including ourselves, to be able to easily setup a full Intern dev environment, make changes, and run tests.
One part of this is consolidating the code base. The core Intern projects (Leadfoot, Dig Dug, and the cli) are all being pulled back into the main Intern repository. These three projects were originally part of a single code base, and have always been closely dependent. Having them together makes development and testing new features much simpler. The non-Intern repositories are being deprecated; while they’ll still receive bug fixes, they may not receive new features, and any new feature requests should come through Intern’s issue tracker. That’s not to say that standalone Dig Dug and Leadfoot are necessarily finished, but future releases would be generated from the code in the Intern repository rather than from separate repositories.
New features
There are a lot of things we want to do with Intern, much more than will fit into the next release (well, assuming we want to actually get the next release out the door). A discovery process is ongoing (take a look at the list in #1080, and feel free to make suggestions!). A few of the more significant features we plan to include are:
Other big features that may make it in include:
Once we’ve finished the discovery process we’ll have a firmer idea of what new features will be included.
Other improvements
Along with adding new features, we also want to improve Intern’s existing functionality and fix some annoyances.
intern
global, more withimport
(#1041, #1088)Breaking changes
As we work to improve Intern, some of the changes may not always be backwards compatible. Breaking changes will include: