Created
June 4, 2016 14:23
-
-
Save artjomb/39db799e4959212718c585b4977c5a90 to your computer and use it in GitHub Desktop.
ECMAScript 6 capability of PhantomJS 2.1.1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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); | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"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%" | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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