# JSCoverage
code coverage for JavaScript

## News

### September 23, 2010 - JSCoverage 0.5.1

JSCoverage 0.5.1 is available for download.

This release contains several bug fixes and improvements:

- Probably the largest change is in the documentation: the manual no longer recommends using `file:` URLs. It is recommended that an HTTP server be used instead. (See the manual for details.) The JSCoverage user interface now displays a warning when used with `file:` URLs.
- The `--verbose` option to `jscoverage` now produces better output.
- Report loading is now faster (thanks to Klaus).
- Some bugs involving augmented object prototypes were fixed.
- JavaScript instrumentation was improved to work better in non-browser environments.
- Some cases where permission errors were occurring in inverted mode were fixed (thanks to tn).
- Previously, if `jscoverage-server` was started with the option `--ip-address=A`, where A was a specific IP address, it was impossible to shut it down with `jscoverage-server --shutdown`. This should be possible now by running `jscoverage-server --shutdown --ip-address=A` from the same machine.
- The test suite has been made more robust.

### April 26, 2010 - New blog

If you would like to see some case studies showing how to use JSCoverage in practice, take a look at the new blog. This week there will be a series of articles about using JSCoverage with various JavaScript testing frameworks. The first article looks at using JSCoverage with the script.aculo.us test suite.

### April 24, 2010 - JSCoverage 0.5

JSCoverage 0.5 is available for download.

This release contains a number of new features and bug fixes:

- A new mode of operation, called "window mode", allows you to run code in a new browser window (or tab).
- Code coverage statistics can now be generated for applications based on the Mozilla platform using the `--mozilla` option (thanks to Murali Nandigama for help creating this).
- The method used to calculate overall percentage code coverage for all files has changed. Previously, the calculation was done using an unweighted average: each file's percentage code coverage contributed equally to the total, regardless of the number of lines of code in the file. Now, the calculation is done using a weighted average. This fixes bug #6 (thanks to Liu Cougar).
- Contiguous lines in the "Missing" column are now grouped together (thanks to Liu Cougar).
- The "Source" tab is no longer empty when code being tested throws an uncaught exception (fixing bug #5)
- Previously, certain uses of the `new` operator were instrumented incorrectly; this has now been fixed (thanks to Guillaume Lung).
- The `jscoverage-server` program now allows more characters in URLs (thanks to Guillaume Lung).
- The `jscoverage-server` program now handles HTTP headers with empty values (thanks to Velo).
- The `jscoverage` program now refuses to instrument code which has already been instrumented (thanks to Velo).
- URLs containing spaces now work correctly (thanks to Igor Papkov).
- Previously, on Windows, the `jscoverage` program was unable to instrument a directory in a drive root; this has now been fixed.
- Encoded URLs are now handled better in the query string.
- A limitation of 65,535 lines per file and 65,535 characters per line has been removed.
- Floating-point numbers are now handled with improved precision.
- The `jscoverage-server` program can no longer bind to the same port multiple times on Windows.
- Some bugs in `jscoverage-server`'s handling of the "chunked" Transfer-Encoding have been fixed.
- Compilation under Cygwin now uses the `-mno-cygwin` flag.
- The wire format used for submitting coverage reports for storage by `jscoverage-server` has changed. (This change will not have any visible effects for most users; it will only be of interest to those who have written code which parses that format.)

### December 11, 2008 - JSCoverage 0.4

JSCoverage 0.4 is available for download.

This release includes many new features:

- The new `jscoverage-server` program is provided as an alternative to the `jscoverage` program. The `jscoverage-server` program is a simple HTTP server which instruments JavaScript code as it is served; this allows you to execute JavaScript and gather code coverage statistics without a preliminary step of creating instrumented code. The `jscoverage-server` program can either serve files directly from the filesystem or run as a proxy server (with the `--proxy` option), instrumenting JavaScript provided by another web server.
- Using `jscoverage-server`, coverage reports can now be stored to the filesystem.
- JSCoverage now recognizes special JavaScript comments which specify that certain lines of code should be ignored in coverage reports.
- The new `--encoding` option provides better support for different character encodings.
- The JSCoverage user interface is now faster and more responsive.
- The new `--no-highlight` option can be used to disable syntax highlighting (giving better performance for large JavaScript files).
- The build system has been modified so that `make install` only installs the `jscoverage` and `jscoverage-server` executables and their manual pages. (Previous versions installed SpiderMonkey library and executable files, which could conflict with other versions of SpiderMonkey installed on your system.)
- JSCoverage now supports several features beyond those found in the ECMAScript Language Specification, including the following:
  - getters and setters
  - `for each` loops
  - generators and iterators
  - the `let` keyword
  - destructuring assignment
  - array comprehensions
  - expression closures
  - generator expressions
  Use the new `--js-version` option to enable these features.

The GCC C++ compiler (`g++`) is now required to compile JSCoverage. (Previously, only the C compiler was needed.)

Please report any bugs you find using the new bug tracker.

### March 31, 2008 - JSCoverage and Firefox 3

The JSCoverage FAQ has been updated to address problems using JSCoverage with Firefox 3.

### March 24, 2008 - JSCoverage in Debian GNU/Linux

JSCoverage is now available in the Debian unstable distribution.

### November 22, 2007 - JSCoverage 0.3.1

JSCoverage 0.3.1 is available for download.

This release has a number of bug fixes:

- It should now be possible to run the native Windows version of `jscoverage` with minimal privileges.
- All files used by JSCoverage now use a `jscoverage` prefix to avoid name collisions.
- Compilation bugs which occurred under some versions of MSYS have been fixed.
- Various documentation improvements.

### August 26, 2007 - JSCoverage 0.3

JSCoverage 0.3 is available for download.

This release has the following new features:

- The coverage summary now displays bar graphs (thanks to Ross Simpson).
- A progress bar is displayed for lengthy computations.
- JavaScript syntax highlighting has improved.
- The display of missed statements can be turned on and off.
- New "inverted mode" provides better support for working with JsUnit.

### August 23, 2007 - JSCoverage in Linux Format magazine

JSCoverage is in the October 2007 issue of Linux Format magazine (table of contents).

### July 31, 2007 - Subversion repository now available

See the download page for instructions on accessing the Subversion repository.

### July 8, 2007 - JSCoverage 0.2

JSCoverage 0.2 is available for download.

JSCoverage 0.2 features a new tabbed user interface.

### July 1, 2007 - JSCoverage 0.1.1

JSCoverage 0.1.1 is available for download.

JSCoverage 0.1.1 fixes a bug that can cause large JavaScript files to be truncated when viewed with Opera.

### June 15, 2007 - documentation of JSCoverage internals

A new document, Parsing JavaScript with SpiderMonkey, describes the technique used by JSCoverage to parse JavaScript programs.

### May 30, 2007 - new examples

Added some examples of running JSCoverage on popular JavaScript libraries.

### May 26, 2007 - JSCoverage 0.1

JSCoverage 0.1 is available for download.