Skip to content

Instantly share code, notes, and snippets.

@artjomb
Created June 4, 2016 14:23
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save artjomb/39db799e4959212718c585b4977c5a90 to your computer and use it in GitHub Desktop.
Save artjomb/39db799e4959212718c585b4977c5a90 to your computer and use it in GitHub Desktop.
ECMAScript 6 capability of PhantomJS 2.1.1
// PhantomJS script for creating this data
var page = require('webpage').create();
var fs = require('fs');
var url = "https://kangax.github.io/compat-table/es6/";
page.onConsoleMessage = function(msg, lineNum, sourceId) {
console.log('CONSOLE> ' + msg);
};
page.open(url, function(status) {
setTimeout(function(){
var result = page.evaluate(function(){
var data = {};
var forEach = Array.prototype.forEach;
var tw = document.getElementById('table-wrapper');
forEach.call(tw.querySelectorAll('tr:not(.size-row):not(.subtest):not(.category)'), function (st) {
var key = st.querySelector('td:first-child span > a:not(.anchor)').textContent.trim();
data[key] = {
overall: st.children[1].textContent.trim()
};
var next = st.nextElementSibling;
var keyNext;
while (next && next.className.indexOf("subtest") !== -1) {
if (!data[key].sub) {
data[key].sub = {};
}
keyNext = next.querySelector('td:first-child span').textContent.replace("§", "").trim();
data[key].sub[keyNext] = next.children[1].textContent.trim();
next = next.nextElementSibling;
}
});
return {
overall: document.querySelector(".current .num-features").textContent.trim(),
details: data
};
});
var lessDetail = "Overall coverage: " + result.overall;
var fullDetail = lessDetail;
for(var name in result.details) {
if (result.details.hasOwnProperty(name)) {
var row = "\n> " + name + ": " + result.details[name].overall;
lessDetail += row;
fullDetail += row;
if (result.details[name].sub) {
for(var subName in result.details[name].sub) {
if (result.details[name].sub.hasOwnProperty(subName)) {
fullDetail += "\n > " + subName + ": " + result.details[name].sub[subName];
}
}
}
}
}
page.render("screenshot.png");
fs.write("full_details.json", JSON.stringify(result, undefined, 4));
fs.write("less_details.txt", lessDetail);
fs.write("full_details.txt", fullDetail);
phantom.exit();
}, 5000);
});
{
"details": {
"Array is subclassable": {
"overall": "0/11",
"sub": {
"Array.from": "No",
"Array.isArray support": "No",
"Array.of": "No",
"Array.prototype.concat": "No",
"Array.prototype.filter": "No",
"Array.prototype.map": "No",
"Array.prototype.slice": "No",
"Array.prototype.splice": "No",
"correct prototype chain": "No",
"length property (accessing)": "No",
"length property (setting)": "No"
}
},
"Array static methods": {
"overall": "0/11",
"sub": {
"Array.from map function, array-like objects": "No",
"Array.from map function, generator instances": "No",
"Array.from map function, generic iterables": "No",
"Array.from map function, instances of iterables": "No",
"Array.from, array-like objects": "No",
"Array.from, generator instances": "No",
"Array.from, generic iterables": "No",
"Array.from, instances of generic iterables": "No",
"Array.from, iterator closing": "No",
"Array.of": "No",
"Array[Symbol.species]": "No"
}
},
"Array.prototype methods": {
"overall": "0/10",
"sub": {
"Array iterator prototype chain": "No",
"Array.prototype.copyWithin": "No",
"Array.prototype.entries": "No",
"Array.prototype.fill": "No",
"Array.prototype.find": "No",
"Array.prototype.findIndex": "No",
"Array.prototype.keys": "No",
"Array.prototype.values": "No",
"Array.prototype[Symbol.iterator]": "No",
"Array.prototype[Symbol.unscopables]": "No"
}
},
"Date.prototype[Symbol.toPrimitive]": {
"overall": "No"
},
"Function is subclassable": {
"overall": "0/6",
"sub": {
"Function.prototype.apply": "No",
"Function.prototype.bind": "No",
"Function.prototype.call": "No",
"can be called": "No",
"can be used with \"new\"": "No",
"correct prototype chain": "No"
}
},
"HTML-style comments": {
"overall": "Yes"
},
"Map": {
"overall": "0/19",
"sub": {
"-0 key converts to +0": "No",
"Map iterator prototype chain": "No",
"Map.prototype isn't an instance": "No",
"Map.prototype.clear": "No",
"Map.prototype.delete": "No",
"Map.prototype.entries": "No",
"Map.prototype.forEach": "No",
"Map.prototype.keys": "No",
"Map.prototype.set returns this": "No",
"Map.prototype.size": "No",
"Map.prototype.values": "No",
"Map.prototype[Symbol.iterator]": "No",
"Map[Symbol.species]": "No",
"basic functionality": "No",
"constructor accepts null": "No",
"constructor arguments": "No",
"constructor invokes set": "No",
"constructor requires new": "No",
"iterator closing": "No"
}
},
"Math methods": {
"overall": "1/17",
"sub": {
"Math.acosh": "No",
"Math.asinh": "No",
"Math.atanh": "No",
"Math.cbrt": "No",
"Math.clz32": "No",
"Math.cosh": "No",
"Math.expm1": "No",
"Math.fround": "No",
"Math.hypot": "No",
"Math.imul": "Yes",
"Math.log10": "No",
"Math.log1p": "No",
"Math.log2": "No",
"Math.sign": "No",
"Math.sinh": "No",
"Math.tanh": "No",
"Math.trunc": "No"
}
},
"Number properties": {
"overall": "0/7",
"sub": {
"Number.EPSILON": "No",
"Number.MAX_SAFE_INTEGER": "No",
"Number.MIN_SAFE_INTEGER": "No",
"Number.isFinite": "No",
"Number.isInteger": "No",
"Number.isNaN": "No",
"Number.isSafeInteger": "No"
}
},
"Object static methods": {
"overall": "0/4",
"sub": {
"Object.assign": "No",
"Object.getOwnPropertySymbols": "No",
"Object.is": "No",
"Object.setPrototypeOf": "No"
}
},
"Object static methods accept primitives": {
"overall": "0/10",
"sub": {
"Object.freeze": "No",
"Object.getOwnPropertyDescriptor": "No",
"Object.getOwnPropertyNames": "No",
"Object.getPrototypeOf": "No",
"Object.isExtensible": "No",
"Object.isFrozen": "No",
"Object.isSealed": "No",
"Object.keys": "No",
"Object.preventExtensions": "No",
"Object.seal": "No"
}
},
"Object.prototype.__proto__": {
"overall": "6/6",
"sub": {
"absent from Object.create(null)": "Yes",
"correct property descriptor": "Yes",
"get prototype": "Yes",
"present in Object.getOwnPropertyNames()": "Yes",
"present in hasOwnProperty()": "Yes",
"set prototype": "Yes"
}
},
"Promise": {
"overall": "0/8",
"sub": {
"Promise.all": "No",
"Promise.all, generic iterables": "No",
"Promise.prototype isn't an instance": "No",
"Promise.race": "No",
"Promise.race, generic iterables": "No",
"Promise[Symbol.species]": "No",
"basic functionality": "No",
"constructor requires new": "No"
}
},
"Promise is subclassable": {
"overall": "0/4",
"sub": {
"Promise.all": "No",
"Promise.race": "No",
"basic functionality": "No",
"correct prototype chain": "No"
}
},
"Proxy": {
"overall": "0/34",
"sub": {
"\"apply\" handler": "No",
"\"apply\" handler invariant": "No",
"\"construct\" handler": "No",
"\"construct\" handler invariants": "No",
"\"defineProperty\" handler": "No",
"\"defineProperty\" handler invariants": "No",
"\"deleteProperty\" handler": "No",
"\"deleteProperty\" handler invariant": "No",
"\"get\" handler": "No",
"\"get\" handler invariants": "No",
"\"get\" handler, instances of proxies": "No",
"\"getOwnPropertyDescriptor\" handler": "No",
"\"getOwnPropertyDescriptor\" handler invariants": "No",
"\"getPrototypeOf\" handler": "No",
"\"getPrototypeOf\" handler invariant": "No",
"\"has\" handler": "No",
"\"has\" handler invariants": "No",
"\"has\" handler, instances of proxies": "No",
"\"isExtensible\" handler": "No",
"\"isExtensible\" handler invariant": "No",
"\"ownKeys\" handler": "No",
"\"ownKeys\" handler invariant": "No",
"\"preventExtensions\" handler": "No",
"\"preventExtensions\" handler invariant": "No",
"\"set\" handler": "No",
"\"set\" handler invariants": "No",
"\"set\" handler, instances of proxies": "No",
"\"setPrototypeOf\" handler": "No",
"\"setPrototypeOf\" handler invariant": "No",
"Array.isArray support": "No",
"JSON.stringify support": "No",
"Proxy.revocable": "No",
"constructor requires new": "No",
"no \"prototype\" property": "No"
}
},
"Proxy, internal 'defineProperty' calls": {
"overall": "0/2",
"sub": {
"SetIntegrityLevel": "No",
"[[Set]]": "No"
}
},
"Proxy, internal 'deleteProperty' calls": {
"overall": "0/6",
"sub": {
"Array.prototype.copyWithin": "No",
"Array.prototype.pop": "No",
"Array.prototype.reverse": "No",
"Array.prototype.shift": "No",
"Array.prototype.splice": "No",
"Array.prototype.unshift": "No"
}
},
"Proxy, internal 'get' calls": {
"overall": "0/36",
"sub": {
"Array.from": "No",
"Array.prototype iteration methods": "No",
"Array.prototype.concat": "No",
"Array.prototype.pop": "No",
"Array.prototype.reverse": "No",
"Array.prototype.shift": "No",
"Array.prototype.splice": "No",
"Array.prototype.toString": "No",
"ClassDefinitionEvaluation": "No",
"CreateDynamicFunction": "No",
"CreateListFromArrayLike": "No",
"Date.prototype.toJSON": "No",
"Error.prototype.toString": "No",
"Function.prototype.bind": "No",
"HasBinding": "No",
"IteratorComplete, IteratorValue": "No",
"JSON.stringify": "No",
"Object.assign": "No",
"Object.defineProperties": "No",
"Promise resolve functions": "No",
"RegExp constructor": "No",
"RegExp.prototype.flags": "No",
"RegExp.prototype.test": "No",
"RegExp.prototype.toString": "No",
"RegExp.prototype[Symbol.match]": "No",
"RegExp.prototype[Symbol.replace]": "No",
"RegExp.prototype[Symbol.search]": "No",
"RegExp.prototype[Symbol.split]": "No",
"String.prototype.match": "No",
"String.prototype.replace": "No",
"String.prototype.search": "No",
"String.prototype.split": "No",
"String.raw": "No",
"ToPrimitive": "No",
"ToPropertyDescriptor": "No",
"instanceof operator": "No"
}
},
"Proxy, internal 'getOwnPropertyDescriptor' calls": {
"overall": "0/4",
"sub": {
"Function.prototype.bind": "No",
"Object.assign": "No",
"Object.prototype.hasOwnProperty": "No",
"[[Set]]": "No"
}
},
"Proxy, internal 'ownKeys' calls": {
"overall": "0/3",
"sub": {
"SerializeJSONObject": "No",
"SetIntegrityLevel": "No",
"TestIntegrityLevel": "No"
}
},
"Proxy, internal 'set' calls": {
"overall": "0/11",
"sub": {
"Array.from": "No",
"Array.of": "No",
"Array.prototype.copyWithin": "No",
"Array.prototype.fill": "No",
"Array.prototype.pop": "No",
"Array.prototype.push": "No",
"Array.prototype.reverse": "No",
"Array.prototype.shift": "No",
"Array.prototype.splice": "No",
"Array.prototype.unshift": "No",
"Object.assign": "No"
}
},
"Reflect": {
"overall": "0/20",
"sub": {
"Reflect.apply": "No",
"Reflect.construct": "No",
"Reflect.construct creates instances from third argument": "No",
"Reflect.construct sets new.target meta-property": "No",
"Reflect.construct, Array subclassing": "No",
"Reflect.construct, Function subclassing": "No",
"Reflect.construct, Promise subclassing": "No",
"Reflect.construct, RegExp subclassing": "No",
"Reflect.defineProperty": "No",
"Reflect.deleteProperty": "No",
"Reflect.get": "No",
"Reflect.getOwnPropertyDescriptor": "No",
"Reflect.getPrototypeOf": "No",
"Reflect.has": "No",
"Reflect.isExtensible": "No",
"Reflect.ownKeys, string keys": "No",
"Reflect.ownKeys, symbol keys": "No",
"Reflect.preventExtensions": "No",
"Reflect.set": "No",
"Reflect.setPrototypeOf": "No"
}
},
"RegExp \"y\" and \"u\" flags": {
"overall": "0/5",
"sub": {
"\"u\" flag": "No",
"\"u\" flag, Unicode code point escapes": "No",
"\"u\" flag, case folding": "No",
"\"y\" flag": "No",
"\"y\" flag, lastIndex": "No"
}
},
"RegExp is subclassable": {
"overall": "0/4",
"sub": {
"RegExp.prototype.exec": "No",
"RegExp.prototype.test": "No",
"basic functionality": "No",
"correct prototype chain": "No"
}
},
"RegExp syntax extensions": {
"overall": "8/8",
"sub": {
"hyphens in character sets": "Yes",
"incomplete patterns and quantifiers": "Yes",
"invalid Unicode escapes": "Yes",
"invalid backreferences become octal escapes": "Yes",
"invalid character escapes": "Yes",
"invalid control-character escapes": "Yes",
"invalid hexadecimal escapes": "Yes",
"octal escape sequences": "Yes"
}
},
"RegExp.prototype properties": {
"overall": "0/6",
"sub": {
"RegExp.prototype.flags": "No",
"RegExp.prototype[Symbol.match]": "No",
"RegExp.prototype[Symbol.replace]": "No",
"RegExp.prototype[Symbol.search]": "No",
"RegExp.prototype[Symbol.split]": "No",
"RegExp[Symbol.species]": "No"
}
},
"RegExp.prototype.compile": {
"overall": "Yes"
},
"Set": {
"overall": "0/19",
"sub": {
"-0 key converts to +0": "No",
"Set iterator prototype chain": "No",
"Set.prototype isn't an instance": "No",
"Set.prototype.add returns this": "No",
"Set.prototype.clear": "No",
"Set.prototype.delete": "No",
"Set.prototype.entries": "No",
"Set.prototype.forEach": "No",
"Set.prototype.keys": "No",
"Set.prototype.size": "No",
"Set.prototype.values": "No",
"Set.prototype[Symbol.iterator]": "No",
"Set[Symbol.species]": "No",
"basic functionality": "No",
"constructor accepts null": "No",
"constructor arguments": "No",
"constructor invokes add": "No",
"constructor requires new": "No",
"iterator closing": "No"
}
},
"String static methods": {
"overall": "0/2",
"sub": {
"String.fromCodePoint": "No",
"String.raw": "No"
}
},
"String.prototype HTML methods": {
"overall": "3/3",
"sub": {
"existence": "Yes",
"quotes in arguments are escaped": "Yes",
"tags' names are lowercase": "Yes"
}
},
"String.prototype methods": {
"overall": "0/10",
"sub": {
"String iterator prototype chain": "No",
"String.prototype.codePointAt": "No",
"String.prototype.endsWith": "No",
"String.prototype.endsWith throws on RegExp": "No",
"String.prototype.includes": "No",
"String.prototype.normalize": "No",
"String.prototype.repeat": "No",
"String.prototype.startsWith": "No",
"String.prototype.startsWith throws on RegExp": "No",
"String.prototype[Symbol.iterator]": "No"
}
},
"Symbol": {
"overall": "0/11",
"sub": {
"JSON.stringify ignores symbols": "No",
"Object(symbol)": "No",
"Object.defineProperty support": "No",
"basic functionality": "No",
"can convert with String()": "No",
"cannot coerce to string or number": "No",
"global symbol registry": "No",
"new Symbol() throws": "No",
"symbol keys are hidden to pre-ES6 code": "No",
"symbols inherit from Symbol.prototype": "No",
"typeof support": "No"
}
},
"Unicode code point escapes": {
"overall": "0/2",
"sub": {
"in identifiers": "No",
"in strings": "No"
}
},
"WeakMap": {
"overall": "0/12",
"sub": {
".has, .get and .delete methods accept primitives": "No",
"WeakMap.prototype isn't an instance": "No",
"WeakMap.prototype.delete": "No",
"WeakMap.prototype.set returns this": "No",
"basic functionality": "No",
"constructor accepts null": "No",
"constructor arguments": "No",
"constructor invokes set": "No",
"constructor requires new": "No",
"frozen objects as keys": "No",
"iterator closing": "No",
"no WeakMap.prototype.clear method": "No"
}
},
"WeakSet": {
"overall": "0/11",
"sub": {
".has and .delete methods accept primitives": "No",
"WeakSet.prototype isn't an instance": "No",
"WeakSet.prototype.add returns this": "No",
"WeakSet.prototype.delete": "No",
"basic functionality": "No",
"constructor accepts null": "No",
"constructor arguments": "No",
"constructor invokes add": "No",
"constructor requires new": "No",
"iterator closing": "No",
"no WeakSet.prototype.clear method": "No"
}
},
"__proto__ in object literals": {
"overall": "1/5",
"sub": {
"basic support": "Yes",
"multiple __proto__ is an error": "No",
"not a computed property": "No",
"not a shorthand method": "No",
"not a shorthand property": "No"
}
},
"arrow functions": {
"overall": "0/13",
"sub": {
"\"this\" unchanged by call or apply": "No",
"0 parameters": "No",
"1 parameter, no brackets": "No",
"can't be bound, can be curried": "No",
"correct precedence": "No",
"lexical \"arguments\" binding": "No",
"lexical \"new.target\" binding": "No",
"lexical \"super\" binding in constructors": "No",
"lexical \"super\" binding in methods": "No",
"lexical \"this\" binding": "No",
"multiple parameters": "No",
"no \"prototype\" property": "No",
"no line break between params and =>": "No"
}
},
"block-level function declaration": {
"overall": "No"
},
"class": {
"overall": "0/24",
"sub": {
"accessor properties": "No",
"anonymous class": "No",
"class expression": "No",
"class name is lexically scoped": "No",
"class statement": "No",
"computed accessor properties": "No",
"computed names, temporal dead zone": "No",
"computed prototype methods": "No",
"computed static accessor properties": "No",
"computed static methods": "No",
"constructor": "No",
"constructor requires new": "No",
"extends": "No",
"extends expressions": "No",
"extends null": "No",
"implicit strict mode": "No",
"is block-scoped": "No",
"methods aren't enumerable": "No",
"new.target": "No",
"optional semicolons": "No",
"prototype methods": "No",
"static accessor properties": "No",
"static methods": "No",
"string-keyed methods": "No"
}
},
"const": {
"overall": "1/16",
"sub": {
"basic support": "Yes",
"basic support (strict mode)": "No",
"cannot be in statements": "No",
"cannot be in statements (strict mode)": "No",
"for loop statement scope": "No",
"for loop statement scope (strict mode)": "No",
"for-in loop iteration scope": "No",
"for-in loop iteration scope (strict mode)": "No",
"for-of loop iteration scope": "No",
"for-of loop iteration scope (strict mode)": "No",
"is block-scoped": "No",
"is block-scoped (strict mode)": "No",
"redefining a const (strict mode)": "No",
"redefining a const is an error": "No",
"temporal dead zone": "No",
"temporal dead zone (strict mode)": "No"
}
},
"default function parameters": {
"overall": "0/7",
"sub": {
"arguments object interaction": "No",
"basic functionality": "No",
"defaults can refer to previous params": "No",
"explicit undefined defers to the default": "No",
"new Function() support": "No",
"separate scope": "No",
"temporal dead zone": "No"
}
},
"destructuring, assignment": {
"overall": "0/24",
"sub": {
"chained iterable destructuring": "No",
"chained object destructuring": "No",
"computed properties": "No",
"defaults": "No",
"empty patterns": "No",
"iterable destructuring expression": "No",
"iterator closing": "No",
"nested": "No",
"nested rest": "No",
"object destructuring expression": "No",
"object destructuring with primitives": "No",
"parenthesised left-hand-side is a syntax error": "No",
"rest": "No",
"throws on null and undefined": "No",
"trailing commas in iterable patterns": "No",
"trailing commas in object patterns": "No",
"with arrays": "No",
"with astral plane strings": "No",
"with generator instances": "No",
"with generic iterables": "No",
"with instances of generic iterables": "No",
"with objects": "No",
"with sparse arrays": "No",
"with strings": "No"
}
},
"destructuring, declarations": {
"overall": "0/22",
"sub": {
"computed properties": "No",
"defaults": "No",
"defaults, let temporal dead zone": "No",
"in catch heads": "No",
"in for-in loop heads": "No",
"in for-of loop heads": "No",
"iterator closing": "No",
"multiples in a single var statement": "No",
"nested": "No",
"object destructuring with primitives": "No",
"rest": "No",
"throws on null and undefined": "No",
"trailing commas in iterable patterns": "No",
"trailing commas in object patterns": "No",
"with arrays": "No",
"with astral plane strings": "No",
"with generator instances": "No",
"with generic iterables": "No",
"with instances of generic iterables": "No",
"with objects": "No",
"with sparse arrays": "No",
"with strings": "No"
}
},
"destructuring, parameters": {
"overall": "0/23",
"sub": {
"'arguments' interaction": "No",
"computed properties": "No",
"defaults": "No",
"defaults, new Function() support": "No",
"defaults, separate scope": "No",
"empty patterns": "No",
"in parameters, function 'length' property": "No",
"iterator closing": "No",
"nested": "No",
"new Function() support": "No",
"object destructuring with primitives": "No",
"rest": "No",
"throws on null and undefined": "No",
"trailing commas in iterable patterns": "No",
"trailing commas in object patterns": "No",
"with arrays": "No",
"with astral plane strings": "No",
"with generator instances": "No",
"with generic iterables": "No",
"with instances of generic iterables": "No",
"with objects": "No",
"with sparse arrays": "No",
"with strings": "No"
}
},
"for..of loops": {
"overall": "0/9",
"sub": {
"iterator closing, break": "No",
"iterator closing, throw": "No",
"with arrays": "No",
"with astral plane strings": "No",
"with generator instances": "No",
"with generic iterables": "No",
"with instances of generic iterables": "No",
"with sparse arrays": "No",
"with strings": "No"
}
},
"function \"name\" property": {
"overall": "3/17",
"sub": {
"accessor properties": "No",
"bound functions": "No",
"class expressions": "No",
"class prototype methods": "No",
"class statements": "No",
"class static methods": "No",
"function expressions": "Yes",
"function statements": "Yes",
"isn't writable, is configurable": "No",
"new Function": "Yes",
"object methods (class)": "No",
"object methods (function)": "No",
"shorthand methods": "No",
"shorthand methods (no lexical binding)": "No",
"symbol-keyed methods": "No",
"variables (class)": "No",
"variables (function)": "No"
}
},
"generators": {
"overall": "0/27",
"sub": {
"%GeneratorPrototype%": "No",
"%GeneratorPrototype% prototype chain": "No",
"%GeneratorPrototype%.constructor": "No",
"%GeneratorPrototype%.return": "No",
"%GeneratorPrototype%.throw": "No",
"basic functionality": "No",
"can't use \"this\" with new": "No",
"computed shorthand generators": "No",
"computed shorthand generators, classes": "No",
"correct \"this\" binding": "No",
"generator function expressions": "No",
"sending": "No",
"shorthand generator methods": "No",
"shorthand generator methods, classes": "No",
"shorthand generators can't be constructors": "No",
"string-keyed shorthand generator methods": "No",
"yield * on non-iterables is a runtime error": "No",
"yield *, arrays": "No",
"yield *, astral plane strings": "No",
"yield *, generator instances": "No",
"yield *, generic iterables": "No",
"yield *, instances of iterables": "No",
"yield *, iterator closing": "No",
"yield *, iterator closing via throw()": "No",
"yield *, sparse arrays": "No",
"yield *, strings": "No",
"yield operator precedence": "No"
}
},
"let": {
"overall": "0/12",
"sub": {
"basic support": "No",
"basic support (strict mode)": "No",
"cannot be in statements": "No",
"cannot be in statements (strict mode)": "No",
"for loop statement scope": "No",
"for loop statement scope (strict mode)": "No",
"for/for-in loop iteration scope": "No",
"for/for-in loop iteration scope (strict mode)": "No",
"is block-scoped": "No",
"is block-scoped (strict mode)": "No",
"temporal dead zone": "No",
"temporal dead zone (strict mode)": "No"
}
},
"miscellaneous": {
"overall": "2/10",
"sub": {
"Invalid Date": "Yes",
"RegExp constructor can alter flags": "No",
"RegExp.prototype.toString generic and uses \"flags\" property": "No",
"accessors aren't constructors": "No",
"built-in prototypes are not instances": "No",
"duplicate property names in strict mode": "No",
"function 'length' is configurable": "No",
"no assignments allowed in for-in head": "No",
"no escaped reserved words as identifiers": "No",
"no semicolon needed after do-while": "Yes"
}
},
"miscellaneous subclassables": {
"overall": "0/6",
"sub": {
"Boolean is subclassable": "No",
"Error is subclassable": "No",
"Map is subclassable": "No",
"Number is subclassable": "No",
"Set is subclassable": "No",
"String is subclassable": "No"
}
},
"new.target": {
"overall": "0/2",
"sub": {
"assignment is an early error": "No",
"in constructors": "No"
}
},
"non-strict function semantics": {
"overall": "2/3",
"sub": {
"function statements in if-statement clauses": "Yes",
"hoisted block-level function declaration": "No",
"labeled function statements": "Yes"
}
},
"object literal extensions": {
"overall": "0/6",
"sub": {
"computed accessors": "No",
"computed properties": "No",
"computed shorthand methods": "No",
"shorthand methods": "No",
"shorthand properties": "No",
"string-keyed shorthand methods": "No"
}
},
"octal and binary literals": {
"overall": "0/4",
"sub": {
"binary literals": "No",
"binary supported by Number()": "No",
"octal literals": "No",
"octal supported by Number()": "No"
}
},
"own property order": {
"overall": "4/7",
"sub": {
"JSON.parse": "Yes",
"JSON.stringify": "Yes",
"Object.assign": "No",
"Object.getOwnPropertyNames": "Yes",
"Object.keys": "Yes",
"Reflect.ownKeys, string key order": "No",
"Reflect.ownKeys, symbol key order": "No"
}
},
"proper tail calls (tail call optimisation)": {
"overall": "0/2",
"sub": {
"direct recursion": "No",
"mutual recursion": "No"
}
},
"prototype of bound functions": {
"overall": "0/5",
"sub": {
"arrow functions": "No",
"basic functions": "No",
"classes": "No",
"generator functions": "No",
"subclasses": "No"
}
},
"rest parameters": {
"overall": "0/5",
"sub": {
"arguments object interaction": "No",
"basic functionality": "No",
"can't be used in setters": "No",
"function 'length' property": "No",
"new Function() support": "No"
}
},
"spread (...) operator": {
"overall": "0/15",
"sub": {
"spreading non-iterables is a runtime error": "No",
"with arrays, in array literals": "No",
"with arrays, in function calls": "No",
"with astral plane strings, in array literals": "No",
"with astral plane strings, in function calls": "No",
"with generator instances, in arrays": "No",
"with generator instances, in calls": "No",
"with generic iterables, in arrays": "No",
"with generic iterables, in calls": "No",
"with instances of iterables, in arrays": "No",
"with instances of iterables, in calls": "No",
"with sparse arrays, in array literals": "No",
"with sparse arrays, in function calls": "No",
"with strings, in array literals": "No",
"with strings, in function calls": "No"
}
},
"super": {
"overall": "0/8",
"sub": {
"constructor calls use correct \"new.target\" binding": "No",
"expression in constructors": "No",
"in methods, method calls": "No",
"in methods, property access": "No",
"is statically bound": "No",
"method calls use correct \"this\" binding": "No",
"statement in constructors": "No",
"super() invokes the correct constructor": "No"
}
},
"template literals": {
"overall": "0/5",
"sub": {
"basic functionality": "No",
"line break normalisation": "No",
"passed array is frozen": "No",
"tagged template literals": "No",
"toString conversion": "No"
}
},
"typed arrays": {
"overall": "19/46",
"sub": {
"%TypedArray%.from": "No",
"%TypedArray%.of": "No",
"%TypedArray%.prototype.copyWithin": "No",
"%TypedArray%.prototype.entries": "No",
"%TypedArray%.prototype.every": "No",
"%TypedArray%.prototype.fill": "No",
"%TypedArray%.prototype.filter": "No",
"%TypedArray%.prototype.find": "No",
"%TypedArray%.prototype.findIndex": "No",
"%TypedArray%.prototype.forEach": "No",
"%TypedArray%.prototype.indexOf": "No",
"%TypedArray%.prototype.join": "No",
"%TypedArray%.prototype.keys": "No",
"%TypedArray%.prototype.lastIndexOf": "No",
"%TypedArray%.prototype.map": "No",
"%TypedArray%.prototype.reduce": "No",
"%TypedArray%.prototype.reduceRight": "No",
"%TypedArray%.prototype.reverse": "No",
"%TypedArray%.prototype.slice": "No",
"%TypedArray%.prototype.some": "No",
"%TypedArray%.prototype.sort": "No",
"%TypedArray%.prototype.subarray": "Yes",
"%TypedArray%.prototype.values": "No",
"%TypedArray%.prototype[Symbol.iterator]": "No",
"%TypedArray%[Symbol.species]": "No",
"ArrayBuffer[Symbol.species]": "No",
"DataView (Float32)": "Yes",
"DataView (Float64)": "Yes",
"DataView (Int16)": "Yes",
"DataView (Int32)": "Yes",
"DataView (Int8)": "Yes",
"DataView (Uint16)": "Yes",
"DataView (Uint32)": "Yes",
"DataView (Uint8)": "Yes",
"Float32Array": "Yes",
"Float64Array": "Yes",
"Int16Array": "Yes",
"Int32Array": "Yes",
"Int8Array": "Yes",
"Uint16Array": "Yes",
"Uint32Array": "Yes",
"Uint8Array": "Yes",
"Uint8ClampedArray": "Yes",
"constructors accept generic iterables": "No",
"constructors require new": "Yes",
"correct prototype chains": "No"
}
},
"well-known symbols": {
"overall": "0/26",
"sub": {
"Symbol.hasInstance": "No",
"Symbol.isConcatSpreadable": "No",
"Symbol.iterator, arguments object": "No",
"Symbol.iterator, existence": "No",
"Symbol.match": "No",
"Symbol.match, RegExp constructor": "No",
"Symbol.match, String.prototype.endsWith": "No",
"Symbol.match, String.prototype.includes": "No",
"Symbol.match, String.prototype.startsWith": "No",
"Symbol.replace": "No",
"Symbol.search": "No",
"Symbol.species, Array.prototype.concat": "No",
"Symbol.species, Array.prototype.filter": "No",
"Symbol.species, Array.prototype.map": "No",
"Symbol.species, Array.prototype.slice": "No",
"Symbol.species, Array.prototype.splice": "No",
"Symbol.species, Promise.prototype.then": "No",
"Symbol.species, RegExp.prototype[Symbol.split]": "No",
"Symbol.species, existence": "No",
"Symbol.split": "No",
"Symbol.toPrimitive": "No",
"Symbol.toStringTag": "No",
"Symbol.toStringTag affects existing built-ins": "No",
"Symbol.toStringTag, misc. built-ins": "No",
"Symbol.toStringTag, new built-ins": "No",
"Symbol.unscopables": "No"
}
}
},
"overall": "10%"
}
Overall coverage: 10%
> Array is subclassable: 0/11
> Array.from: No
> Array.isArray support: No
> Array.of: No
> Array.prototype.concat: No
> Array.prototype.filter: No
> Array.prototype.map: No
> Array.prototype.slice: No
> Array.prototype.splice: No
> correct prototype chain: No
> length property (accessing): No
> length property (setting): No
> Array static methods: 0/11
> Array.from map function, array-like objects: No
> Array.from map function, generator instances: No
> Array.from map function, generic iterables: No
> Array.from map function, instances of iterables: No
> Array.from, array-like objects: No
> Array.from, generator instances: No
> Array.from, generic iterables: No
> Array.from, instances of generic iterables: No
> Array.from, iterator closing: No
> Array.of: No
> Array[Symbol.species]: No
> Array.prototype methods: 0/10
> Array iterator prototype chain: No
> Array.prototype.copyWithin: No
> Array.prototype.entries: No
> Array.prototype.fill: No
> Array.prototype.find: No
> Array.prototype.findIndex: No
> Array.prototype.keys: No
> Array.prototype.values: No
> Array.prototype[Symbol.iterator]: No
> Array.prototype[Symbol.unscopables]: No
> Date.prototype[Symbol.toPrimitive]: No
> Function is subclassable: 0/6
> Function.prototype.apply: No
> Function.prototype.bind: No
> Function.prototype.call: No
> can be called: No
> can be used with "new": No
> correct prototype chain: No
> HTML-style comments: Yes
> Map: 0/19
> -0 key converts to +0: No
> Map iterator prototype chain: No
> Map.prototype isn't an instance: No
> Map.prototype.clear: No
> Map.prototype.delete: No
> Map.prototype.entries: No
> Map.prototype.forEach: No
> Map.prototype.keys: No
> Map.prototype.set returns this: No
> Map.prototype.size: No
> Map.prototype.values: No
> Map.prototype[Symbol.iterator]: No
> Map[Symbol.species]: No
> basic functionality: No
> constructor accepts null: No
> constructor arguments: No
> constructor invokes set: No
> constructor requires new: No
> iterator closing: No
> Math methods: 1/17
> Math.acosh: No
> Math.asinh: No
> Math.atanh: No
> Math.cbrt: No
> Math.clz32: No
> Math.cosh: No
> Math.expm1: No
> Math.fround: No
> Math.hypot: No
> Math.imul: Yes
> Math.log10: No
> Math.log1p: No
> Math.log2: No
> Math.sign: No
> Math.sinh: No
> Math.tanh: No
> Math.trunc: No
> Number properties: 0/7
> Number.EPSILON: No
> Number.MAX_SAFE_INTEGER: No
> Number.MIN_SAFE_INTEGER: No
> Number.isFinite: No
> Number.isInteger: No
> Number.isNaN: No
> Number.isSafeInteger: No
> Object static methods: 0/4
> Object.assign: No
> Object.getOwnPropertySymbols: No
> Object.is: No
> Object.setPrototypeOf: No
> Object static methods accept primitives: 0/10
> Object.freeze: No
> Object.getOwnPropertyDescriptor: No
> Object.getOwnPropertyNames: No
> Object.getPrototypeOf: No
> Object.isExtensible: No
> Object.isFrozen: No
> Object.isSealed: No
> Object.keys: No
> Object.preventExtensions: No
> Object.seal: No
> Object.prototype.__proto__: 6/6
> absent from Object.create(null): Yes
> correct property descriptor: Yes
> get prototype: Yes
> present in Object.getOwnPropertyNames(): Yes
> present in hasOwnProperty(): Yes
> set prototype: Yes
> Promise: 0/8
> Promise.all: No
> Promise.all, generic iterables: No
> Promise.prototype isn't an instance: No
> Promise.race: No
> Promise.race, generic iterables: No
> Promise[Symbol.species]: No
> basic functionality: No
> constructor requires new: No
> Promise is subclassable: 0/4
> Promise.all: No
> Promise.race: No
> basic functionality: No
> correct prototype chain: No
> Proxy: 0/34
> "apply" handler: No
> "apply" handler invariant: No
> "construct" handler: No
> "construct" handler invariants: No
> "defineProperty" handler: No
> "defineProperty" handler invariants: No
> "deleteProperty" handler: No
> "deleteProperty" handler invariant: No
> "get" handler: No
> "get" handler invariants: No
> "get" handler, instances of proxies: No
> "getOwnPropertyDescriptor" handler: No
> "getOwnPropertyDescriptor" handler invariants: No
> "getPrototypeOf" handler: No
> "getPrototypeOf" handler invariant: No
> "has" handler: No
> "has" handler invariants: No
> "has" handler, instances of proxies: No
> "isExtensible" handler: No
> "isExtensible" handler invariant: No
> "ownKeys" handler: No
> "ownKeys" handler invariant: No
> "preventExtensions" handler: No
> "preventExtensions" handler invariant: No
> "set" handler: No
> "set" handler invariants: No
> "set" handler, instances of proxies: No
> "setPrototypeOf" handler: No
> "setPrototypeOf" handler invariant: No
> Array.isArray support: No
> JSON.stringify support: No
> Proxy.revocable: No
> constructor requires new: No
> no "prototype" property: No
> Proxy, internal 'defineProperty' calls: 0/2
> SetIntegrityLevel: No
> [[Set]]: No
> Proxy, internal 'deleteProperty' calls: 0/6
> Array.prototype.copyWithin: No
> Array.prototype.pop: No
> Array.prototype.reverse: No
> Array.prototype.shift: No
> Array.prototype.splice: No
> Array.prototype.unshift: No
> Proxy, internal 'get' calls: 0/36
> Array.from: No
> Array.prototype iteration methods: No
> Array.prototype.concat: No
> Array.prototype.pop: No
> Array.prototype.reverse: No
> Array.prototype.shift: No
> Array.prototype.splice: No
> Array.prototype.toString: No
> ClassDefinitionEvaluation: No
> CreateDynamicFunction: No
> CreateListFromArrayLike: No
> Date.prototype.toJSON: No
> Error.prototype.toString: No
> Function.prototype.bind: No
> HasBinding: No
> IteratorComplete, IteratorValue: No
> JSON.stringify: No
> Object.assign: No
> Object.defineProperties: No
> Promise resolve functions: No
> RegExp constructor: No
> RegExp.prototype.flags: No
> RegExp.prototype.test: No
> RegExp.prototype.toString: No
> RegExp.prototype[Symbol.match]: No
> RegExp.prototype[Symbol.replace]: No
> RegExp.prototype[Symbol.search]: No
> RegExp.prototype[Symbol.split]: No
> String.prototype.match: No
> String.prototype.replace: No
> String.prototype.search: No
> String.prototype.split: No
> String.raw: No
> ToPrimitive: No
> ToPropertyDescriptor: No
> instanceof operator: No
> Proxy, internal 'getOwnPropertyDescriptor' calls: 0/4
> Function.prototype.bind: No
> Object.assign: No
> Object.prototype.hasOwnProperty: No
> [[Set]]: No
> Proxy, internal 'ownKeys' calls: 0/3
> SerializeJSONObject: No
> SetIntegrityLevel: No
> TestIntegrityLevel: No
> Proxy, internal 'set' calls: 0/11
> Array.from: No
> Array.of: No
> Array.prototype.copyWithin: No
> Array.prototype.fill: No
> Array.prototype.pop: No
> Array.prototype.push: No
> Array.prototype.reverse: No
> Array.prototype.shift: No
> Array.prototype.splice: No
> Array.prototype.unshift: No
> Object.assign: No
> Reflect: 0/20
> Reflect.apply: No
> Reflect.construct: No
> Reflect.construct creates instances from third argument: No
> Reflect.construct sets new.target meta-property: No
> Reflect.construct, Array subclassing: No
> Reflect.construct, Function subclassing: No
> Reflect.construct, Promise subclassing: No
> Reflect.construct, RegExp subclassing: No
> Reflect.defineProperty: No
> Reflect.deleteProperty: No
> Reflect.get: No
> Reflect.getOwnPropertyDescriptor: No
> Reflect.getPrototypeOf: No
> Reflect.has: No
> Reflect.isExtensible: No
> Reflect.ownKeys, string keys: No
> Reflect.ownKeys, symbol keys: No
> Reflect.preventExtensions: No
> Reflect.set: No
> Reflect.setPrototypeOf: No
> RegExp "y" and "u" flags: 0/5
> "u" flag: No
> "u" flag, Unicode code point escapes: No
> "u" flag, case folding: No
> "y" flag: No
> "y" flag, lastIndex: No
> RegExp is subclassable: 0/4
> RegExp.prototype.exec: No
> RegExp.prototype.test: No
> basic functionality: No
> correct prototype chain: No
> RegExp syntax extensions: 8/8
> hyphens in character sets: Yes
> incomplete patterns and quantifiers: Yes
> invalid Unicode escapes: Yes
> invalid backreferences become octal escapes: Yes
> invalid character escapes: Yes
> invalid control-character escapes: Yes
> invalid hexadecimal escapes: Yes
> octal escape sequences: Yes
> RegExp.prototype properties: 0/6
> RegExp.prototype.flags: No
> RegExp.prototype[Symbol.match]: No
> RegExp.prototype[Symbol.replace]: No
> RegExp.prototype[Symbol.search]: No
> RegExp.prototype[Symbol.split]: No
> RegExp[Symbol.species]: No
> RegExp.prototype.compile: Yes
> Set: 0/19
> -0 key converts to +0: No
> Set iterator prototype chain: No
> Set.prototype isn't an instance: No
> Set.prototype.add returns this: No
> Set.prototype.clear: No
> Set.prototype.delete: No
> Set.prototype.entries: No
> Set.prototype.forEach: No
> Set.prototype.keys: No
> Set.prototype.size: No
> Set.prototype.values: No
> Set.prototype[Symbol.iterator]: No
> Set[Symbol.species]: No
> basic functionality: No
> constructor accepts null: No
> constructor arguments: No
> constructor invokes add: No
> constructor requires new: No
> iterator closing: No
> String static methods: 0/2
> String.fromCodePoint: No
> String.raw: No
> String.prototype HTML methods: 3/3
> existence: Yes
> quotes in arguments are escaped: Yes
> tags' names are lowercase: Yes
> String.prototype methods: 0/10
> String iterator prototype chain: No
> String.prototype.codePointAt: No
> String.prototype.endsWith: No
> String.prototype.endsWith throws on RegExp: No
> String.prototype.includes: No
> String.prototype.normalize: No
> String.prototype.repeat: No
> String.prototype.startsWith: No
> String.prototype.startsWith throws on RegExp: No
> String.prototype[Symbol.iterator]: No
> Symbol: 0/11
> JSON.stringify ignores symbols: No
> Object(symbol): No
> Object.defineProperty support: No
> basic functionality: No
> can convert with String(): No
> cannot coerce to string or number: No
> global symbol registry: No
> new Symbol() throws: No
> symbol keys are hidden to pre-ES6 code: No
> symbols inherit from Symbol.prototype: No
> typeof support: No
> Unicode code point escapes: 0/2
> in identifiers: No
> in strings: No
> WeakMap: 0/12
> .has, .get and .delete methods accept primitives: No
> WeakMap.prototype isn't an instance: No
> WeakMap.prototype.delete: No
> WeakMap.prototype.set returns this: No
> basic functionality: No
> constructor accepts null: No
> constructor arguments: No
> constructor invokes set: No
> constructor requires new: No
> frozen objects as keys: No
> iterator closing: No
> no WeakMap.prototype.clear method: No
> WeakSet: 0/11
> .has and .delete methods accept primitives: No
> WeakSet.prototype isn't an instance: No
> WeakSet.prototype.add returns this: No
> WeakSet.prototype.delete: No
> basic functionality: No
> constructor accepts null: No
> constructor arguments: No
> constructor invokes add: No
> constructor requires new: No
> iterator closing: No
> no WeakSet.prototype.clear method: No
> __proto__ in object literals: 1/5
> basic support: Yes
> multiple __proto__ is an error: No
> not a computed property: No
> not a shorthand method: No
> not a shorthand property: No
> arrow functions: 0/13
> "this" unchanged by call or apply: No
> 0 parameters: No
> 1 parameter, no brackets: No
> can't be bound, can be curried: No
> correct precedence: No
> lexical "arguments" binding: No
> lexical "new.target" binding: No
> lexical "super" binding in constructors: No
> lexical "super" binding in methods: No
> lexical "this" binding: No
> multiple parameters: No
> no "prototype" property: No
> no line break between params and =>: No
> block-level function declaration: No
> class: 0/24
> accessor properties: No
> anonymous class: No
> class expression: No
> class name is lexically scoped: No
> class statement: No
> computed accessor properties: No
> computed names, temporal dead zone: No
> computed prototype methods: No
> computed static accessor properties: No
> computed static methods: No
> constructor: No
> constructor requires new: No
> extends: No
> extends expressions: No
> extends null: No
> implicit strict mode: No
> is block-scoped: No
> methods aren't enumerable: No
> new.target: No
> optional semicolons: No
> prototype methods: No
> static accessor properties: No
> static methods: No
> string-keyed methods: No
> const: 1/16
> basic support: Yes
> basic support (strict mode): No
> cannot be in statements: No
> cannot be in statements (strict mode): No
> for loop statement scope: No
> for loop statement scope (strict mode): No
> for-in loop iteration scope: No
> for-in loop iteration scope (strict mode): No
> for-of loop iteration scope: No
> for-of loop iteration scope (strict mode): No
> is block-scoped: No
> is block-scoped (strict mode): No
> redefining a const (strict mode): No
> redefining a const is an error: No
> temporal dead zone: No
> temporal dead zone (strict mode): No
> default function parameters: 0/7
> arguments object interaction: No
> basic functionality: No
> defaults can refer to previous params: No
> explicit undefined defers to the default: No
> new Function() support: No
> separate scope: No
> temporal dead zone: No
> destructuring, assignment: 0/24
> chained iterable destructuring: No
> chained object destructuring: No
> computed properties: No
> defaults: No
> empty patterns: No
> iterable destructuring expression: No
> iterator closing: No
> nested: No
> nested rest: No
> object destructuring expression: No
> object destructuring with primitives: No
> parenthesised left-hand-side is a syntax error: No
> rest: No
> throws on null and undefined: No
> trailing commas in iterable patterns: No
> trailing commas in object patterns: No
> with arrays: No
> with astral plane strings: No
> with generator instances: No
> with generic iterables: No
> with instances of generic iterables: No
> with objects: No
> with sparse arrays: No
> with strings: No
> destructuring, declarations: 0/22
> computed properties: No
> defaults: No
> defaults, let temporal dead zone: No
> in catch heads: No
> in for-in loop heads: No
> in for-of loop heads: No
> iterator closing: No
> multiples in a single var statement: No
> nested: No
> object destructuring with primitives: No
> rest: No
> throws on null and undefined: No
> trailing commas in iterable patterns: No
> trailing commas in object patterns: No
> with arrays: No
> with astral plane strings: No
> with generator instances: No
> with generic iterables: No
> with instances of generic iterables: No
> with objects: No
> with sparse arrays: No
> with strings: No
> destructuring, parameters: 0/23
> 'arguments' interaction: No
> computed properties: No
> defaults: No
> defaults, new Function() support: No
> defaults, separate scope: No
> empty patterns: No
> in parameters, function 'length' property: No
> iterator closing: No
> nested: No
> new Function() support: No
> object destructuring with primitives: No
> rest: No
> throws on null and undefined: No
> trailing commas in iterable patterns: No
> trailing commas in object patterns: No
> with arrays: No
> with astral plane strings: No
> with generator instances: No
> with generic iterables: No
> with instances of generic iterables: No
> with objects: No
> with sparse arrays: No
> with strings: No
> for..of loops: 0/9
> iterator closing, break: No
> iterator closing, throw: No
> with arrays: No
> with astral plane strings: No
> with generator instances: No
> with generic iterables: No
> with instances of generic iterables: No
> with sparse arrays: No
> with strings: No
> function "name" property: 3/17
> accessor properties: No
> bound functions: No
> class expressions: No
> class prototype methods: No
> class statements: No
> class static methods: No
> function expressions: Yes
> function statements: Yes
> isn't writable, is configurable: No
> new Function: Yes
> object methods (class): No
> object methods (function): No
> shorthand methods: No
> shorthand methods (no lexical binding): No
> symbol-keyed methods: No
> variables (class): No
> variables (function): No
> generators: 0/27
> %GeneratorPrototype%: No
> %GeneratorPrototype% prototype chain: No
> %GeneratorPrototype%.constructor: No
> %GeneratorPrototype%.return: No
> %GeneratorPrototype%.throw: No
> basic functionality: No
> can't use "this" with new: No
> computed shorthand generators: No
> computed shorthand generators, classes: No
> correct "this" binding: No
> generator function expressions: No
> sending: No
> shorthand generator methods: No
> shorthand generator methods, classes: No
> shorthand generators can't be constructors: No
> string-keyed shorthand generator methods: No
> yield * on non-iterables is a runtime error: No
> yield *, arrays: No
> yield *, astral plane strings: No
> yield *, generator instances: No
> yield *, generic iterables: No
> yield *, instances of iterables: No
> yield *, iterator closing: No
> yield *, iterator closing via throw(): No
> yield *, sparse arrays: No
> yield *, strings: No
> yield operator precedence: No
> let: 0/12
> basic support: No
> basic support (strict mode): No
> cannot be in statements: No
> cannot be in statements (strict mode): No
> for loop statement scope: No
> for loop statement scope (strict mode): No
> for/for-in loop iteration scope: No
> for/for-in loop iteration scope (strict mode): No
> is block-scoped: No
> is block-scoped (strict mode): No
> temporal dead zone: No
> temporal dead zone (strict mode): No
> miscellaneous: 2/10
> Invalid Date: Yes
> RegExp constructor can alter flags: No
> RegExp.prototype.toString generic and uses "flags" property: No
> accessors aren't constructors: No
> built-in prototypes are not instances: No
> duplicate property names in strict mode: No
> function 'length' is configurable: No
> no assignments allowed in for-in head: No
> no escaped reserved words as identifiers: No
> no semicolon needed after do-while: Yes
> miscellaneous subclassables: 0/6
> Boolean is subclassable: No
> Error is subclassable: No
> Map is subclassable: No
> Number is subclassable: No
> Set is subclassable: No
> String is subclassable: No
> new.target: 0/2
> assignment is an early error: No
> in constructors: No
> non-strict function semantics: 2/3
> function statements in if-statement clauses: Yes
> hoisted block-level function declaration: No
> labeled function statements: Yes
> object literal extensions: 0/6
> computed accessors: No
> computed properties: No
> computed shorthand methods: No
> shorthand methods: No
> shorthand properties: No
> string-keyed shorthand methods: No
> octal and binary literals: 0/4
> binary literals: No
> binary supported by Number(): No
> octal literals: No
> octal supported by Number(): No
> own property order: 4/7
> JSON.parse: Yes
> JSON.stringify: Yes
> Object.assign: No
> Object.getOwnPropertyNames: Yes
> Object.keys: Yes
> Reflect.ownKeys, string key order: No
> Reflect.ownKeys, symbol key order: No
> proper tail calls (tail call optimisation): 0/2
> direct recursion: No
> mutual recursion: No
> prototype of bound functions: 0/5
> arrow functions: No
> basic functions: No
> classes: No
> generator functions: No
> subclasses: No
> rest parameters: 0/5
> arguments object interaction: No
> basic functionality: No
> can't be used in setters: No
> function 'length' property: No
> new Function() support: No
> spread (...) operator: 0/15
> spreading non-iterables is a runtime error: No
> with arrays, in array literals: No
> with arrays, in function calls: No
> with astral plane strings, in array literals: No
> with astral plane strings, in function calls: No
> with generator instances, in arrays: No
> with generator instances, in calls: No
> with generic iterables, in arrays: No
> with generic iterables, in calls: No
> with instances of iterables, in arrays: No
> with instances of iterables, in calls: No
> with sparse arrays, in array literals: No
> with sparse arrays, in function calls: No
> with strings, in array literals: No
> with strings, in function calls: No
> super: 0/8
> constructor calls use correct "new.target" binding: No
> expression in constructors: No
> in methods, method calls: No
> in methods, property access: No
> is statically bound: No
> method calls use correct "this" binding: No
> statement in constructors: No
> super() invokes the correct constructor: No
> template literals: 0/5
> basic functionality: No
> line break normalisation: No
> passed array is frozen: No
> tagged template literals: No
> toString conversion: No
> typed arrays: 19/46
> %TypedArray%.from: No
> %TypedArray%.of: No
> %TypedArray%.prototype.copyWithin: No
> %TypedArray%.prototype.entries: No
> %TypedArray%.prototype.every: No
> %TypedArray%.prototype.fill: No
> %TypedArray%.prototype.filter: No
> %TypedArray%.prototype.find: No
> %TypedArray%.prototype.findIndex: No
> %TypedArray%.prototype.forEach: No
> %TypedArray%.prototype.indexOf: No
> %TypedArray%.prototype.join: No
> %TypedArray%.prototype.keys: No
> %TypedArray%.prototype.lastIndexOf: No
> %TypedArray%.prototype.map: No
> %TypedArray%.prototype.reduce: No
> %TypedArray%.prototype.reduceRight: No
> %TypedArray%.prototype.reverse: No
> %TypedArray%.prototype.slice: No
> %TypedArray%.prototype.some: No
> %TypedArray%.prototype.sort: No
> %TypedArray%.prototype.subarray: Yes
> %TypedArray%.prototype.values: No
> %TypedArray%.prototype[Symbol.iterator]: No
> %TypedArray%[Symbol.species]: No
> ArrayBuffer[Symbol.species]: No
> DataView (Float32): Yes
> DataView (Float64): Yes
> DataView (Int16): Yes
> DataView (Int32): Yes
> DataView (Int8): Yes
> DataView (Uint16): Yes
> DataView (Uint32): Yes
> DataView (Uint8): Yes
> Float32Array: Yes
> Float64Array: Yes
> Int16Array: Yes
> Int32Array: Yes
> Int8Array: Yes
> Uint16Array: Yes
> Uint32Array: Yes
> Uint8Array: Yes
> Uint8ClampedArray: Yes
> constructors accept generic iterables: No
> constructors require new: Yes
> correct prototype chains: No
> well-known symbols: 0/26
> Symbol.hasInstance: No
> Symbol.isConcatSpreadable: No
> Symbol.iterator, arguments object: No
> Symbol.iterator, existence: No
> Symbol.match: No
> Symbol.match, RegExp constructor: No
> Symbol.match, String.prototype.endsWith: No
> Symbol.match, String.prototype.includes: No
> Symbol.match, String.prototype.startsWith: No
> Symbol.replace: No
> Symbol.search: No
> Symbol.species, Array.prototype.concat: No
> Symbol.species, Array.prototype.filter: No
> Symbol.species, Array.prototype.map: No
> Symbol.species, Array.prototype.slice: No
> Symbol.species, Array.prototype.splice: No
> Symbol.species, Promise.prototype.then: No
> Symbol.species, RegExp.prototype[Symbol.split]: No
> Symbol.species, existence: No
> Symbol.split: No
> Symbol.toPrimitive: No
> Symbol.toStringTag: No
> Symbol.toStringTag affects existing built-ins: No
> Symbol.toStringTag, misc. built-ins: No
> Symbol.toStringTag, new built-ins: No
> Symbol.unscopables: No
Overall coverage: 10%
> Array is subclassable: 0/11
> Array static methods: 0/11
> Array.prototype methods: 0/10
> Date.prototype[Symbol.toPrimitive]: No
> Function is subclassable: 0/6
> HTML-style comments: Yes
> Map: 0/19
> Math methods: 1/17
> Number properties: 0/7
> Object static methods: 0/4
> Object static methods accept primitives: 0/10
> Object.prototype.__proto__: 6/6
> Promise: 0/8
> Promise is subclassable: 0/4
> Proxy: 0/34
> Proxy, internal 'defineProperty' calls: 0/2
> Proxy, internal 'deleteProperty' calls: 0/6
> Proxy, internal 'get' calls: 0/36
> Proxy, internal 'getOwnPropertyDescriptor' calls: 0/4
> Proxy, internal 'ownKeys' calls: 0/3
> Proxy, internal 'set' calls: 0/11
> Reflect: 0/20
> RegExp "y" and "u" flags: 0/5
> RegExp is subclassable: 0/4
> RegExp syntax extensions: 8/8
> RegExp.prototype properties: 0/6
> RegExp.prototype.compile: Yes
> Set: 0/19
> String static methods: 0/2
> String.prototype HTML methods: 3/3
> String.prototype methods: 0/10
> Symbol: 0/11
> Unicode code point escapes: 0/2
> WeakMap: 0/12
> WeakSet: 0/11
> __proto__ in object literals: 1/5
> arrow functions: 0/13
> block-level function declaration: No
> class: 0/24
> const: 1/16
> default function parameters: 0/7
> destructuring, assignment: 0/24
> destructuring, declarations: 0/22
> destructuring, parameters: 0/23
> for..of loops: 0/9
> function "name" property: 3/17
> generators: 0/27
> let: 0/12
> miscellaneous: 2/10
> miscellaneous subclassables: 0/6
> new.target: 0/2
> non-strict function semantics: 2/3
> object literal extensions: 0/6
> octal and binary literals: 0/4
> own property order: 4/7
> proper tail calls (tail call optimisation): 0/2
> prototype of bound functions: 0/5
> rest parameters: 0/5
> spread (...) operator: 0/15
> super: 0/8
> template literals: 0/5
> typed arrays: 19/46
> well-known symbols: 0/26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment