diff --git a/src/async-generators/yield-identifier-spread-non-strict.case b/src/async-generators/yield-identifier-spread-non-strict.case
index 0db9d527dfe829d5be5c739569e80af9eb5b525a..73ba0d813b168934d2ed66e07088b2be44def2cd 100644
--- a/src/async-generators/yield-identifier-spread-non-strict.case
+++ b/src/async-generators/yield-identifier-spread-non-strict.case
@@ -12,7 +12,7 @@ info: |
   PropertyDefinition[Yield]:
     (...)
     ...AssignmentExpression[In, ?Yield]
-features: [object-spread]
+features: [object-spread, Symbol]
 flags: [noStrict, async]
 ---*/
 
diff --git a/src/dstr-assignment-for-await/obj-rest-symbol-val.case b/src/dstr-assignment-for-await/obj-rest-symbol-val.case
index 4feed1a46499c0496da204e81c42c2bed0c7671e..79d391edf7892e32763ee604928d67598a12bfa4 100644
--- a/src/dstr-assignment-for-await/obj-rest-symbol-val.case
+++ b/src/dstr-assignment-for-await/obj-rest-symbol-val.case
@@ -6,7 +6,7 @@ desc: >
     RestBindingInitialization creates a new object if lhs is a Symbol
 template: default
 esid: pending
-features: [object-rest]
+features: [object-rest, Symbol]
 ---*/
 
 //- setup
diff --git a/src/dstr-assignment/array-empty-val-symbol.case b/src/dstr-assignment/array-empty-val-symbol.case
index 723fc7eed54541d5f20c9a27c832726383d13fa3..febb378b9c8eaa97f052f8dd186d735f8164755c 100644
--- a/src/dstr-assignment/array-empty-val-symbol.case
+++ b/src/dstr-assignment/array-empty-val-symbol.case
@@ -7,6 +7,7 @@ desc: >
     iterable values and throws for Symbol values.
 template: error
 es6id: 12.14.5.2
+features: [Symbol]
 ---*/
 
 //- setup
diff --git a/src/dstr-assignment/obj-rest-symbol-val.case b/src/dstr-assignment/obj-rest-symbol-val.case
index a7a918f76cc06afe52d9157dc76f2e41be8293e1..4446de77c1d44c48fd90190c022bbc5e286c5f4b 100644
--- a/src/dstr-assignment/obj-rest-symbol-val.case
+++ b/src/dstr-assignment/obj-rest-symbol-val.case
@@ -6,7 +6,7 @@ desc: >
     RestBindingInitialization creates a new object if lhs is a Symbol
 template: default
 esid: pending
-features: [object-rest]
+features: [Symbol, object-rest]
 ---*/
 
 //- setup
diff --git a/src/generators/yield-identifier-spread-non-strict.case b/src/generators/yield-identifier-spread-non-strict.case
index f4ad4f40b5c8f881e7be2ec2365a2782d9b0b4db..6659a5d4d7834eba20949dfea4778116108e563f 100644
--- a/src/generators/yield-identifier-spread-non-strict.case
+++ b/src/generators/yield-identifier-spread-non-strict.case
@@ -12,7 +12,7 @@ info: |
   PropertyDefinition[Yield]:
     (...)
     ...AssignmentExpression[In, ?Yield]
-features: [object-spread]
+features: [Symbol, object-spread]
 flags: [noStrict]
 ---*/
 
diff --git a/src/spread/obj-spread-order.case b/src/spread/obj-spread-order.case
index 370a36807990c581a7ca066a256bf70fb5193dc8..b063476dd3afbe00ed2cae083717f2291dbd9b90 100644
--- a/src/spread/obj-spread-order.case
+++ b/src/spread/obj-spread-order.case
@@ -15,7 +15,7 @@ info: |
     3. ReturnIfAbrupt(fromValue).
     4. Let excludedNames be a new empty List.
     5. Return CopyDataProperties(object, fromValue, excludedNames).
-features: [object-spread]
+features: [Symbol, object-spread]
 ---*/
 
 //- setup
diff --git a/src/spread/obj-symbol-property.case b/src/spread/obj-symbol-property.case
index 4a2b4cd414701b60e9c7740e62f5377bf49d61fe..2f7bc5dd9fb947f704ef8b1efd174843dcdd6262 100644
--- a/src/spread/obj-symbol-property.case
+++ b/src/spread/obj-symbol-property.case
@@ -14,7 +14,7 @@ info: |
     3. ReturnIfAbrupt(fromValue).
     4. Let excludedNames be a new empty List.
     5. Return CopyDataProperties(object, fromValue, excludedNames).
-features: [object-spread]
+features: [Symbol, object-spread]
 ---*/
 
 //- setup
diff --git a/src/spread/obj-with-overrides.case b/src/spread/obj-with-overrides.case
index d72af8987154015fba26d32c0e974db6fdacc3be..654be7c99561ea5b87e4be35132494668855fc73 100644
--- a/src/spread/obj-with-overrides.case
+++ b/src/spread/obj-with-overrides.case
@@ -14,7 +14,7 @@ info: |
     3. ReturnIfAbrupt(fromValue).
     4. Let excludedNames be a new empty List.
     5. Return CopyDataProperties(object, fromValue, excludedNames).
-features: [object-spread]
+features: [Symbol, object-spread]
 ---*/
 
 //- setup
diff --git a/test/built-ins/Array/prototype/sort/comparefn-nonfunction-call-throws.js b/test/built-ins/Array/prototype/sort/comparefn-nonfunction-call-throws.js
index 53558acc296cf441e6f280e6bee9647e92cd3571..33641e8e521f650b3586debc429707e8362ea304 100644
--- a/test/built-ins/Array/prototype/sort/comparefn-nonfunction-call-throws.js
+++ b/test/built-ins/Array/prototype/sort/comparefn-nonfunction-call-throws.js
@@ -12,6 +12,7 @@ info: >
   ...
   1. If _comparefn_ is not *undefined* and IsCallable(_comparefn_) is *false*, throw a *TypeError* exception.
   ...
+features: [Symbol]
 ---*/
 
 var sample = [1, 2, 3];
diff --git a/test/built-ins/ArrayBuffer/prototype/slice/species-constructor-is-not-object.js b/test/built-ins/ArrayBuffer/prototype/slice/species-constructor-is-not-object.js
index ad00e7d3671a1a2413d6464f87661ecf34c9aa04..70493434273f130940cc691c2e7cf9ea7aa84576 100644
--- a/test/built-ins/ArrayBuffer/prototype/slice/species-constructor-is-not-object.js
+++ b/test/built-ins/ArrayBuffer/prototype/slice/species-constructor-is-not-object.js
@@ -21,6 +21,7 @@ info: >
     4. If C is undefined, return defaultConstructor.
     5. If Type(C) is not Object, throw a TypeError exception.
     ...
+features: [Symbol]
 ---*/
 
 var arrayBuffer = new ArrayBuffer(8);
diff --git a/test/built-ins/Boolean/symbol-coercion.js b/test/built-ins/Boolean/symbol-coercion.js
index a3bc31b6b9ea5ec3c85e024f3011456fe57549a2..d1cc5e6d4ef234ec27738c0dd1f6b82642507590 100644
--- a/test/built-ins/Boolean/symbol-coercion.js
+++ b/test/built-ins/Boolean/symbol-coercion.js
@@ -5,6 +5,7 @@ esid: sec-toboolean
 es6id: 7.1.2
 description: >
     Boolean coercion operations on Symbols
+features: [Symbol]
 ---*/
 var sym = Symbol();
 
diff --git a/test/built-ins/DataView/prototype/getInt32/return-abrupt-from-tonumber-byteoffset-symbol-sab.js b/test/built-ins/DataView/prototype/getInt32/return-abrupt-from-tonumber-byteoffset-symbol-sab.js
index d87f83f0e9ec0a38ac9965b0d43365898c7111fa..7687a51af06dc44e50bd389e510147653ef04d4d 100644
--- a/test/built-ins/DataView/prototype/getInt32/return-abrupt-from-tonumber-byteoffset-symbol-sab.js
+++ b/test/built-ins/DataView/prototype/getInt32/return-abrupt-from-tonumber-byteoffset-symbol-sab.js
@@ -19,7 +19,7 @@ info: |
   ...
   4. Let numberIndex be ? ToNumber(requestIndex).
   ...
-features: [SharedArrayBuffer]
+features: [SharedArrayBuffer, Symbol]
 ---*/
 
 var buffer = new SharedArrayBuffer(1);
diff --git a/test/built-ins/DataView/prototype/getInt32/to-boolean-littleendian-sab.js b/test/built-ins/DataView/prototype/getInt32/to-boolean-littleendian-sab.js
index 5e4c3c9ad9eb9826a27ef500c325906444ec3a3e..8fa8e04e9d6653e3f2457140d986280bf2362445 100644
--- a/test/built-ins/DataView/prototype/getInt32/to-boolean-littleendian-sab.js
+++ b/test/built-ins/DataView/prototype/getInt32/to-boolean-littleendian-sab.js
@@ -27,7 +27,7 @@ info: |
   ...
   8. If isLittleEndian is false, reverse the order of the elements of rawValue.
   ...
-features: [SharedArrayBuffer]
+features: [SharedArrayBuffer, Symbol]
 ---*/
 
 var buffer = new SharedArrayBuffer(4);
diff --git a/test/built-ins/DataView/return-abrupt-tonumber-bytelength-symbol-sab.js b/test/built-ins/DataView/return-abrupt-tonumber-bytelength-symbol-sab.js
index 1e0aeaa208991b1ae0c1ff600cd52ef40da6f64b..a1ec74a45e127a13396074ca4dc02b3ff1ae8a42 100644
--- a/test/built-ins/DataView/return-abrupt-tonumber-bytelength-symbol-sab.js
+++ b/test/built-ins/DataView/return-abrupt-tonumber-bytelength-symbol-sab.js
@@ -16,7 +16,7 @@ info: |
   11. Else,
     a. Let viewByteLength be ? ToLength(byteLength).
   ...
-features: [SharedArrayBuffer]
+features: [SharedArrayBuffer, Symbol]
 ---*/
 
 var buffer = new SharedArrayBuffer(8);
diff --git a/test/built-ins/DataView/return-abrupt-tonumber-byteoffset-symbol-sab.js b/test/built-ins/DataView/return-abrupt-tonumber-byteoffset-symbol-sab.js
index c18eba88348b69d1f6d0e928266aa5871d8de28a..b4c7107d6eba9cd92a236fa4516b32d165e29a08 100644
--- a/test/built-ins/DataView/return-abrupt-tonumber-byteoffset-symbol-sab.js
+++ b/test/built-ins/DataView/return-abrupt-tonumber-byteoffset-symbol-sab.js
@@ -13,7 +13,7 @@ info: |
   ...
   4. Let numberOffset be ? ToNumber(byteOffset).
   ...
-features: [SharedArrayBuffer]
+features: [SharedArrayBuffer, Symbol]
 ---*/
 
 var s = Symbol("1");
diff --git a/test/built-ins/Function/prototype/bind/instance-name-non-string.js b/test/built-ins/Function/prototype/bind/instance-name-non-string.js
index b9b9aac26f0b7ed10e4eaab9f92d1e901b0afe6b..75383f8795cde8350e33286e29abf01d8c548f41 100644
--- a/test/built-ins/Function/prototype/bind/instance-name-non-string.js
+++ b/test/built-ins/Function/prototype/bind/instance-name-non-string.js
@@ -11,6 +11,7 @@ info: >
     14. If Type(targetName) is not String, let targetName be the empty string.
     15. Perform SetFunctionName(F, targetName, "bound").
 includes: [propertyHelper.js]
+features: [Symbol]
 ---*/
 
 var target;
diff --git a/test/built-ins/Map/prototype/size/this-not-object-throw.js b/test/built-ins/Map/prototype/size/this-not-object-throw.js
index d55730db89cdc0a6d1d62bb866e1f8d786a8b47d..ec68cb9bddfae7ada780c7593f4a2777e1bd496b 100644
--- a/test/built-ins/Map/prototype/size/this-not-object-throw.js
+++ b/test/built-ins/Map/prototype/size/this-not-object-throw.js
@@ -14,6 +14,7 @@ info: >
   ...
 
 includes: [propertyHelper.js]
+features: [Symbol]
 ---*/
 
 var descriptor = Object.getOwnPropertyDescriptor(Map.prototype, 'size');
diff --git a/test/built-ins/Object/assign/Source-Number-Boolen-Symbol.js b/test/built-ins/Object/assign/Source-Number-Boolen-Symbol.js
index 282c3a5a25dfbe6d3f2e47819ae9b90fd6049e4e..3d0781cecc3d6f839174a8737a9aa5e9a7c1b42b 100644
--- a/test/built-ins/Object/assign/Source-Number-Boolen-Symbol.js
+++ b/test/built-ins/Object/assign/Source-Number-Boolen-Symbol.js
@@ -5,6 +5,7 @@
 description: Number,Boolean,Symbol cannot have own enumerable properties,
              So cannot be Assigned.Here result should be original object.
 es6id:  19.1.2.1.5.c
+features: [Symbol]
 ---*/
 
 var target = new Object();
diff --git a/test/built-ins/Object/assign/Target-Symbol.js b/test/built-ins/Object/assign/Target-Symbol.js
index ef1335a42570de246ba3fb9a72c53bd23a64f629..2c24f4b504959391aeb7b44e8277ea3c9017a3c9 100644
--- a/test/built-ins/Object/assign/Target-Symbol.js
+++ b/test/built-ins/Object/assign/Target-Symbol.js
@@ -5,6 +5,7 @@
 description: Test the first argument(target) of Object.Assign(target,...sources),
              if target is Symbol,the return value should be a new Symbol object whose [[SymbolData]] value is target.
 es6id:  19.1.2.1.1
+features: [Symbol]
 ---*/
 
 var target = Symbol('foo');
diff --git a/test/built-ins/Object/defineProperty/symbol-data-property-configurable.js b/test/built-ins/Object/defineProperty/symbol-data-property-configurable.js
index 4232d556692c7f19c2c26dc87bfed92af2cc35b7..36dc2624006159376791266d26b46f826beb7b23 100644
--- a/test/built-ins/Object/defineProperty/symbol-data-property-configurable.js
+++ b/test/built-ins/Object/defineProperty/symbol-data-property-configurable.js
@@ -4,6 +4,7 @@
 es6id: 19.1.2.4
 description: >
     Symbol used as property for configurable data property definition
+features: [Symbol]
 ---*/
 var sym = Symbol();
 var obj = {};
diff --git a/test/built-ins/Object/defineProperty/symbol-data-property-default-non-strict.js b/test/built-ins/Object/defineProperty/symbol-data-property-default-non-strict.js
index c39f9e27914e73e6fe37a9d544e9ab4e1493f204..a54deb3a95b261219a3944f3f8c14e6d08cc64d8 100644
--- a/test/built-ins/Object/defineProperty/symbol-data-property-default-non-strict.js
+++ b/test/built-ins/Object/defineProperty/symbol-data-property-default-non-strict.js
@@ -5,6 +5,7 @@ es6id: 19.1.2.4
 description: >
     Symbol used as property for property definition
 flags: [noStrict]
+features: [Symbol]
 ---*/
 var sym = Symbol();
 var obj = {};
diff --git a/test/built-ins/Object/defineProperty/symbol-data-property-default-strict.js b/test/built-ins/Object/defineProperty/symbol-data-property-default-strict.js
index dd597cda7ea2c51e5798bd2fd37c5c41e96a6072..93cffc023f9d414c06f08210989868d761073fa1 100644
--- a/test/built-ins/Object/defineProperty/symbol-data-property-default-strict.js
+++ b/test/built-ins/Object/defineProperty/symbol-data-property-default-strict.js
@@ -5,6 +5,7 @@ es6id: 19.1.2.4
 description: >
     Symbol used as property for default data property definition
 flags: [onlyStrict]
+features: [Symbol]
 ---*/
 var sym = Symbol();
 var obj = {};
diff --git a/test/built-ins/Object/defineProperty/symbol-data-property-writable.js b/test/built-ins/Object/defineProperty/symbol-data-property-writable.js
index 004e47ef54ead7684564fb29d6ea6469480ed3e7..b2d3a873afd2aa272e476fddf45fa1f7b9f8c648 100644
--- a/test/built-ins/Object/defineProperty/symbol-data-property-writable.js
+++ b/test/built-ins/Object/defineProperty/symbol-data-property-writable.js
@@ -4,6 +4,7 @@
 es6id: 19.1.2.4
 description: >
     Symbol used as property for writable data property definition
+features: [Symbol]
 ---*/
 var sym = Symbol();
 var obj = {};
diff --git a/test/built-ins/Object/freeze/frozen-object-contains-symbol-properties-non-strict.js b/test/built-ins/Object/freeze/frozen-object-contains-symbol-properties-non-strict.js
index a322a6abcd076f353ae45e5b041162f96b3e0af0..6af3bf0947fde809adb3b0af810f7d1fd83e84d4 100644
--- a/test/built-ins/Object/freeze/frozen-object-contains-symbol-properties-non-strict.js
+++ b/test/built-ins/Object/freeze/frozen-object-contains-symbol-properties-non-strict.js
@@ -5,6 +5,7 @@ es6id: 19.1.2.5
 description: >
     Frozen object contains symbol properties.
 flags: [noStrict]
+features: [Symbol]
 ---*/
 var sym = Symbol();
 var obj = {};
diff --git a/test/built-ins/Object/freeze/frozen-object-contains-symbol-properties-strict.js b/test/built-ins/Object/freeze/frozen-object-contains-symbol-properties-strict.js
index 9cc20f8cfc842ddb362d359cb64d8f35251fc591..9b93997cbb9878a5c969fab01f611a01be463bd2 100644
--- a/test/built-ins/Object/freeze/frozen-object-contains-symbol-properties-strict.js
+++ b/test/built-ins/Object/freeze/frozen-object-contains-symbol-properties-strict.js
@@ -5,6 +5,7 @@ es6id: 19.1.2.5
 description: >
     Frozen object contains symbol properties.
 flags: [onlyStrict]
+features: [Symbol]
 ---*/
 var sym = Symbol("66");
 var obj = {};
diff --git a/test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-with-description.js b/test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-with-description.js
index a9a880a2c4dac8f4a3e9e501e9c5a54f3e67ed2b..96102bf168faa3799df45b66b50f90669f229512 100644
--- a/test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-with-description.js
+++ b/test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-with-description.js
@@ -4,6 +4,7 @@
 es6id: 19.1.2.8
 description: >
     Object.getOwnPropertySymbols returns all symbol properties that have descriptions
+features: [Symbol]
 ---*/
 
 var sym = Symbol("description");
diff --git a/test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-without-description.js b/test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-without-description.js
index db73cd72fa3b4a536b5fb4c1d7885eb0d9c73b91..26a288b03478ddfefc941152848ce3c9f49d3d88 100644
--- a/test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-without-description.js
+++ b/test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-without-description.js
@@ -4,6 +4,7 @@
 es6id: 19.1.2.8
 description: >
     Object.getOwnPropertySymbols returns all symbol properties that do not have descriptions
+features: [Symbol]
 ---*/
 
 var sym = Symbol();
diff --git a/test/built-ins/Object/is/not-same-value-x-y-symbol.js b/test/built-ins/Object/is/not-same-value-x-y-symbol.js
index 4f17e77a8d132d949d3702bb583b952a662ffc56..28ccc0a78e76c4e39070e8f127c57cb71ecd2622 100644
--- a/test/built-ins/Object/is/not-same-value-x-y-symbol.js
+++ b/test/built-ins/Object/is/not-same-value-x-y-symbol.js
@@ -10,6 +10,7 @@ description: >
       a. If x and y are both the same Symbol value, 
           return true; otherwise, return false.
     ...
+features: [Symbol]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Object/is/same-value-x-y-symbol.js b/test/built-ins/Object/is/same-value-x-y-symbol.js
index 9e6b206f7363e88f0bf20df87baaef3192942d63..05153d07617451d8eb2652d15e676941b3121dcd 100644
--- a/test/built-ins/Object/is/same-value-x-y-symbol.js
+++ b/test/built-ins/Object/is/same-value-x-y-symbol.js
@@ -10,6 +10,7 @@ description: >
       a. If x and y are both the same Symbol value, 
           return true; otherwise, return false.
     ...
+features: [Symbol]
 ---*/
 
 var a = Symbol();
diff --git a/test/built-ins/Object/is/symbol-object-is-same-value.js b/test/built-ins/Object/is/symbol-object-is-same-value.js
index 8f81eb4314ece597895b5f9357af5925650ae9fa..b4d5a1384312f77f55635f337800493ff1cdd3bd 100644
--- a/test/built-ins/Object/is/symbol-object-is-same-value.js
+++ b/test/built-ins/Object/is/symbol-object-is-same-value.js
@@ -4,6 +4,7 @@
 es6id: 7.2.
 description: >
     Object.is/SameValue: Symbol
+features: [Symbol]
 ---*/
 var symA = Symbol('66');
 var symB = Symbol('66');
diff --git a/test/built-ins/Object/keys/proxy-keys.js b/test/built-ins/Object/keys/proxy-keys.js
index 69da52ddaac675e6d3c694d6c1847cec7972c91a..ac349430fa6330867126bbcbdc4ffd54c8248042 100644
--- a/test/built-ins/Object/keys/proxy-keys.js
+++ b/test/built-ins/Object/keys/proxy-keys.js
@@ -21,6 +21,7 @@ info: |
     a. If Type(key) is String, then
       i. Let desc be ? O.[[GetOwnProperty]](key).
       ...
+features: [Symbol]
 ---*/
 
 let log = [];
diff --git a/test/built-ins/Object/preventExtensions/symbol-object-contains-symbol-properties-non-strict.js b/test/built-ins/Object/preventExtensions/symbol-object-contains-symbol-properties-non-strict.js
index 9617575ad9341b1e8d327844cc32b81f492b9a3c..a8625fd1b160e0a0a6d2ceafc75918beb1f88f2e 100644
--- a/test/built-ins/Object/preventExtensions/symbol-object-contains-symbol-properties-non-strict.js
+++ b/test/built-ins/Object/preventExtensions/symbol-object-contains-symbol-properties-non-strict.js
@@ -5,6 +5,7 @@ es6id: 19.4
 description: >
     Object.preventExtensions(obj) where obj contains symbol properties.
 flags: [noStrict]
+features: [Symbol]
 ---*/
 var symA = Symbol("A");
 var symB = Symbol("B");
diff --git a/test/built-ins/Object/preventExtensions/symbol-object-contains-symbol-properties-strict.js b/test/built-ins/Object/preventExtensions/symbol-object-contains-symbol-properties-strict.js
index 01cfb4b6be40416b72cf3b81da616466e5444940..6bb4bdf18715575b24b3844be2e973e6cd7a0c5a 100644
--- a/test/built-ins/Object/preventExtensions/symbol-object-contains-symbol-properties-strict.js
+++ b/test/built-ins/Object/preventExtensions/symbol-object-contains-symbol-properties-strict.js
@@ -5,6 +5,7 @@ es6id: 19.4
 description: >
     Object.preventExtensions(obj) where obj contains symbol properties.
 flags: [onlyStrict]
+features: [Symbol]
 ---*/
 var symA = Symbol("A");
 var symB = Symbol("B");
diff --git a/test/built-ins/Object/prototype/hasOwnProperty/symbol_own_property.js b/test/built-ins/Object/prototype/hasOwnProperty/symbol_own_property.js
index f69cc1beb5557be9f6a79a74a03646781f2e851e..d52ed329873584fc60228fc0943e47b10a8951c2 100644
--- a/test/built-ins/Object/prototype/hasOwnProperty/symbol_own_property.js
+++ b/test/built-ins/Object/prototype/hasOwnProperty/symbol_own_property.js
@@ -10,6 +10,7 @@ info: >
   2. ReturnIfAbrupt(P).
   ...
 es6id: 19.1.3.2
+features: [Symbol]
 ---*/
 
 var obj = {};
diff --git a/test/built-ins/Object/prototype/hasOwnProperty/symbol_property_toString.js b/test/built-ins/Object/prototype/hasOwnProperty/symbol_property_toString.js
index 0f52fb72f3520d9c22f1b9d964b7be8b388ccfeb..1e0fcc89265987b2f749b26e55011ec1c7e62008 100644
--- a/test/built-ins/Object/prototype/hasOwnProperty/symbol_property_toString.js
+++ b/test/built-ins/Object/prototype/hasOwnProperty/symbol_property_toString.js
@@ -10,6 +10,7 @@ info: >
   2. ReturnIfAbrupt(P).
   ...
 es6id: 19.1.3.2
+features: [Symbol]
 ---*/
 
 var obj = {};
diff --git a/test/built-ins/Object/prototype/hasOwnProperty/symbol_property_valueOf.js b/test/built-ins/Object/prototype/hasOwnProperty/symbol_property_valueOf.js
index 772fa4f15d3a4a9d799695e2503c5990de5c46b5..2827923f0ba891402b841e8aeff6d391ea2ddd05 100644
--- a/test/built-ins/Object/prototype/hasOwnProperty/symbol_property_valueOf.js
+++ b/test/built-ins/Object/prototype/hasOwnProperty/symbol_property_valueOf.js
@@ -10,6 +10,7 @@ info: >
   2. ReturnIfAbrupt(P).
   ...
 es6id: 19.1.3.2
+features: [Symbol]
 ---*/
 
 var obj = {};
diff --git a/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_own_property.js b/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_own_property.js
index 201f951b1a1afcb21c95b43bd809c11ec08ddd53..5a396dd35d29b6f3c8b05059d388183c25a5750a 100644
--- a/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_own_property.js
+++ b/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_own_property.js
@@ -10,6 +10,7 @@ info: >
   2. ReturnIfAbrupt(P).
   ...
 es6id: 19.1.3.4
+features: [Symbol]
 ---*/
 
 var obj = {};
diff --git a/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_property_toString.js b/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_property_toString.js
index 945f5d1f310238ed7b385ec017a54fe6659a5037..120b290f0513008836a62bd545d842c254b6ff5c 100644
--- a/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_property_toString.js
+++ b/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_property_toString.js
@@ -10,6 +10,7 @@ info: >
   2. ReturnIfAbrupt(P).
   ...
 es6id: 19.1.3.4
+features: [Symbol]
 ---*/
 
 var obj = {};
diff --git a/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_property_valueOf.js b/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_property_valueOf.js
index 89397e7e3ca72318949de763d4570a3a6b46b701..520155c2085b59535f90cb732815ba0bc4cf7f77 100644
--- a/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_property_valueOf.js
+++ b/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_property_valueOf.js
@@ -10,6 +10,7 @@ info: >
   2. ReturnIfAbrupt(P).
   ...
 es6id: 19.1.3.4
+features: [Symbol]
 ---*/
 
 var obj = {};
diff --git a/test/built-ins/Object/seal/symbol-object-contains-symbol-properties-non-strict.js b/test/built-ins/Object/seal/symbol-object-contains-symbol-properties-non-strict.js
index dcb68e35f27bc33646fd497a99c6cd985978b2b3..831deb3d571980782bfe63f24d7113fb1702d22f 100644
--- a/test/built-ins/Object/seal/symbol-object-contains-symbol-properties-non-strict.js
+++ b/test/built-ins/Object/seal/symbol-object-contains-symbol-properties-non-strict.js
@@ -5,6 +5,7 @@ es6id: 19.4
 description: >
     Object.seal(obj) where obj contains symbol properties.
 flags: [noStrict]
+features: [Symbol]
 ---*/
 var symA = Symbol("A");
 var symB = Symbol("B");
diff --git a/test/built-ins/Object/seal/symbol-object-contains-symbol-properties-strict.js b/test/built-ins/Object/seal/symbol-object-contains-symbol-properties-strict.js
index d0c59884a41c33dfdccac7947dae5b990fc8da5f..0c04b431696c58e7d30a0c665a90d4589c6c0fd1 100644
--- a/test/built-ins/Object/seal/symbol-object-contains-symbol-properties-strict.js
+++ b/test/built-ins/Object/seal/symbol-object-contains-symbol-properties-strict.js
@@ -5,6 +5,7 @@ es6id: 19.4
 description: >
     Object.seal(obj) where obj contains symbol properties.
 flags: [onlyStrict]
+features: [Symbol]
 ---*/
 var symA = Symbol("A");
 var symB = Symbol("B");
diff --git a/test/built-ins/Object/symbol_object-returns-fresh-symbol.js b/test/built-ins/Object/symbol_object-returns-fresh-symbol.js
index c4aa3cf0222adbdf5c2a40130668b576e4df067e..453156c56587f9d63ad030e984f6ab6e18df81c5 100644
--- a/test/built-ins/Object/symbol_object-returns-fresh-symbol.js
+++ b/test/built-ins/Object/symbol_object-returns-fresh-symbol.js
@@ -4,6 +4,7 @@
 es6id: 19.1.1.1_S3
 description: >
     Object(sym) returns a fresh Symbol object
+features: [Symbol]
 ---*/
 var symA = Symbol('A');
 var symB = Symbol();
diff --git a/test/built-ins/Proxy/ownKeys/return-duplicate-symbol-entries-throws.js b/test/built-ins/Proxy/ownKeys/return-duplicate-symbol-entries-throws.js
index dfe27205c0585de085baa9b43ccf0d8fb7186b6c..53194a058d4f9d4f52b7bccc9c2c177b1835e771 100644
--- a/test/built-ins/Proxy/ownKeys/return-duplicate-symbol-entries-throws.js
+++ b/test/built-ins/Proxy/ownKeys/return-duplicate-symbol-entries-throws.js
@@ -9,6 +9,7 @@ info: >
 
     ...
     9. If trapResult contains any duplicate entries, throw a TypeError exception.
+features: [Symbol]
 ---*/
 
 var s = Symbol();
diff --git a/test/built-ins/Set/prototype/add/this-not-object-throw-symbol.js b/test/built-ins/Set/prototype/add/this-not-object-throw-symbol.js
index 759147e15fb3989629bd92644964cfcef182e3d9..ade8dfc7a229c55fa46657ad7ef44aa15c7ee9ce 100644
--- a/test/built-ins/Set/prototype/add/this-not-object-throw-symbol.js
+++ b/test/built-ins/Set/prototype/add/this-not-object-throw-symbol.js
@@ -8,6 +8,7 @@ description: >
     1. Let S be the this value.
     2. If Type(S) is not Object, throw a TypeError exception.
 
+features: [Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Set/prototype/clear/this-not-object-throw-symbol.js b/test/built-ins/Set/prototype/clear/this-not-object-throw-symbol.js
index 6730e5be39b53c854813457cb5e906c90abc97ec..2525d91091491344c927a86c7d4f7a4310c9a7e3 100644
--- a/test/built-ins/Set/prototype/clear/this-not-object-throw-symbol.js
+++ b/test/built-ins/Set/prototype/clear/this-not-object-throw-symbol.js
@@ -8,6 +8,7 @@ description: >
     1. Let S be the this value.
     2. If Type(S) is not Object, throw a TypeError exception.
 
+features: [Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Set/prototype/delete/this-not-object-throw-symbol.js b/test/built-ins/Set/prototype/delete/this-not-object-throw-symbol.js
index de3f319c058beb3ec3acaa3c4d76fb45ed497213..14352979744e2bc66e1f92e3924f8984b1106ccf 100644
--- a/test/built-ins/Set/prototype/delete/this-not-object-throw-symbol.js
+++ b/test/built-ins/Set/prototype/delete/this-not-object-throw-symbol.js
@@ -8,6 +8,7 @@ description: >
     1. Let S be the this value.
     2. If Type(S) is not Object, throw a TypeError exception.
 
+features: [Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Set/prototype/entries/this-not-object-throw-symbol.js b/test/built-ins/Set/prototype/entries/this-not-object-throw-symbol.js
index f727279c4696ef6f767b9553848c5fbc96791703..e006726c77e3dcb6b0763c067a2cd3d66f910024 100644
--- a/test/built-ins/Set/prototype/entries/this-not-object-throw-symbol.js
+++ b/test/built-ins/Set/prototype/entries/this-not-object-throw-symbol.js
@@ -13,6 +13,7 @@ description: >
 
     1. If Type(set) is not Object, throw a TypeError exception.
     ...
+features: [Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Set/prototype/forEach/callback-not-callable-symbol.js b/test/built-ins/Set/prototype/forEach/callback-not-callable-symbol.js
index 789b3e067ef3b14021a584ace00daf05894fa0f1..d715ea6e2983e47839db31b74c6e374374a7924d 100644
--- a/test/built-ins/Set/prototype/forEach/callback-not-callable-symbol.js
+++ b/test/built-ins/Set/prototype/forEach/callback-not-callable-symbol.js
@@ -11,6 +11,7 @@ description: >
 
     Passing `symbol` as callback
 
+features: [Symbol]
 ---*/
 
 var s = new Set([1]);
diff --git a/test/built-ins/Set/prototype/forEach/this-not-object-throw-symbol.js b/test/built-ins/Set/prototype/forEach/this-not-object-throw-symbol.js
index c2e0b8645d994d5d8c39b193c8174e577ab183c5..01441e8cfff5218c80932b28ff3c7f992191e193 100644
--- a/test/built-ins/Set/prototype/forEach/this-not-object-throw-symbol.js
+++ b/test/built-ins/Set/prototype/forEach/this-not-object-throw-symbol.js
@@ -8,6 +8,7 @@ description: >
     1. Let S be the this value.
     2. If Type(S) is not Object, throw a TypeError exception.
 
+features: [Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Set/prototype/has/returns-false-when-value-not-present-symbol.js b/test/built-ins/Set/prototype/has/returns-false-when-value-not-present-symbol.js
index 64ae5c7d965e8986d31413f63260d69ba75721d7..04b5ac0c11144db70464ad76125cd5d6d598ccbf 100644
--- a/test/built-ins/Set/prototype/has/returns-false-when-value-not-present-symbol.js
+++ b/test/built-ins/Set/prototype/has/returns-false-when-value-not-present-symbol.js
@@ -8,6 +8,7 @@ description: >
     ...
     6. Return false.
 
+features: [Symbol]
 ---*/
 
 var s = new Set();
diff --git a/test/built-ins/Set/prototype/has/returns-true-when-value-present-symbol.js b/test/built-ins/Set/prototype/has/returns-true-when-value-present-symbol.js
index 7620fec78e01fe4f2e6ba8dc6b1fff33df284651..3a47d9ca36738c7df5c72d43de1585c51c3bf6b0 100644
--- a/test/built-ins/Set/prototype/has/returns-true-when-value-present-symbol.js
+++ b/test/built-ins/Set/prototype/has/returns-true-when-value-present-symbol.js
@@ -10,6 +10,7 @@ description: >
       a. If e is not empty and SameValueZero(e, value) is true, return true.
     ...
 
+features: [Symbol]
 ---*/
 
 var s = new Set();
diff --git a/test/built-ins/Set/prototype/has/this-not-object-throw-symbol.js b/test/built-ins/Set/prototype/has/this-not-object-throw-symbol.js
index c64343df83c132f66c100eff602d667ccadcd612..46a76eb993c9b3af19577ab6084fe866d9e8478f 100644
--- a/test/built-ins/Set/prototype/has/this-not-object-throw-symbol.js
+++ b/test/built-ins/Set/prototype/has/this-not-object-throw-symbol.js
@@ -8,6 +8,7 @@ description: >
     1. Let S be the this value.
     2. If Type(S) is not Object, throw a TypeError exception.
 
+features: [Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Set/prototype/size/returns-count-of-present-values-by-insertion.js b/test/built-ins/Set/prototype/size/returns-count-of-present-values-by-insertion.js
index 9ab0554651149c1258774b0e1a3039d65f168b8f..096ed5e7382fe0f94579e786a2bf6eb8ccb90bcf 100644
--- a/test/built-ins/Set/prototype/size/returns-count-of-present-values-by-insertion.js
+++ b/test/built-ins/Set/prototype/size/returns-count-of-present-values-by-insertion.js
@@ -9,6 +9,7 @@ description: >
     6. For each e that is an element of entries
       a. If e is not empty, set count to count+1.
 
+features: [Symbol]
 ---*/
 
 var s = new Set();
diff --git a/test/built-ins/Set/prototype/size/returns-count-of-present-values-by-iterable.js b/test/built-ins/Set/prototype/size/returns-count-of-present-values-by-iterable.js
index 7243d04731e0dc948f8555691e36f701aad74f49..d7cc5a8a9cad29ae27db657e049a49a9ace1af5e 100644
--- a/test/built-ins/Set/prototype/size/returns-count-of-present-values-by-iterable.js
+++ b/test/built-ins/Set/prototype/size/returns-count-of-present-values-by-iterable.js
@@ -9,6 +9,7 @@ description: >
     6. For each e that is an element of entries
       a. If e is not empty, set count to count+1.
 
+features: [Symbol]
 ---*/
 
 var s = new Set([0, undefined, false, NaN, null, "", Symbol()]);
diff --git a/test/built-ins/Set/prototype/values/this-not-object-throw-symbol.js b/test/built-ins/Set/prototype/values/this-not-object-throw-symbol.js
index 19eb80a4875cfe1f782134117837a24007c38dd9..549fa1f1fc4dacc0092142fbd71ee22e11e1a490 100644
--- a/test/built-ins/Set/prototype/values/this-not-object-throw-symbol.js
+++ b/test/built-ins/Set/prototype/values/this-not-object-throw-symbol.js
@@ -13,6 +13,7 @@ description: >
 
     1. If Type(set) is not Object, throw a TypeError exception.
     ...
+features: [Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Set/symbol-as-entry.js b/test/built-ins/Set/symbol-as-entry.js
index f60743a3126f219d60052bfb252230cfcc2be106..2a53834720cbb821dfa4c2d4037f947a01b63171 100644
--- a/test/built-ins/Set/symbol-as-entry.js
+++ b/test/built-ins/Set/symbol-as-entry.js
@@ -4,7 +4,7 @@
 es6id: 19.4
 description: >
     Symbol as Set entry
-features: [Set]
+features: [Symbol, Set]
 ---*/
 var set = new Set();
 var sym = Symbol();
diff --git a/test/built-ins/SharedArrayBuffer/newtarget-prototype-is-not-object.js b/test/built-ins/SharedArrayBuffer/newtarget-prototype-is-not-object.js
index 802b1787cb630e2676475ea53f930fde5d8ac0ac..0dc598dfe31e508b265e0d64054f96ec465457fa 100644
--- a/test/built-ins/SharedArrayBuffer/newtarget-prototype-is-not-object.js
+++ b/test/built-ins/SharedArrayBuffer/newtarget-prototype-is-not-object.js
@@ -18,7 +18,7 @@ info: >
     1. Let obj be ? OrdinaryCreateFromConstructor(constructor, "%SharedArrayBufferPrototype%",
        «[[ArrayBufferData]], [[ArrayBufferByteLength]]» ).
     ...
-features: [Reflect.construct]
+features: [Symbol, Reflect.construct]
 ---*/
 
 function newTarget() { }
diff --git a/test/built-ins/SharedArrayBuffer/prototype/byteLength/this-is-not-object.js b/test/built-ins/SharedArrayBuffer/prototype/byteLength/this-is-not-object.js
index 79e857b75f290a4152175a954a5471b01b0e51d3..4cc423002e646dfdd12cd3834f17561c6e4240d4 100644
--- a/test/built-ins/SharedArrayBuffer/prototype/byteLength/this-is-not-object.js
+++ b/test/built-ins/SharedArrayBuffer/prototype/byteLength/this-is-not-object.js
@@ -3,6 +3,7 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: Throws a TypeError exception when `this` is not Object
+features: [Symbol]
 ---*/
 
 var getter = Object.getOwnPropertyDescriptor(
diff --git a/test/built-ins/SharedArrayBuffer/prototype/slice/context-is-not-object.js b/test/built-ins/SharedArrayBuffer/prototype/slice/context-is-not-object.js
index ce054180b712e51182eaa80af0f0a195c62878c9..95b7ee53cf5e54f2ffc51f16ef16cd3cca5c7dcd 100644
--- a/test/built-ins/SharedArrayBuffer/prototype/slice/context-is-not-object.js
+++ b/test/built-ins/SharedArrayBuffer/prototype/slice/context-is-not-object.js
@@ -7,6 +7,7 @@ description: >
   Throws a TypeError if `this` is not an Object.
 info: >
   SharedArrayBuffer.prototype.slice ( start, end )
+features: [Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/SharedArrayBuffer/prototype/slice/species-constructor-is-not-object.js b/test/built-ins/SharedArrayBuffer/prototype/slice/species-constructor-is-not-object.js
index 86212bc65b906f09532647d9b4f9ba15d6b7f67d..7920c804a30776690006bbe1d5ee028f2333d6d0 100644
--- a/test/built-ins/SharedArrayBuffer/prototype/slice/species-constructor-is-not-object.js
+++ b/test/built-ins/SharedArrayBuffer/prototype/slice/species-constructor-is-not-object.js
@@ -8,6 +8,7 @@ description: >
 info: >
   SharedArrayBuffer.prototype.slice ( start, end )
 
+features: [Symbol]
 ---*/
 
 var arrayBuffer = new SharedArrayBuffer(8);
diff --git a/test/built-ins/Symbol/auto-boxing-non-strict.js b/test/built-ins/Symbol/auto-boxing-non-strict.js
index 459bc75d263a9b437c511e75af7d498eaf74d531..9ba613193aa43e3dd354b1edc3703bc582b8a10c 100644
--- a/test/built-ins/Symbol/auto-boxing-non-strict.js
+++ b/test/built-ins/Symbol/auto-boxing-non-strict.js
@@ -5,6 +5,7 @@ es6id: 19.4
 description: >
     Symbol ToObject auto-boxing
 flags: [noStrict]
+features: [Symbol]
 ---*/
 
 var sym = Symbol('66');
diff --git a/test/built-ins/Symbol/auto-boxing-strict.js b/test/built-ins/Symbol/auto-boxing-strict.js
index 0d18c536033a1aa04ea5e702047fd552d4763f33..02d4c6614d1334043e30a6b70bcf1d1fe6c1c539 100644
--- a/test/built-ins/Symbol/auto-boxing-strict.js
+++ b/test/built-ins/Symbol/auto-boxing-strict.js
@@ -5,6 +5,7 @@ es6id: 19.4
 description: >
     Symbol ToObject auto-boxing
 flags: [onlyStrict]
+features: [Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Symbol/constructor.js b/test/built-ins/Symbol/constructor.js
index cae673b1ab946a2f0cec7223681196e6b3d7c32a..e62f06c8fd8a71f366071202058dc616d317dae0 100644
--- a/test/built-ins/Symbol/constructor.js
+++ b/test/built-ins/Symbol/constructor.js
@@ -4,6 +4,7 @@
 es6id: 19.4.3.1
 description: >
     Symbol constructor
+features: [Symbol]
 ---*/
 assert.sameValue(
     Object.getPrototypeOf(Symbol('66')).constructor,
diff --git a/test/built-ins/Symbol/desc-to-string-symbol.js b/test/built-ins/Symbol/desc-to-string-symbol.js
index e4b6d2954ec76505cf74826b23283f763ec60f88..e9aaa69b74224c9524f50b736a65730e5281f61a 100644
--- a/test/built-ins/Symbol/desc-to-string-symbol.js
+++ b/test/built-ins/Symbol/desc-to-string-symbol.js
@@ -10,6 +10,7 @@ info: |
     2. Else, let descString be ? ToString(description).
     3. Return a new unique Symbol value whose [[Description]] value is
        descString.
+features: [Symbol]
 ---*/
 
 var s = Symbol('1');
diff --git a/test/built-ins/Symbol/desc-to-string.js b/test/built-ins/Symbol/desc-to-string.js
index b79f76eda65618f6091ab4de60b53af23b799f4e..aa6e885b844f22f48435d04281b04c17e3357c08 100644
--- a/test/built-ins/Symbol/desc-to-string.js
+++ b/test/built-ins/Symbol/desc-to-string.js
@@ -10,6 +10,7 @@ info: |
     2. Else, let descString be ? ToString(description).
     3. Return a new unique Symbol value whose [[Description]] value is
        descString.
+features: [Symbol]
 ---*/
 
 var calls, val;
diff --git a/test/built-ins/Symbol/for/create-value.js b/test/built-ins/Symbol/for/create-value.js
index b5ceaeacb9c1d196d948807d2f78fa366040d08a..dc1aee35b5379d286a683290be38ede50f415fa6 100644
--- a/test/built-ins/Symbol/for/create-value.js
+++ b/test/built-ins/Symbol/for/create-value.js
@@ -15,6 +15,7 @@ info: >
     5. Append the Record { [[Key]]: stringKey, [[Symbol]]: newSymbol } to the
        GlobalSymbolRegistry List.
     6. Return newSymbol. 
+features: [Symbol]
 ---*/
 
 var canonical = Symbol.for('s');
diff --git a/test/built-ins/Symbol/for/to-string-err.js b/test/built-ins/Symbol/for/to-string-err.js
index 77348fbd4505fdf3d9510cdd6bd0f285bd040355..22689a8468e6e5325162ba81fbbf40afa969428f 100644
--- a/test/built-ins/Symbol/for/to-string-err.js
+++ b/test/built-ins/Symbol/for/to-string-err.js
@@ -6,6 +6,7 @@ es6id: 19.4.2.1
 description: Error resulting from string coercion of first argument
 info: >
     1. Let stringKey be ? ToString(key).
+features: [Symbol]
 ---*/
 
 var subject = {
diff --git a/test/built-ins/Symbol/invoked-with-new.js b/test/built-ins/Symbol/invoked-with-new.js
index c4274b013e25b381b0e92788d37898d7fc4a08ae..a3158cc68f97e7ca3c882d9f0855e4d661ed86a7 100644
--- a/test/built-ins/Symbol/invoked-with-new.js
+++ b/test/built-ins/Symbol/invoked-with-new.js
@@ -6,6 +6,7 @@ es6id: 19.4.1
 description: The Symbol constructor may not be invoked with `new`
 info: |
     1. If NewTarget is not undefined, throw a TypeError exception.
+features: [Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Symbol/keyFor/arg-non-symbol.js b/test/built-ins/Symbol/keyFor/arg-non-symbol.js
index 2042cfa6f165edd7217e65f20ebbd386d1a6dc05..4c3820e6f375df7c88032d2ec023ccad49ef735e 100644
--- a/test/built-ins/Symbol/keyFor/arg-non-symbol.js
+++ b/test/built-ins/Symbol/keyFor/arg-non-symbol.js
@@ -6,6 +6,7 @@ es6id: 19.4.2.5
 description: Called with a non-symbol argument
 info: >
     1. If Type(sym) is not Symbol, throw a TypeError exception.
+features: [Symbol]
 ---*/
 
 assert.sameValue(typeof Symbol.keyFor, 'function');
diff --git a/test/built-ins/Symbol/keyFor/arg-symbol-registry-miss.js b/test/built-ins/Symbol/keyFor/arg-symbol-registry-miss.js
index 86bf657a8fd29fb6515786767d705b5152e3f769..2f70c632a8bf9df4bfe6569fac5b6dd82ddeb3f3 100644
--- a/test/built-ins/Symbol/keyFor/arg-symbol-registry-miss.js
+++ b/test/built-ins/Symbol/keyFor/arg-symbol-registry-miss.js
@@ -12,6 +12,7 @@ info: >
     3. Assert: GlobalSymbolRegistry does not currently contain an entry for
        sym.
     4. Return undefined. 
+features: [Symbol]
 ---*/
 
 var constructed = Symbol('Symbol.iterator');
diff --git a/test/built-ins/Symbol/prototype/intrinsic.js b/test/built-ins/Symbol/prototype/intrinsic.js
index e51bafffaafe3dfb689079b6b2d7c249789b3dcb..2059f7b84e4467627e8173fbdca53cd2ca2b5be3 100644
--- a/test/built-ins/Symbol/prototype/intrinsic.js
+++ b/test/built-ins/Symbol/prototype/intrinsic.js
@@ -4,6 +4,7 @@
 es6id: 19.4.3
 description: >
     Symbol prototype
+features: [Symbol]
 ---*/
 assert.sameValue(
     Object.getPrototypeOf(Symbol('66')),
diff --git a/test/built-ins/Symbol/prototype/toString/toString-default-attributes-non-strict.js b/test/built-ins/Symbol/prototype/toString/toString-default-attributes-non-strict.js
index 5fdb58e5b1920da5153998c64d4edbefbc5ba22c..a37568c43b09f5c11e5684f079cd563ae94e359e 100644
--- a/test/built-ins/Symbol/prototype/toString/toString-default-attributes-non-strict.js
+++ b/test/built-ins/Symbol/prototype/toString/toString-default-attributes-non-strict.js
@@ -5,6 +5,7 @@ es6id: 19.4
 description: >
     Symbol property get and set, non-strict
 flags: [noStrict]
+features: [Symbol]
 ---*/
 
 var sym = Symbol('66');
diff --git a/test/built-ins/Symbol/prototype/toString/toString-default-attributes-strict.js b/test/built-ins/Symbol/prototype/toString/toString-default-attributes-strict.js
index 96df7a934698e8cb23414d4a8753bd56f7380eb0..188712f548ce0f2922964016ddde7d464593e14a 100644
--- a/test/built-ins/Symbol/prototype/toString/toString-default-attributes-strict.js
+++ b/test/built-ins/Symbol/prototype/toString/toString-default-attributes-strict.js
@@ -5,6 +5,7 @@ es6id: 19.4
 description: >
     Symbol property get and set, strict
 flags: [onlyStrict]
+features: [Symbol]
 ---*/
 
 var sym = Symbol("66");
diff --git a/test/built-ins/Symbol/prototype/toString/toString.js b/test/built-ins/Symbol/prototype/toString/toString.js
index 1a6541981b44db426189d595cc3bd161f11e91f2..f771cb1e1cc0115444cfd7e72551181a577dca83 100644
--- a/test/built-ins/Symbol/prototype/toString/toString.js
+++ b/test/built-ins/Symbol/prototype/toString/toString.js
@@ -4,6 +4,7 @@
 es6id: 19.4.3.2
 description: >
     toString operations on Symbols
+features: [Symbol]
 ---*/
 assert.sameValue(
   String(Symbol('66')),
diff --git a/test/built-ins/Symbol/prototype/toString/undefined.js b/test/built-ins/Symbol/prototype/toString/undefined.js
index 7d6baad469ab34458ea2eb6b515a0542fc4f2321..c2b2bc743483d15e507bd4d05b55b0253ce979f4 100644
--- a/test/built-ins/Symbol/prototype/toString/undefined.js
+++ b/test/built-ins/Symbol/prototype/toString/undefined.js
@@ -18,6 +18,7 @@ info: |
     3. If desc is undefined, let desc be the empty string.
     4. Assert: Type(desc) is String.
     5. Return the result of concatenating the strings "Symbol(", desc, and ")".
+features: [Symbol]
 ---*/
 
 assert.sameValue(Symbol().toString(), 'Symbol()', 'implicit value');
diff --git a/test/built-ins/Symbol/prototype/valueOf/this-val-obj-symbol.js b/test/built-ins/Symbol/prototype/valueOf/this-val-obj-symbol.js
index c34b6bbdd3db592c2050f33691582b3173f27a45..965b6e5ab58b74a160e3e689e18ade072ae22f5b 100644
--- a/test/built-ins/Symbol/prototype/valueOf/this-val-obj-symbol.js
+++ b/test/built-ins/Symbol/prototype/valueOf/this-val-obj-symbol.js
@@ -10,6 +10,7 @@ info: |
   3. If Type(s) is not Object, throw a TypeError exception.
   4. If s does not have a [[SymbolData]] internal slot, throw a TypeError exception.
   5. Return the value of s's [[SymbolData]] internal slot. 
+features: [Symbol]
 ---*/
 
 var valueOf = Symbol.prototype.valueOf;
diff --git a/test/built-ins/Symbol/prototype/valueOf/this-val-symbol.js b/test/built-ins/Symbol/prototype/valueOf/this-val-symbol.js
index 395ba5b48cf29782f42912e043797e3347db2bc2..9fd0a94b4a622c13df102241fbf296d6b53210f7 100644
--- a/test/built-ins/Symbol/prototype/valueOf/this-val-symbol.js
+++ b/test/built-ins/Symbol/prototype/valueOf/this-val-symbol.js
@@ -7,6 +7,7 @@ description: Called on a Symbol value
 info: |
   1. Let s be the this value.
   2. If Type(s) is Symbol, return s.
+features: [Symbol]
 ---*/
 
 var valueOf = Symbol.prototype.valueOf;
diff --git a/test/built-ins/Symbol/uniqueness.js b/test/built-ins/Symbol/uniqueness.js
index 02efc89f1aad19aef3c46c794fc95a870bf37878..bfca22f6b4b14f234c8b7c57f6cf33bc9a28f5c4 100644
--- a/test/built-ins/Symbol/uniqueness.js
+++ b/test/built-ins/Symbol/uniqueness.js
@@ -10,6 +10,7 @@ info: |
     2. Else, let descString be ? ToString(description).
     3. Return a new unique Symbol value whose [[Description]] value is
        descString.
+features: [Symbol]
 ---*/
 
 assert.notSameValue(Symbol(''), Symbol(''), 'empty string');
diff --git a/test/built-ins/TypedArrays/buffer-arg-byteoffset-is-symbol-throws-sab.js b/test/built-ins/TypedArrays/buffer-arg-byteoffset-is-symbol-throws-sab.js
index 416e5db7d1dcbddd82ca0d0f472cdd4af72b733b..2b9d976bf196894be442662e614488762ef2f107 100644
--- a/test/built-ins/TypedArrays/buffer-arg-byteoffset-is-symbol-throws-sab.js
+++ b/test/built-ins/TypedArrays/buffer-arg-byteoffset-is-symbol-throws-sab.js
@@ -16,7 +16,7 @@ info: >
   7. Let offset be ? ToInteger(byteOffset).
   ...
 includes: [testTypedArray.js]
-features: [SharedArrayBuffer]
+features: [Symbol, SharedArrayBuffer]
 ---*/
 
 var byteOffset = Symbol("1");
diff --git a/test/built-ins/TypedArrays/buffer-arg-length-is-symbol-throws-sab.js b/test/built-ins/TypedArrays/buffer-arg-length-is-symbol-throws-sab.js
index 0ae03e4e9eaf95277f1941c09feab3172ad9bcb2..237aaf62af31216760ea543e84ba09a202d8c401 100644
--- a/test/built-ins/TypedArrays/buffer-arg-length-is-symbol-throws-sab.js
+++ b/test/built-ins/TypedArrays/buffer-arg-length-is-symbol-throws-sab.js
@@ -17,7 +17,7 @@ info: >
     a. Let newLength be ? ToLength(length).
   ...
 includes: [testTypedArray.js]
-features: [SharedArrayBuffer]
+features: [Symbol, SharedArrayBuffer]
 ---*/
 
 var buffer = new SharedArrayBuffer(8);
diff --git a/test/built-ins/WeakMap/prototype/get/returns-undefined-key-is-not-object.js b/test/built-ins/WeakMap/prototype/get/returns-undefined-key-is-not-object.js
index bfe4097f0f22be3fe70bd58a03e7454db28a53d5..6363ef51052d95857e29ad149d605d8b80732676 100644
--- a/test/built-ins/WeakMap/prototype/get/returns-undefined-key-is-not-object.js
+++ b/test/built-ins/WeakMap/prototype/get/returns-undefined-key-is-not-object.js
@@ -13,6 +13,7 @@ info: >
   slot.
   5. If Type(key) is not Object, return undefined.
   ...
+features: [Symbol]
 ---*/
 
 var map = new WeakMap();
diff --git a/test/built-ins/WeakSet/prototype/delete/this-not-object-throw-symbol.js b/test/built-ins/WeakSet/prototype/delete/this-not-object-throw-symbol.js
index 8624f6dd0dddaa28d2c459f4bb0ac1e3f8916261..6599ec870e29f360396e17e523a005141dd67fdf 100644
--- a/test/built-ins/WeakSet/prototype/delete/this-not-object-throw-symbol.js
+++ b/test/built-ins/WeakSet/prototype/delete/this-not-object-throw-symbol.js
@@ -9,6 +9,7 @@ info: >
 
   1. Let S be the this value.
   2. If Type(S) is not Object, throw a TypeError exception.
+features: [Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/WeakSet/symbol-disallowed-as-weakset-key.js b/test/built-ins/WeakSet/symbol-disallowed-as-weakset-key.js
index 1c25f5f3b500084340b71fd5dfcb66d0ea4de82b..c74175745a044e9488581a2cdcc02ef94e50eceb 100644
--- a/test/built-ins/WeakSet/symbol-disallowed-as-weakset-key.js
+++ b/test/built-ins/WeakSet/symbol-disallowed-as-weakset-key.js
@@ -5,7 +5,7 @@ es6id: 23.4.3.1_S2
 esid: sec-weakset.prototype.add
 description: >
   Symbol may not be used as a WeakSet entry
-features: [WeakSet]
+features: [Symbol, WeakSet]
 ---*/
 var weakset = new WeakSet();
 var sym = Symbol();
diff --git a/test/harness/verifyProperty-desc-is-not-object.js b/test/harness/verifyProperty-desc-is-not-object.js
index 418c2893f52a38de74ba666ad63a84eb36716a2e..d269d6737dbcb7d6710f9c8b9eec84e78e0dea62 100644
--- a/test/harness/verifyProperty-desc-is-not-object.js
+++ b/test/harness/verifyProperty-desc-is-not-object.js
@@ -5,6 +5,7 @@
 description: >
   The desc argument should be an object or undefined
 includes: [propertyHelper.js,sta.js]
+features: [Symbol]
 ---*/
 var sample = { foo: 42 };
 
diff --git a/test/harness/verifyProperty-restore-accessor-symbol.js b/test/harness/verifyProperty-restore-accessor-symbol.js
index 77d726d542bbf90ac5940c412748bfb0a8607ceb..d560fe9fb74a049a7359c45bbdb434d1e8a4614b 100644
--- a/test/harness/verifyProperty-restore-accessor-symbol.js
+++ b/test/harness/verifyProperty-restore-accessor-symbol.js
@@ -5,6 +5,7 @@
 description: >
   verifyProperty allows restoring the original accessor descriptor
 includes: [propertyHelper.js]
+features: [Symbol]
 ---*/
 
 var obj;
diff --git a/test/harness/verifyProperty-restore-symbol.js b/test/harness/verifyProperty-restore-symbol.js
index a407412e56f6fc6f27c11711e1d9a44701b3f7c4..37953bb144a6c79453a830561fa9195aeb301a1f 100644
--- a/test/harness/verifyProperty-restore-symbol.js
+++ b/test/harness/verifyProperty-restore-symbol.js
@@ -5,6 +5,7 @@
 description: >
   verifyProperty allows restoring the original descriptor
 includes: [propertyHelper.js]
+features: [Symbol]
 ---*/
 
 var obj;
diff --git a/test/harness/verifyProperty-symbol-prop.js b/test/harness/verifyProperty-symbol-prop.js
index 3a59108d8deb3590f7d21fed5adf428ebd3855c0..f16c42e30a2148cc87153bbeebef469d05eee2d9 100644
--- a/test/harness/verifyProperty-symbol-prop.js
+++ b/test/harness/verifyProperty-symbol-prop.js
@@ -5,6 +5,7 @@
 description: >
   Verify symbol named property descriptor
 includes: [propertyHelper.js]
+features: [Symbol]
 ---*/
 
 var obj;
diff --git a/test/language/computed-property-names/basics/symbol.js b/test/language/computed-property-names/basics/symbol.js
index 60e4784872af73e341878e9608cb00e41a336f53..c8d54547a445f5f2884434f4b68b171d3a31e306 100644
--- a/test/language/computed-property-names/basics/symbol.js
+++ b/test/language/computed-property-names/basics/symbol.js
@@ -5,6 +5,7 @@ es6id: 12.2.5
 description: >
     computed property names can be a symbol
 includes: [compareArray.js]
+features: [Symbol]
 ---*/
 
 function ID(x) {
diff --git a/test/language/computed-property-names/class/method/symbol.js b/test/language/computed-property-names/class/method/symbol.js
index c7425fcb6a5556060d0b229b7651a86dc63712ac..bec9976f185e74466c3f22513b599ec5a05de685 100644
--- a/test/language/computed-property-names/class/method/symbol.js
+++ b/test/language/computed-property-names/class/method/symbol.js
@@ -5,6 +5,7 @@ es6id: 12.2.5
 description: >
     computed property class method names can be a symbol
 includes: [compareArray.js]
+features: [Symbol]
 ---*/
 
 function ID(x) {
diff --git a/test/language/computed-property-names/class/static/method-symbol.js b/test/language/computed-property-names/class/static/method-symbol.js
index 31012afeb8723219c33d7ca1e6d83b198cc3b4a0..7d6506dcaf68b5fd56d652af287b2204d65e38b0 100644
--- a/test/language/computed-property-names/class/static/method-symbol.js
+++ b/test/language/computed-property-names/class/static/method-symbol.js
@@ -5,6 +5,7 @@ es6id: 12.2.5
 description: >
     In a class, static computed property method names can be a symbol
 includes: [compareArray.js]
+features: [Symbol]
 ---*/
 var sym1 = Symbol();
 var sym2 = Symbol();
diff --git a/test/language/computed-property-names/object/method/symbol.js b/test/language/computed-property-names/object/method/symbol.js
index 3c76e856be04a7da412b84725c3ca1c11f110637..21ef99efa36addeb5b4df1fe46cf9dc859c8159d 100644
--- a/test/language/computed-property-names/object/method/symbol.js
+++ b/test/language/computed-property-names/object/method/symbol.js
@@ -5,6 +5,7 @@ es6id: 12.2.5
 description: >
     computed property method names can be a symbol
 includes: [compareArray.js]
+features: [Symbol]
 ---*/
 
 function ID(x) {
diff --git a/test/language/expressions/conditional/symbol-conditional-evaluation.js b/test/language/expressions/conditional/symbol-conditional-evaluation.js
index db3add4e3ca1ae978d533408eca155f9d91bcfd9..b1fb4e696fe3bc66376759cf7a248ddfd6096972 100644
--- a/test/language/expressions/conditional/symbol-conditional-evaluation.js
+++ b/test/language/expressions/conditional/symbol-conditional-evaluation.js
@@ -4,6 +4,7 @@
 es6id: 12.12.3
 description: >
     Conditional Symbol evaluation
+features: [Symbol]
 ---*/
 var sym = Symbol();
 
diff --git a/test/language/expressions/equals/symbol-abstract-equality-comparison.js b/test/language/expressions/equals/symbol-abstract-equality-comparison.js
index 7ca1e0f71a664b439875c9bf2778d590150b598f..904c4abe4d32d592f3e099ff4604ce3b6093dbbf 100644
--- a/test/language/expressions/equals/symbol-abstract-equality-comparison.js
+++ b/test/language/expressions/equals/symbol-abstract-equality-comparison.js
@@ -4,6 +4,7 @@
 es6id: 7.2.12
 description: >
     Abstract Equality Comparison: Symbol
+features: [Symbol]
 ---*/
 var symA = Symbol('66');
 var symB = Symbol('66');
diff --git a/test/language/expressions/equals/symbol-strict-equality-comparison.js b/test/language/expressions/equals/symbol-strict-equality-comparison.js
index d77c83ca33ccb53a0b51a6ad1ab3473e03a3d8e5..361009b834e0a72ef7b26657d4f83fafd75cbf7b 100644
--- a/test/language/expressions/equals/symbol-strict-equality-comparison.js
+++ b/test/language/expressions/equals/symbol-strict-equality-comparison.js
@@ -4,6 +4,7 @@
 es6id: 7.2.13
 description: >
     Strict Equality Comparison: Symbol
+features: [Symbol]
 ---*/
 var symA = Symbol('66');
 var symB = Symbol('66');
diff --git a/test/language/expressions/logical-and/symbol-logical-and-evaluation.js b/test/language/expressions/logical-and/symbol-logical-and-evaluation.js
index 689ba7d77f586de41baa5ea49df47e97db0b6598..3c2c5a7b7bd186d4fee85cbf099b01b481f7f061 100644
--- a/test/language/expressions/logical-and/symbol-logical-and-evaluation.js
+++ b/test/language/expressions/logical-and/symbol-logical-and-evaluation.js
@@ -4,6 +4,7 @@
 es6id: 12.12.3
 description: >
     "Logical AND" Symbol evaluation
+features: [Symbol]
 ---*/
 var sym = Symbol();
 
diff --git a/test/language/expressions/logical-not/symbol-logical-not-evaluation.js b/test/language/expressions/logical-not/symbol-logical-not-evaluation.js
index c161525307b515508481608bf5e0c079a4eee054..6fe19e1165ec240bbc1f53c03224838a4a7c5def 100644
--- a/test/language/expressions/logical-not/symbol-logical-not-evaluation.js
+++ b/test/language/expressions/logical-not/symbol-logical-not-evaluation.js
@@ -4,6 +4,7 @@
 es6id: 12.5.12.1
 description: >
     "Logical Not" coercion operation on Symbols
+features: [Symbol]
 ---*/
 var sym = Symbol();
 
diff --git a/test/language/expressions/logical-or/symbol-logical-or-evaluation.js b/test/language/expressions/logical-or/symbol-logical-or-evaluation.js
index 7d3a1be6834233ecaef4793086e9da09411f1342..905a67c80736e37a779b24624340434568159837 100644
--- a/test/language/expressions/logical-or/symbol-logical-or-evaluation.js
+++ b/test/language/expressions/logical-or/symbol-logical-or-evaluation.js
@@ -4,6 +4,7 @@
 es6id: 12.12.3
 description: >
     "Logical OR" Symbol evaluation
+features: [Symbol]
 ---*/
 var sym = Symbol();
 
diff --git a/test/language/expressions/object/computed-__proto__.js b/test/language/expressions/object/computed-__proto__.js
index a4040ed31d7a43b182b5b87a2185ddf5cd68a768..9287265631eb83fee78298285f6a4281431ae82e 100644
--- a/test/language/expressions/object/computed-__proto__.js
+++ b/test/language/expressions/object/computed-__proto__.js
@@ -25,6 +25,7 @@ info: |
     a. If Type(propValue) is either Object or Null, then
         i. Return object.[[SetPrototypeOf]](propValue).
     b. Return NormalCompletion(empty).
+features: [Symbol]
 ---*/
 
 var obj;
diff --git a/test/language/expressions/typeof/symbol.js b/test/language/expressions/typeof/symbol.js
index 10440b4c04d3b0f065dd0e98a153c54b90d86f74..93e8a1ca9a9f6d8a8de3903fceb0e35822367488 100644
--- a/test/language/expressions/typeof/symbol.js
+++ b/test/language/expressions/typeof/symbol.js
@@ -5,6 +5,7 @@ es6id: 12.5.6.1
 description: >
     typeof Symbol() returns 'symbol'.
     typeof Object(Symbol()) returns 'object'.
+features: [Symbol]
 ---*/
 assert.sameValue(typeof Symbol('A'), 'symbol', "`typeof Symbol('A')` is `'symbol'`");
 assert.sameValue(typeof Symbol(), 'symbol', "`typeof Symbol()` is `'symbol'`");
diff --git a/test/language/statements/class/subclass/derived-class-return-override-with-symbol.js b/test/language/statements/class/subclass/derived-class-return-override-with-symbol.js
index d31896482236bd14da05f710e9a8952f350ca0ca..009a88c1ab0834b30bce5b3df0ac617f41f30c55 100644
--- a/test/language/statements/class/subclass/derived-class-return-override-with-symbol.js
+++ b/test/language/statements/class/subclass/derived-class-return-override-with-symbol.js
@@ -13,6 +13,7 @@ description: >
 
     `return Symbol();`
 
+features: [Symbol]
 ---*/
 class Base {
   constructor() {}