diff --git a/test/built-ins/Array/from/source-object-iterator-1.js b/test/built-ins/Array/from/source-object-iterator-1.js
index 6c65e005f8cc414f51c06a9239f2c222f52149b0..94834b5cf023256ac7e68b5a8a73df5aae5436c2 100644
--- a/test/built-ins/Array/from/source-object-iterator-1.js
+++ b/test/built-ins/Array/from/source-object-iterator-1.js
@@ -5,6 +5,7 @@
 description: Source object has iterator which throws
 esid: sec-array.from
 es6id: 22.1.2.1
+features: [Symbol.iterator]
 ---*/
 
 var array = [ 2, 4, 8, 16, 32, 64, 128 ];
diff --git a/test/built-ins/Array/from/source-object-iterator-2.js b/test/built-ins/Array/from/source-object-iterator-2.js
index 0245c2b5fb4e79e729e6979ce5e89c580d1d220f..9bcd57053783dd04c0ffcc3fda61dbb836eefc01 100644
--- a/test/built-ins/Array/from/source-object-iterator-2.js
+++ b/test/built-ins/Array/from/source-object-iterator-2.js
@@ -5,6 +5,7 @@
 description: Source object has iterator
 esid: sec-array.from
 es6id: 22.1.2.1
+features: [Symbol.iterator]
 ---*/
 
 var array = [ 2, 4, 8, 16, 32, 64, 128 ];
diff --git a/test/built-ins/ArrayIteratorPrototype/Symbol.toStringTag/value-direct.js b/test/built-ins/ArrayIteratorPrototype/Symbol.toStringTag/value-direct.js
index f88277442678df051e8e8b5a4cd66e9b3fa8cd8a..a95cdce44466c16b1733b19efafd7beac2fe0a4f 100644
--- a/test/built-ins/ArrayIteratorPrototype/Symbol.toStringTag/value-direct.js
+++ b/test/built-ins/ArrayIteratorPrototype/Symbol.toStringTag/value-direct.js
@@ -2,11 +2,12 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-  esid: sec-%arrayiteratorprototype%-@@tostringtag
-  description: >
-      The @@toStringTag attribute should be defined directly on the prototype.
-  es6id: 22.1.5.2.2
- ---*/
+esid: sec-%arrayiteratorprototype%-@@tostringtag
+description: >
+  The @@toStringTag attribute should be defined directly on the prototype.
+es6id: 22.1.5.2.2
+features: [Symbol.iterator]
+---*/
 
 var ArrayIteratorProto = Object.getPrototypeOf([][Symbol.iterator]());
 
diff --git a/test/built-ins/ArrayIteratorPrototype/Symbol.toStringTag/value-from-to-string.js b/test/built-ins/ArrayIteratorPrototype/Symbol.toStringTag/value-from-to-string.js
index a0d8f3a9eeb2cccf98b28a14544db4075b84228e..8a47db9fb02223e93dec5ab49f7b135a87083aae 100644
--- a/test/built-ins/ArrayIteratorPrototype/Symbol.toStringTag/value-from-to-string.js
+++ b/test/built-ins/ArrayIteratorPrototype/Symbol.toStringTag/value-from-to-string.js
@@ -2,12 +2,13 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-  esid: sec-%arrayiteratorprototype%-@@tostringtag
-  description: >
-      `Object.prototype.toString` should honor the value of the @@toStringTag
-      attribute.
-  es6id: 22.1.5.2.2
- ---*/
+esid: sec-%arrayiteratorprototype%-@@tostringtag
+description: >
+    `Object.prototype.toString` should honor the value of the @@toStringTag
+    attribute.
+es6id: 22.1.5.2.2
+features: [Symbol.iterator]
+---*/
 
 var iter = [][Symbol.iterator]();
 
diff --git a/test/built-ins/ArrayIteratorPrototype/next/Float32Array.js b/test/built-ins/ArrayIteratorPrototype/next/Float32Array.js
index 584d140ca177d69525f9245b4540927f5a5d8f39..6984e24762447de5b1e82d13e88b99a9d07867b9 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/Float32Array.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/Float32Array.js
@@ -6,7 +6,7 @@ esid: sec-%arrayiteratorprototype%.next
 description: >
     Visits each element of the array in order and ceases iteration once all
     values have been visited.
-features: [TypedArray]
+features: [Symbol.iterator, TypedArray]
 ---*/
 var array = new Float32Array([3, 1, 2]);
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/Float64Array.js b/test/built-ins/ArrayIteratorPrototype/next/Float64Array.js
index 4d50d8862949ac62a68531bbd0d88c0b3b75d455..f0173a349f3dafbce112d1910c2872ea81756358 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/Float64Array.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/Float64Array.js
@@ -6,7 +6,7 @@ esid: sec-%arrayiteratorprototype%.next
 description: >
     Visits each element of the array in order and ceases iteration once all
     values have been visited.
-features: [TypedArray]
+features: [Symbol.iterator, TypedArray]
 ---*/
 var array = new Float64Array([3, 1, 2]);
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/Int16Array.js b/test/built-ins/ArrayIteratorPrototype/next/Int16Array.js
index 554c55aa0ef4d4c0565087e6ad78bfabdc21a9c7..c0008b5ab1c2f0e818f4f909cde738f5ff542349 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/Int16Array.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/Int16Array.js
@@ -6,7 +6,7 @@ esid: sec-%arrayiteratorprototype%.next
 description: >
     Visits each element of the array in order and ceases iteration once all
     values have been visited.
-features: [TypedArray]
+features: [Symbol.iterator, TypedArray]
 ---*/
 var array = new Int16Array([3, 1, 2]);
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/Int32Array.js b/test/built-ins/ArrayIteratorPrototype/next/Int32Array.js
index e992bbe2cac823464608d51ddce41c112d56869e..f8a1d4b3798931d93eae828d8f5ab56618847ec4 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/Int32Array.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/Int32Array.js
@@ -6,7 +6,7 @@ esid: sec-%arrayiteratorprototype%.next
 description: >
     Visits each element of the array in order and ceases iteration once all
     values have been visited.
-features: [TypedArray]
+features: [Symbol.iterator, TypedArray]
 ---*/
 var array = new Int32Array([3, 1, 2]);
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/Int8Array.js b/test/built-ins/ArrayIteratorPrototype/next/Int8Array.js
index fdfb8caccf006f4553da4ad3c85dd106be548a7f..d22477e142271e36a06a9875d8c47f1119da9649 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/Int8Array.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/Int8Array.js
@@ -6,7 +6,7 @@ esid: sec-%arrayiteratorprototype%.next
 description: >
     Visits each element of the array in order and ceases iteration once all
     values have been visited.
-features: [TypedArray]
+features: [Symbol.iterator, TypedArray]
 ---*/
 var array = new Int8Array([3, 1, 2]);
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/Uint16Array.js b/test/built-ins/ArrayIteratorPrototype/next/Uint16Array.js
index 355f890430229b75fb2c3c49202e258de1db86db..ca9baa84d94fa9bfb9c7be2240b4f116c43e2484 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/Uint16Array.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/Uint16Array.js
@@ -6,7 +6,7 @@ esid: sec-%arrayiteratorprototype%.next
 description: >
     Visits each element of the array in order and ceases iteration once all
     values have been visited.
-features: [TypedArray]
+features: [Symbol.iterator, TypedArray]
 ---*/
 var array = new Uint16Array([3, 1, 2]);
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/Uint32Array.js b/test/built-ins/ArrayIteratorPrototype/next/Uint32Array.js
index c8ef5fb211b672f48bb30e84ce566e7a4c23f14a..28801acb4822220845979ae2e4b9a530f7dd8fea 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/Uint32Array.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/Uint32Array.js
@@ -6,7 +6,7 @@ esid: sec-%arrayiteratorprototype%.next
 description: >
     Visits each element of the array in order and ceases iteration once all
     values have been visited.
-features: [TypedArray]
+features: [Symbol.iterator, TypedArray]
 ---*/
 var array = new Uint32Array([3, 1, 2]);
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/Uint8Array.js b/test/built-ins/ArrayIteratorPrototype/next/Uint8Array.js
index 698d032e18304483975740a88d5e615166c071df..dfb5128c82455281f3e9d58e6831c2778480b38e 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/Uint8Array.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/Uint8Array.js
@@ -6,7 +6,7 @@ esid: sec-%arrayiteratorprototype%.next
 description: >
     Visits each element of the array in order and ceases iteration once all
     values have been visited.
-features: [TypedArray]
+features: [Symbol.iterator, TypedArray]
 ---*/
 var array = new Uint8Array([3, 1, 2]);
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/Uint8ClampedArray.js b/test/built-ins/ArrayIteratorPrototype/next/Uint8ClampedArray.js
index 7f8b8d96488d39b9819c5a6cc2cbcfe9e0631cb5..f8098597d96b2c7f2548ffd28755065e647d03a2 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/Uint8ClampedArray.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/Uint8ClampedArray.js
@@ -6,7 +6,7 @@ esid: sec-%arrayiteratorprototype%.next
 description: >
     Visits each element of the array in order and ceases iteration once all
     values have been visited.
-features: [TypedArray]
+features: [Symbol.iterator, TypedArray]
 ---*/
 var array = new Uint8ClampedArray([3, 1, 2]);
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/args-mapped-expansion-after-exhaustion.js b/test/built-ins/ArrayIteratorPrototype/next/args-mapped-expansion-after-exhaustion.js
index 5d2b000a771e44f68f590d71234f25511f2553b6..93ad4d39bc1ffd473333f568b5c16ef76a455b8c 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/args-mapped-expansion-after-exhaustion.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/args-mapped-expansion-after-exhaustion.js
@@ -7,6 +7,7 @@ description: >
     Once exhausted, iterators for mapped arguments exotic objects should not
     emit new values added to the object.
 flags: [noStrict]
+features: [Symbol.iterator]
 ---*/
 
 (function(a, b, c) {
diff --git a/test/built-ins/ArrayIteratorPrototype/next/args-mapped-expansion-before-exhaustion.js b/test/built-ins/ArrayIteratorPrototype/next/args-mapped-expansion-before-exhaustion.js
index 6919e1b74514734a4029774ed8709769747cfe6f..b87cde4d336b81af74d38588656dd9b88a23a895 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/args-mapped-expansion-before-exhaustion.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/args-mapped-expansion-before-exhaustion.js
@@ -7,6 +7,7 @@ description: >
     Prior to being exhausted, iterators for mapped arguments exotic objects
     should honor the insertion of additional argument values.
 flags: [noStrict]
+features: [Symbol.iterator]
 ---*/
 
 (function(a, b, c) {
diff --git a/test/built-ins/ArrayIteratorPrototype/next/args-mapped-iteration.js b/test/built-ins/ArrayIteratorPrototype/next/args-mapped-iteration.js
index 36ef786a36c39cff41cc7983f206d41a965a2585..ed94d033601dd247cc022616d90caaed3e4e7874 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/args-mapped-iteration.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/args-mapped-iteration.js
@@ -7,6 +7,7 @@ description: >
     Mapped arguments exotic objects should implement the Array iterator
     protocol.
 flags: [noStrict]
+features: [Symbol.iterator]
 ---*/
 
 (function(a, b, c) {
diff --git a/test/built-ins/ArrayIteratorPrototype/next/args-mapped-truncation-before-exhaustion.js b/test/built-ins/ArrayIteratorPrototype/next/args-mapped-truncation-before-exhaustion.js
index 91cd87a09a4ba0abf21adf6c1e89627c5aa314f2..6af6427a159a3f1e1ed3d074031509385974654a 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/args-mapped-truncation-before-exhaustion.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/args-mapped-truncation-before-exhaustion.js
@@ -7,6 +7,7 @@ description: >
     Prior to being exhausted, iterators for mapped arguments exotic objects
     should honor argument removal.
 flags: [noStrict]
+features: [Symbol.iterator]
 ---*/
 
 (function(a, b, c) {
diff --git a/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-expansion-after-exhaustion.js b/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-expansion-after-exhaustion.js
index f1fdbec5d9bd6492d173268be0ccf2eb4aafb900..1424c2a1986430f9e89ac155287fe725a773c0c0 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-expansion-after-exhaustion.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-expansion-after-exhaustion.js
@@ -7,6 +7,7 @@ description: >
     Once exhausted, iterators for unmapped arguments exotic objects should not
     emit new values added to the object.
 flags: [noStrict]
+features: [Symbol.iterator]
 ---*/
 
 (function(a, b, c) {
diff --git a/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-expansion-before-exhaustion.js b/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-expansion-before-exhaustion.js
index d7ad14a8154fbdad975570255c8d6a768a3dbfb9..47ab198f80eaae51ec7bab3349921c4ec61406d4 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-expansion-before-exhaustion.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-expansion-before-exhaustion.js
@@ -7,6 +7,7 @@ description: >
     Prior to being exhausted, iterators for unmapped arguments exotic objects
     should honor the insertion of additional argument values.
 flags: [noStrict]
+features: [Symbol.iterator]
 ---*/
 
 (function(a, b, c) {
diff --git a/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-iteration.js b/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-iteration.js
index 180d631830d7a11f8437dc5f433723146298db01..6796859cf895e29ceed3bde5807179c3ddb579b1 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-iteration.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-iteration.js
@@ -7,6 +7,7 @@ description: >
     Unmapped arguments exotic objects should implement the Array iterator
     protocol.
 flags: [noStrict]
+features: [Symbol.iterator]
 ---*/
 
 (function(a, b, c) {
diff --git a/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-truncation-before-exhaustion.js b/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-truncation-before-exhaustion.js
index f733f7c6967322aebd140ac4fd1de2a8a800f917..f156b6b2c62f862070f6ef3628086a970adfdfb2 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-truncation-before-exhaustion.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-truncation-before-exhaustion.js
@@ -7,6 +7,7 @@ description: >
     Prior to being exhausted, iterators for unmapped arguments exotic objects
     should honor argument removal.
 flags: [noStrict]
+features: [Symbol.iterator]
 ---*/
 
 (function(a, b, c) {
diff --git a/test/built-ins/ArrayIteratorPrototype/next/iteration-mutable.js b/test/built-ins/ArrayIteratorPrototype/next/iteration-mutable.js
index 373bfa30d5e4a95e9f4bd2233d0c7f6813a71404..b1337831338ba52ca1901b098322c764a7b1a82b 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/iteration-mutable.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/iteration-mutable.js
@@ -2,15 +2,16 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-  esid: sec-%arrayiteratorprototype%.next
-  description: >
-      When an item is added to the array after the iterator is created but
-      before the iterator is "done" (as defined by 22.1.5.2.1), the new item
-      should be accessible via iteration. When an item is added to the array
-      after the iterator is "done", the new item should not be accessible via
-      iteration.
-  es6id: 22.1.3.30
- ---*/
+esid: sec-%arrayiteratorprototype%.next
+description: >
+    When an item is added to the array after the iterator is created but
+    before the iterator is "done" (as defined by 22.1.5.2.1), the new item
+    should be accessible via iteration. When an item is added to the array
+    after the iterator is "done", the new item should not be accessible via
+    iteration.
+es6id: 22.1.3.30
+features: [Symbol.iterator]
+---*/
 
 var array = [];
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/iteration.js b/test/built-ins/ArrayIteratorPrototype/next/iteration.js
index b2f908653d77da40c84f2fa9aa5e7b2eefb96e92..f189ad0a40a4f4f306beaec7d9ada384a721f290 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/iteration.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/iteration.js
@@ -2,12 +2,13 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-  esid: sec-%arrayiteratorprototype%.next
-  description: >
-      The method should return a valid iterator with the context as the
-      IteratedObject.
-  es6id: 22.1.3.30
- ---*/
+esid: sec-%arrayiteratorprototype%.next
+description: >
+    The method should return a valid iterator with the context as the
+    IteratedObject.
+es6id: 22.1.3.30
+features: [Symbol.iterator]
+---*/
 
 var array = ['a', 'b', 'c'];
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/length.js b/test/built-ins/ArrayIteratorPrototype/next/length.js
index e7c2ffde4e35e74ff06b2882c44860fda6a37995..b95a4aa4fdd837c6bc158c5dc4bf3072f7b7254a 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/length.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/length.js
@@ -21,6 +21,7 @@ info: >
     object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
     [[Configurable]]: true }.
 includes: [propertyHelper.js]
+features: [Symbol.iterator]
 ---*/
 
 var ArrayIteratorProto = Object.getPrototypeOf([][Symbol.iterator]());
diff --git a/test/built-ins/ArrayIteratorPrototype/next/name.js b/test/built-ins/ArrayIteratorPrototype/next/name.js
index b94ec6eda14507fae99d298a18612c49130a252c..d7b4c7b65b6a85037eb1f062d9217e6ada7bdcec 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/name.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/name.js
@@ -18,6 +18,7 @@ info: >
     object, if it exists, has the attributes { [[Writable]]: false,
     [[Enumerable]]: false, [[Configurable]]: true }.
 includes: [propertyHelper.js]
+features: [Symbol.iterator]
 ---*/
 
 var ArrayIteratorProto = Object.getPrototypeOf([][Symbol.iterator]());
diff --git a/test/built-ins/ArrayIteratorPrototype/next/non-own-slots.js b/test/built-ins/ArrayIteratorPrototype/next/non-own-slots.js
index c232327f9193cc84deb6d47297d4f78a58c878f2..0327dc1b6e3ffe902cb27e5696f7c842cdcf0fb7 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/non-own-slots.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/non-own-slots.js
@@ -2,12 +2,13 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-  description: >
-      If the `this` value does not have all of the internal slots of an Array
-      Iterator Instance (22.1.5.3), throw a TypeError exception.
-  es6id: 22.1.5.2.1
-  esid: sec-%arrayiteratorprototype%.next
- ---*/
+description: >
+    If the `this` value does not have all of the internal slots of an Array
+    Iterator Instance (22.1.5.3), throw a TypeError exception.
+es6id: 22.1.5.2.1
+esid: sec-%arrayiteratorprototype%.next
+features: [Symbol.iterator]
+---*/
 
 var array = [0];
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/property-descriptor.js b/test/built-ins/ArrayIteratorPrototype/next/property-descriptor.js
index 808b2fea033041819ae5e9bbdf14c29fb5817cf1..aeadb7ddda0f23a7d3836d2bc28453087c95d120 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/property-descriptor.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/property-descriptor.js
@@ -2,13 +2,14 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-  esid: sec-%arrayiteratorprototype%.next
-  description: >
-      The method should exist on the ArrayIterator prototype, and it should be
-      writable and configurable, but not enumerable.
-  includes: [propertyHelper.js]
-  es6id: 17
- ---*/
+esid: sec-%arrayiteratorprototype%.next
+description: >
+    The method should exist on the ArrayIterator prototype, and it should be
+    writable and configurable, but not enumerable.
+includes: [propertyHelper.js]
+es6id: 17
+features: [Symbol.iterator]
+---*/
 
 var ArrayIteratorProto = Object.getPrototypeOf([][Symbol.iterator]());
 
diff --git a/test/built-ins/Set/set-iterator-close-after-add-failure.js b/test/built-ins/Set/set-iterator-close-after-add-failure.js
index 260327e08b385aa65c2f8cf04dd0109b5a916142..fa2c30b9dbe3d434c11fbb701d7ddd2eb3801f57 100644
--- a/test/built-ins/Set/set-iterator-close-after-add-failure.js
+++ b/test/built-ins/Set/set-iterator-close-after-add-failure.js
@@ -17,6 +17,7 @@ description: >
       f. Let status be Call(adder, set, «nextValue.[[value]]»).
       g. If status is an abrupt completion, return IteratorClose(iter, status).
 
+features: [Symbol.iterator]
 ---*/
 
 var count = 0;
diff --git a/test/built-ins/Set/set-iterator-next-failure.js b/test/built-ins/Set/set-iterator-next-failure.js
index 8cc0ad975a4406db82eb597233b2b8164f68ee53..9879baf9bfb157dd93b9734543ad1f4557fb1b7e 100644
--- a/test/built-ins/Set/set-iterator-next-failure.js
+++ b/test/built-ins/Set/set-iterator-next-failure.js
@@ -11,6 +11,7 @@ description: >
     9. Repeat
       a. Let next be IteratorStep(iter).
       b. ReturnIfAbrupt(next).
+features: [Symbol.iterator]
 ---*/
 
 var iterable = {};
diff --git a/test/built-ins/Set/set-iterator-value-failure.js b/test/built-ins/Set/set-iterator-value-failure.js
index 7a54716e535b4fb839fb74664067f9b3128ebfe6..04e943a41989bbf5a32c2ef53fe0912c92ded403 100644
--- a/test/built-ins/Set/set-iterator-value-failure.js
+++ b/test/built-ins/Set/set-iterator-value-failure.js
@@ -12,6 +12,7 @@ description: >
       ...
       d. Let nextValue be IteratorValue(next).
       e. ReturnIfAbrupt(nextValue).
+features: [Symbol.iterator]
 ---*/
 
 var count = 0;
diff --git a/test/built-ins/StringIteratorPrototype/ancestry.js b/test/built-ins/StringIteratorPrototype/ancestry.js
index 4d81cc20f665673223c48f9d84a9e12bac73456b..aee00099560e8289c1b713544538ae58ed126a35 100644
--- a/test/built-ins/StringIteratorPrototype/ancestry.js
+++ b/test/built-ins/StringIteratorPrototype/ancestry.js
@@ -5,6 +5,7 @@ es6id: 21.1.5.2
 description: >
     The [[Prototype]] internal slot ofthe %StringIteratorPrototype% is the
     %IteratorPrototype% intrinsic object (25.1.2).
+features: [Symbol.iterator]
 ---*/
 
 var strItrProto = Object.getPrototypeOf(''[Symbol.iterator]());
diff --git a/test/built-ins/StringIteratorPrototype/next/name.js b/test/built-ins/StringIteratorPrototype/next/name.js
index a0a9aae758d08426aa62d09dc91c79486dcd7d0b..adae55e078d15bf4c2048a08f8f9026b90154a52 100644
--- a/test/built-ins/StringIteratorPrototype/next/name.js
+++ b/test/built-ins/StringIteratorPrototype/next/name.js
@@ -17,6 +17,7 @@ info: >
     object, if it exists, has the attributes { [[Writable]]: false,
     [[Enumerable]]: false, [[Configurable]]: true }.
 includes: [propertyHelper.js]
+features: [Symbol.iterator]
 ---*/
 
 var StringIteratorProto = Object.getPrototypeOf(new String()[Symbol.iterator]());
diff --git a/test/built-ins/StringIteratorPrototype/next/next-iteration-surrogate-pairs.js b/test/built-ins/StringIteratorPrototype/next/next-iteration-surrogate-pairs.js
index c2b5d2d1be785470397a8e775c27f6d109af7d7f..c57621e1397bc5c50d27bc869fdd8813a3780279 100644
--- a/test/built-ins/StringIteratorPrototype/next/next-iteration-surrogate-pairs.js
+++ b/test/built-ins/StringIteratorPrototype/next/next-iteration-surrogate-pairs.js
@@ -5,6 +5,7 @@ es6id: 21.1.5.2.1
 description: >
     Iteration should respect UTF-16-encoded Unicode code points specified via
     surrogate pairs.
+features: [Symbol.iterator]
 ---*/
 
 var lo = '\uD834';
diff --git a/test/built-ins/StringIteratorPrototype/next/next-iteration.js b/test/built-ins/StringIteratorPrototype/next/next-iteration.js
index 1b3fc081fdc30420663925d0520941e241a8c24d..f43cd3f71007d6076481666cc7b54d809366c52c 100644
--- a/test/built-ins/StringIteratorPrototype/next/next-iteration.js
+++ b/test/built-ins/StringIteratorPrototype/next/next-iteration.js
@@ -4,6 +4,7 @@
 es6id: 21.1.5.2.1
 description: >
     Iteration should visit each UTF-8 code point exactly once.
+features: [Symbol.iterator]
 ---*/
 
 var string = "abc";
diff --git a/test/built-ins/StringIteratorPrototype/next/next-missing-internal-slots.js b/test/built-ins/StringIteratorPrototype/next/next-missing-internal-slots.js
index 08c795a0fbfc2398e1ae9718c19e0bdbf5c0db44..4eb96687be8c4b8590407c21cb037430ccbc7c13 100644
--- a/test/built-ins/StringIteratorPrototype/next/next-missing-internal-slots.js
+++ b/test/built-ins/StringIteratorPrototype/next/next-missing-internal-slots.js
@@ -5,6 +5,7 @@ es6id: 21.1.5.2.1 S 3
 description: >
     If the `this` value does not have all of the internal slots of an String
     Iterator Instance (21.1.5.3), throw a `TypeError` exception.
+features: [Symbol.iterator]
 ---*/
 
 var iterator = ''[Symbol.iterator]();
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 2f70c632a8bf9df4bfe6569fac5b6dd82ddeb3f3..920e2e423c2ddfa10b8be426e6c392a657ade5e0 100644
--- a/test/built-ins/Symbol/keyFor/arg-symbol-registry-miss.js
+++ b/test/built-ins/Symbol/keyFor/arg-symbol-registry-miss.js
@@ -12,7 +12,7 @@ info: >
     3. Assert: GlobalSymbolRegistry does not currently contain an entry for
        sym.
     4. Return undefined. 
-features: [Symbol]
+features: [Symbol.iterator, Symbol]
 ---*/
 
 var constructed = Symbol('Symbol.iterator');
diff --git a/test/built-ins/WeakMap/iterator-close-after-set-failure.js b/test/built-ins/WeakMap/iterator-close-after-set-failure.js
index 2624cf1c06875a4e530837bd83066323677b4392..1fd3af450663857022e7f1f60098cd1f50e9c7db 100644
--- a/test/built-ins/WeakMap/iterator-close-after-set-failure.js
+++ b/test/built-ins/WeakMap/iterator-close-after-set-failure.js
@@ -12,6 +12,7 @@ info: >
   9. Repeat
     k. Let status be Call(adder, map, «k.[[value]], v.[[value]]»).
     l. If status is an abrupt completion, return IteratorClose(iter, status).
+features: [Symbol.iterator]
 ---*/
 
 var count = 0;
diff --git a/test/built-ins/WeakMap/iterator-next-failure.js b/test/built-ins/WeakMap/iterator-next-failure.js
index ef0be06876f2107db540177d74b0ce175e76dbf0..3a88a4a7a1f4a58fe076c3d88f34bd7d5e6fcd29 100644
--- a/test/built-ins/WeakMap/iterator-next-failure.js
+++ b/test/built-ins/WeakMap/iterator-next-failure.js
@@ -13,6 +13,7 @@ info: >
     a. Let next be IteratorStep(iter).
     b. ReturnIfAbrupt(next).
     ...
+features: [Symbol.iterator]
 ---*/
 
 var iterable = {};
diff --git a/test/built-ins/WeakMap/iterator-value-failure.js b/test/built-ins/WeakMap/iterator-value-failure.js
index eaad1004c59d724c8ecf3a79d79a66f0d46bc106..2af5efcf7185111ba5f5f6222c6327899a349534 100644
--- a/test/built-ins/WeakMap/iterator-value-failure.js
+++ b/test/built-ins/WeakMap/iterator-value-failure.js
@@ -14,6 +14,7 @@ info: >
     d. Let nextItem be IteratorValue(next).
     e. ReturnIfAbrupt(nextItem).
     ...
+features: [Symbol.iterator]
 ---*/
 
 var iterable = {};
diff --git a/test/built-ins/WeakSet/iterator-close-after-add-failure.js b/test/built-ins/WeakSet/iterator-close-after-add-failure.js
index fcd961943829c1fa3f08aa33ef82c7634509eb9b..cb7e1e2082966ab49d3f0a9db46e22b944e21794 100644
--- a/test/built-ins/WeakSet/iterator-close-after-add-failure.js
+++ b/test/built-ins/WeakSet/iterator-close-after-add-failure.js
@@ -12,6 +12,7 @@ info: >
   9. Repeat
     f. Let status be Call(adder, set, «nextValue»).
     g. If status is an abrupt completion, return IteratorClose(iter, status).
+features: [Symbol.iterator]
 ---*/
 
 var count = 0;
diff --git a/test/built-ins/WeakSet/iterator-next-failure.js b/test/built-ins/WeakSet/iterator-next-failure.js
index 83ec0b2ada438bcec09ae89ab79ae2eea95a3af5..020dc25f4b23230b84fa777afc99e20babfb1871 100644
--- a/test/built-ins/WeakSet/iterator-next-failure.js
+++ b/test/built-ins/WeakSet/iterator-next-failure.js
@@ -13,6 +13,7 @@ info: >
     a. Let next be IteratorStep(iter).
     b. ReturnIfAbrupt(next).
     ...
+features: [Symbol.iterator]
 ---*/
 
 var iterable = {};
diff --git a/test/built-ins/WeakSet/iterator-value-failure.js b/test/built-ins/WeakSet/iterator-value-failure.js
index 8e692feff17291addfb39cd1029c202026a6ad34..4cdf446c492096b6bce678a0f2c21f003dcad77c 100644
--- a/test/built-ins/WeakSet/iterator-value-failure.js
+++ b/test/built-ins/WeakSet/iterator-value-failure.js
@@ -13,6 +13,7 @@ info: >
     ...
     d. Let nextValue be IteratorValue(next).
     e. ReturnIfAbrupt(nextValue).
+features: [Symbol.iterator]
 ---*/
 
 var count = 0;
diff --git a/test/language/expressions/yield/star-iterable.js b/test/language/expressions/yield/star-iterable.js
index e961c2ca7ed2afcbff2592633bad1b87b274630b..668fc28bf56f7b519a58e57311007293f5d4a69e 100644
--- a/test/language/expressions/yield/star-iterable.js
+++ b/test/language/expressions/yield/star-iterable.js
@@ -5,6 +5,7 @@ es6id: 25.2
 description: >
     When an iterator is the operand of a `yield *` expression, the generator
     should produce an iterator that visits each iterated item.
+features: [Symbol.iterator]
 ---*/
 
 var results = [{ value: 1 }, { value: 8 }, { value: 34, done: true }];
diff --git a/test/language/module-code/namespace/internals/define-own-property.js b/test/language/module-code/namespace/internals/define-own-property.js
index 4607100f26a48816b4c3c9dd7e6c81a3c3d7fb96..23a22c2f2651f847975928dc7f7fb924b78731df 100644
--- a/test/language/module-code/namespace/internals/define-own-property.js
+++ b/test/language/module-code/namespace/internals/define-own-property.js
@@ -6,7 +6,7 @@ description: >
     The [[DefineOwnProperty]] internal method returns `true` if no change is
     requested, and `false` otherwise.
 flags: [module]
-features: [Reflect, Symbol, Symbol.toStringTag]
+features: [Symbol.iterator, Reflect, Symbol, Symbol.toStringTag]
 ---*/
 
 import * as ns from './define-own-property.js';
diff --git a/test/language/statements/for-of/Array.prototype.Symbol.iterator.js b/test/language/statements/for-of/Array.prototype.Symbol.iterator.js
index 9667acac6cef4e14b9d9f71e8ecbf189ba0cec49..98ccbe9bd44ba4f50a92f3bb6302c9b1031e0e97 100644
--- a/test/language/statements/for-of/Array.prototype.Symbol.iterator.js
+++ b/test/language/statements/for-of/Array.prototype.Symbol.iterator.js
@@ -2,11 +2,12 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-  description: >
-      The method should return a valid iterator that can be traversed using a
-      `for...of` loop.
-  es6id: 22.1.3.30
- ---*/
+description: >
+    The method should return a valid iterator that can be traversed using a
+    `for...of` loop.
+es6id: 22.1.3.30
+features: [Symbol.iterator]
+---*/
 
 var array = [0, 'a', true, false, null, /* hole */, undefined, NaN];
 var i = 0;