Skip to content


Subversion checkout URL

You can clone with
Download ZIP
ECMAScript 5/6 compatibility tables
HTML JavaScript CSS
Branch: gh-pages
Failed to load latest commit information.
es5 Added a 'strict' result value alongside 'flag'.
es6 Added Typed Array 'correct prototype chain' subtest.
es7 Added a 'strict' result value alongside 'flag'.
esintl Added a 'strict' result value alongside 'flag'.
non-standard Added a 'strict' result value alongside 'flag'.
strict-mode Fix mixed content issues
.gitignore Add ES5 compiler support to `build.js`
.jshintrc Trigger travis
.travis.yml Use Travis CI container based infra for faster build
LICENSE Add MIT license Updated regarding the ES6 significance ratings.
build.js Added 'tiny' weighting, new results, and adjusted a few weightings.
data-es5.js Fixed 'Show Obsolete Browsers' yet again.
data-es6.js Added Typed Array 'correct prototype chain' subtest.
data-es7.js Added function.sent to ES7 table.
data-esintl.js Update Intl results for Microsoft Edge
data-non-standard.js Updated Firefox non-standard results, and fixed one ES6 result.
index.html Add redirect
master.css Added 'tiny' weighting, new results, and adjusted a few weightings.
master.js Added 'tiny' weighting, new results, and adjusted a few weightings.
node.js Merge branch 'kangax/gh-pages' into gh-pages
package.json [core-js] Update dependence

ECMAScript 5/6/7/non-standard compatibility tables


Bitdeli Badge

Editing the tests

Edit the data-es5.js, data-es6.js, data-es7.js, or data-non-standard.js files to adjust the tests and their recorded browser results. Run node build.js to build the HTML files from these JavaScript sources.

The ES6 tests themselves should be written in pure ES3, except for the sole ES6 feature being tested (as well as any ES5 features strictly required to use the ES6 feature). The test code is placed in multi-line comments (as in this hack), so that Node/io.js can parse the data scripts without throwing syntax errors when encountering features it does not support. The build.js script will wrap the code in an eval call inside a try, so the tests themselves do not need to catch errors that non-supporting platforms may throw.

The ES6 tests have a significance rating, which affects how a platform's total support percentage is calculated. A test rated "large" (representing a landmark, transformative feature) is worth 1, one rated "medium" (representing a significant feature that's less universally useful, or is primarily connected to another feature) is worth 0.5, and one rated "small" (representing a useful but subtle improvement from ES5) is worth 0.25.

In order to test compilers

Run npm install to install the compilers under test (and remember to npm update them frequently). Then run node build.js compilers to create compiler test pages under es6/compilers. Currently only the ES6 tests produce compiler test pages. Open the compilers' HTML files in a browser with close to zero native ES6 support, such as Internet Explorer 9 (although its lack of support for strict mode will cause some tests to fail), Opera 12, or Safari 5.1 (bearing in mind their native support for TypedArrays, __proto__ and such).

Note that some tests cannot be compiled correctly, as they rely on runtime eval() results to ensure that, for instance, certain syntactic constructs are syntax errors. These will fail on the compiler test pages. Support for those features should be divined manually.

Something went wrong with that request. Please try again.