Use os.networkInterfaces() to get an external IP. Also display the localhost address in case the LAN IP is not routable when visiting from localhost.
process.stderr.isTTY is not false when it needs to be. The check was doing more harm than good. Thanks to Olan Byrne for reporting this issue. http://yuilibrary.com/forum/viewtopic.php?p=33183#p33183
The AgentManager sets an interval for agent reaping every 10 seconds. If agent timeouts are < 10 seconds, then the timeout may be delayed as much as 10 seconds before the reap check happens. Reschedule the AgentManager's reap timer when an Agent requests a TTL under 10 seconds. Add a functional test for timeout behavior.
Accept a `timeout` option in createBatch and a `--timeout` option on the command line to specify an agent timeout in seconds. No longer use a `waiting` flag for agents on the capture page. Instead, the capture page now checks in with the Hub every 10 seconds which resets the server-side agent timeout. Change the server-side agent timeout to 45 seconds, up from 3.6 seconds.
The heartbeat timer is only reset when YUI Test reports a test pass or fail event. If a test fails to run any YUI Tests before the heartbeat timeout of 45 seconds, then future tests will immediately hit this timeout because the timeout is not cleared when a new test is requested. This fix causes the timer to reset when test-related files are served, which includes requesting a new test. Credit to John Traver <email@example.com> for reporting this issue.
If tested code was instrumented with YUI Test Coverage, coverage data will be passed along with test results in the agentResults event. The `./go yui` script uses the recently-added `--query` command-line option to run YUI's tests with `filter=coverage` in the query string, which triggers YUI Loader to load instrumented files. A basic line coverage percentage is displayed during testing on the command line when coverage data is available.
Instead of changing several argument lists when adding a new parameter to the Batch, use an object with expandable properties. These properties are defined in YUIDoc code comments above `Client.createBatch()`. Introduce `util.shallowClone()` on the new `util` module, which is an extension of the built-in `util`. When modifying the options object argument, copy the object first using `shallowClone` to prevent breaking API users, including our own tests.
The query option specifies a query-string parameter that will be added during testing. This is used to trigger YUI Loader to load instrumented files for code coverage, e.g. with filter=coverage. Note: router support for the query string does not exist yet, so files requested will contain the query part of the URL as the filename.