From 2d27462e70687f34818fa3c42bc87e55ea3ff7b5 Mon Sep 17 00:00:00 2001
From: Rick Waldron <waldron.rick@gmail.com>
Date: Fri, 20 Jul 2018 18:42:39 -0400
Subject: [PATCH] Features: Proxy, Reflect (See pull/1643) (#1646)

Follow up to https://github.com/tc39/test262/pull/1643
---
 test/built-ins/Proxy/apply/call-parameters.js                   | 1 +
 test/built-ins/Proxy/apply/call-result.js                       | 1 +
 test/built-ins/Proxy/apply/null-handler.js                      | 1 +
 test/built-ins/Proxy/apply/return-abrupt.js                     | 1 +
 test/built-ins/Proxy/apply/trap-is-not-callable-realm.js        | 2 +-
 test/built-ins/Proxy/apply/trap-is-not-callable.js              | 1 +
 test/built-ins/Proxy/apply/trap-is-null.js                      | 1 +
 test/built-ins/Proxy/apply/trap-is-undefined-no-property.js     | 1 +
 test/built-ins/Proxy/apply/trap-is-undefined.js                 | 1 +
 test/built-ins/Proxy/construct/call-parameters-new-target.js    | 2 +-
 test/built-ins/Proxy/construct/call-parameters.js               | 1 +
 test/built-ins/Proxy/construct/call-result.js                   | 1 +
 test/built-ins/Proxy/construct/null-handler.js                  | 1 +
 test/built-ins/Proxy/construct/return-is-abrupt.js              | 1 +
 .../Proxy/construct/return-not-object-throws-boolean.js         | 1 +
 .../Proxy/construct/return-not-object-throws-number.js          | 1 +
 .../Proxy/construct/return-not-object-throws-string.js          | 1 +
 .../Proxy/construct/return-not-object-throws-symbol.js          | 2 +-
 .../Proxy/construct/return-not-object-throws-undefined.js       | 1 +
 test/built-ins/Proxy/construct/trap-is-not-callable-realm.js    | 2 +-
 test/built-ins/Proxy/construct/trap-is-not-callable.js          | 1 +
 test/built-ins/Proxy/construct/trap-is-null.js                  | 2 +-
 test/built-ins/Proxy/construct/trap-is-undefined-no-property.js | 2 +-
 .../Proxy/construct/trap-is-undefined-proto-from-ctor-realm.js  | 2 +-
 test/built-ins/Proxy/construct/trap-is-undefined.js             | 2 +-
 test/built-ins/Proxy/constructor.js                             | 1 +
 test/built-ins/Proxy/create-handler-is-revoked-proxy.js         | 1 +
 test/built-ins/Proxy/create-handler-not-object-throw-boolean.js | 1 +
 test/built-ins/Proxy/create-handler-not-object-throw-null.js    | 1 +
 test/built-ins/Proxy/create-handler-not-object-throw-number.js  | 1 +
 test/built-ins/Proxy/create-handler-not-object-throw-string.js  | 1 +
 test/built-ins/Proxy/create-handler-not-object-throw-symbol.js  | 2 +-
 .../Proxy/create-handler-not-object-throw-undefined.js          | 1 +
 test/built-ins/Proxy/create-target-is-not-callable.js           | 1 +
 test/built-ins/Proxy/create-target-is-not-constructor.js        | 1 +
 test/built-ins/Proxy/create-target-is-revoked-proxy.js          | 1 +
 test/built-ins/Proxy/create-target-not-object-throw-boolean.js  | 1 +
 test/built-ins/Proxy/create-target-not-object-throw-null.js     | 1 +
 test/built-ins/Proxy/create-target-not-object-throw-number.js   | 1 +
 test/built-ins/Proxy/create-target-not-object-throw-string.js   | 1 +
 test/built-ins/Proxy/create-target-not-object-throw-symbol.js   | 2 +-
 .../built-ins/Proxy/create-target-not-object-throw-undefined.js | 1 +
 test/built-ins/Proxy/defineProperty/call-parameters.js          | 1 +
 test/built-ins/Proxy/defineProperty/desc-realm.js               | 2 +-
 test/built-ins/Proxy/defineProperty/null-handler-realm.js       | 2 +-
 test/built-ins/Proxy/defineProperty/null-handler.js             | 1 +
 .../Proxy/defineProperty/return-boolean-and-define-target.js    | 2 +-
 test/built-ins/Proxy/defineProperty/return-is-abrupt.js         | 1 +
 .../targetdesc-configurable-desc-not-configurable-realm.js      | 2 +-
 .../targetdesc-configurable-desc-not-configurable.js            | 1 +
 ...c-not-compatible-descriptor-not-configurable-target-realm.js | 2 +-
 ...getdesc-not-compatible-descriptor-not-configurable-target.js | 1 +
 .../targetdesc-not-compatible-descriptor-realm.js               | 2 +-
 .../defineProperty/targetdesc-not-compatible-descriptor.js      | 1 +
 .../targetdesc-undefined-not-configurable-descriptor-realm.js   | 2 +-
 .../targetdesc-undefined-not-configurable-descriptor.js         | 1 +
 .../targetdesc-undefined-target-is-not-extensible-realm.js      | 2 +-
 .../targetdesc-undefined-target-is-not-extensible.js            | 1 +
 .../Proxy/defineProperty/trap-is-not-callable-realm.js          | 2 +-
 test/built-ins/Proxy/defineProperty/trap-is-not-callable.js     | 1 +
 test/built-ins/Proxy/defineProperty/trap-is-undefined.js        | 1 +
 test/built-ins/Proxy/defineProperty/trap-return-is-false.js     | 2 +-
 .../Proxy/deleteProperty/boolean-trap-result-boolean-false.js   | 2 +-
 .../Proxy/deleteProperty/boolean-trap-result-boolean-true.js    | 2 +-
 test/built-ins/Proxy/deleteProperty/call-parameters.js          | 1 +
 test/built-ins/Proxy/deleteProperty/null-handler.js             | 1 +
 test/built-ins/Proxy/deleteProperty/return-false-not-strict.js  | 1 +
 test/built-ins/Proxy/deleteProperty/return-false-strict.js      | 2 +-
 test/built-ins/Proxy/deleteProperty/return-is-abrupt.js         | 1 +
 .../Proxy/deleteProperty/targetdesc-is-not-configurable.js      | 1 +
 .../Proxy/deleteProperty/targetdesc-is-undefined-return-true.js | 1 +
 .../Proxy/deleteProperty/trap-is-not-callable-realm.js          | 2 +-
 test/built-ins/Proxy/deleteProperty/trap-is-not-callable.js     | 1 +
 .../Proxy/deleteProperty/trap-is-undefined-not-strict.js        | 1 +
 test/built-ins/Proxy/deleteProperty/trap-is-undefined-strict.js | 2 +-
 test/built-ins/Proxy/enumerate/removed-does-not-trigger.js      | 2 +-
 test/built-ins/Proxy/function-prototype.js                      | 1 +
 test/built-ins/Proxy/get-fn-realm.js                            | 2 +-
 test/built-ins/Proxy/get/accessor-get-is-undefined-throws.js    | 1 +
 test/built-ins/Proxy/get/call-parameters.js                     | 1 +
 .../not-same-value-configurable-false-writable-false-throws.js  | 1 +
 test/built-ins/Proxy/get/null-handler.js                        | 1 +
 test/built-ins/Proxy/get/return-is-abrupt.js                    | 1 +
 .../built-ins/Proxy/get/return-trap-result-accessor-property.js | 1 +
 .../get/return-trap-result-configurable-false-writable-true.js  | 1 +
 ...turn-trap-result-configurable-true-assessor-get-undefined.js | 1 +
 .../get/return-trap-result-configurable-true-writable-false.js  | 1 +
 ...-trap-result-same-value-configurable-false-writable-false.js | 1 +
 test/built-ins/Proxy/get/return-trap-result.js                  | 1 +
 test/built-ins/Proxy/get/trap-is-not-callable-realm.js          | 2 +-
 test/built-ins/Proxy/get/trap-is-not-callable.js                | 1 +
 test/built-ins/Proxy/get/trap-is-undefined-no-property.js       | 1 +
 test/built-ins/Proxy/get/trap-is-undefined-receiver.js          | 1 +
 test/built-ins/Proxy/get/trap-is-undefined.js                   | 1 +
 .../built-ins/Proxy/getOwnPropertyDescriptor/call-parameters.js | 1 +
 test/built-ins/Proxy/getOwnPropertyDescriptor/null-handler.js   | 1 +
 .../result-is-undefined-target-is-not-extensible.js             | 1 +
 .../result-is-undefined-targetdesc-is-not-configurable.js       | 1 +
 .../result-is-undefined-targetdesc-is-undefined.js              | 1 +
 .../Proxy/getOwnPropertyDescriptor/result-is-undefined.js       | 1 +
 .../result-type-is-not-object-nor-undefined-realm.js            | 2 +-
 .../result-type-is-not-object-nor-undefined.js                  | 2 +-
 .../resultdesc-is-invalid-descriptor.js                         | 1 +
 ...resultdesc-is-not-configurable-targetdesc-is-configurable.js | 1 +
 .../resultdesc-is-not-configurable-targetdesc-is-undefined.js   | 1 +
 .../getOwnPropertyDescriptor/resultdesc-return-configurable.js  | 1 +
 .../resultdesc-return-not-configurable.js                       | 1 +
 .../Proxy/getOwnPropertyDescriptor/return-is-abrupt.js          | 1 +
 .../getOwnPropertyDescriptor/trap-is-not-callable-realm.js      | 2 +-
 .../Proxy/getOwnPropertyDescriptor/trap-is-not-callable.js      | 1 +
 .../Proxy/getOwnPropertyDescriptor/trap-is-undefined.js         | 1 +
 test/built-ins/Proxy/getPrototypeOf/call-parameters.js          | 1 +
 .../getPrototypeOf/extensible-target-return-handlerproto.js     | 1 +
 .../getPrototypeOf/not-extensible-not-same-proto-throws.js      | 1 +
 .../built-ins/Proxy/getPrototypeOf/not-extensible-same-proto.js | 1 +
 test/built-ins/Proxy/getPrototypeOf/null-handler.js             | 1 +
 test/built-ins/Proxy/getPrototypeOf/return-is-abrupt.js         | 1 +
 .../Proxy/getPrototypeOf/trap-is-not-callable-realm.js          | 2 +-
 test/built-ins/Proxy/getPrototypeOf/trap-is-not-callable.js     | 1 +
 test/built-ins/Proxy/getPrototypeOf/trap-is-undefined.js        | 1 +
 .../trap-result-neither-object-nor-null-throws-boolean.js       | 1 +
 .../trap-result-neither-object-nor-null-throws-number.js        | 1 +
 .../trap-result-neither-object-nor-null-throws-string.js        | 1 +
 .../trap-result-neither-object-nor-null-throws-symbol.js        | 2 +-
 .../trap-result-neither-object-nor-null-throws-undefined.js     | 1 +
 test/built-ins/Proxy/has/call-in.js                             | 1 +
 test/built-ins/Proxy/has/call-object-create.js                  | 1 +
 test/built-ins/Proxy/has/call-with.js                           | 1 +
 test/built-ins/Proxy/has/null-handler-using-with.js             | 1 +
 test/built-ins/Proxy/has/null-handler.js                        | 1 +
 .../Proxy/has/return-false-target-not-extensible-using-with.js  | 1 +
 test/built-ins/Proxy/has/return-false-target-not-extensible.js  | 1 +
 .../Proxy/has/return-false-target-prop-exists-using-with.js     | 1 +
 test/built-ins/Proxy/has/return-false-target-prop-exists.js     | 1 +
 .../has/return-false-targetdesc-not-configurable-using-with.js  | 1 +
 .../Proxy/has/return-false-targetdesc-not-configurable.js       | 1 +
 test/built-ins/Proxy/has/return-is-abrupt-in.js                 | 1 +
 test/built-ins/Proxy/has/return-is-abrupt-with.js               | 1 +
 .../Proxy/has/return-true-target-prop-exists-using-with.js      | 1 +
 test/built-ins/Proxy/has/return-true-target-prop-exists.js      | 1 +
 .../built-ins/Proxy/has/return-true-without-same-target-prop.js | 1 +
 test/built-ins/Proxy/has/trap-is-not-callable-realm.js          | 2 +-
 test/built-ins/Proxy/has/trap-is-not-callable-using-with.js     | 1 +
 test/built-ins/Proxy/has/trap-is-not-callable.js                | 1 +
 test/built-ins/Proxy/has/trap-is-undefined-using-with.js        | 1 +
 test/built-ins/Proxy/has/trap-is-undefined.js                   | 1 +
 test/built-ins/Proxy/isExtensible/call-parameters.js            | 1 +
 test/built-ins/Proxy/isExtensible/null-handler.js               | 1 +
 test/built-ins/Proxy/isExtensible/return-is-abrupt.js           | 1 +
 test/built-ins/Proxy/isExtensible/return-is-boolean.js          | 1 +
 .../Proxy/isExtensible/return-is-different-from-target.js       | 1 +
 .../Proxy/isExtensible/return-same-result-from-target.js        | 1 +
 test/built-ins/Proxy/isExtensible/trap-is-not-callable-realm.js | 2 +-
 test/built-ins/Proxy/isExtensible/trap-is-not-callable.js       | 1 +
 test/built-ins/Proxy/isExtensible/trap-is-undefined.js          | 1 +
 test/built-ins/Proxy/length.js                                  | 1 +
 test/built-ins/Proxy/name.js                                    | 1 +
 .../Proxy/ownKeys/call-parameters-object-getownpropertynames.js | 1 +
 .../ownKeys/call-parameters-object-getownpropertysymbols.js     | 2 +-
 test/built-ins/Proxy/ownKeys/call-parameters-object-keys.js     | 1 +
 ...xtensible-return-trap-result-absent-not-configurable-keys.js | 1 +
 test/built-ins/Proxy/ownKeys/extensible-return-trap-result.js   | 1 +
 .../Proxy/ownKeys/not-extensible-missing-keys-throws.js         | 1 +
 test/built-ins/Proxy/ownKeys/not-extensible-new-keys-throws.js  | 1 +
 test/built-ins/Proxy/ownKeys/not-extensible-return-keys.js      | 1 +
 test/built-ins/Proxy/ownKeys/null-handler.js                    | 1 +
 .../built-ins/Proxy/ownKeys/return-all-non-configurable-keys.js | 1 +
 test/built-ins/Proxy/ownKeys/return-duplicate-entries-throws.js | 1 +
 .../Proxy/ownKeys/return-duplicate-symbol-entries-throws.js     | 2 +-
 test/built-ins/Proxy/ownKeys/return-is-abrupt.js                | 1 +
 .../Proxy/ownKeys/return-not-list-object-throws-realm.js        | 2 +-
 test/built-ins/Proxy/ownKeys/return-not-list-object-throws.js   | 2 +-
 test/built-ins/Proxy/ownKeys/return-type-throws-array.js        | 1 +
 test/built-ins/Proxy/ownKeys/return-type-throws-boolean.js      | 1 +
 test/built-ins/Proxy/ownKeys/return-type-throws-null.js         | 1 +
 test/built-ins/Proxy/ownKeys/return-type-throws-number.js       | 1 +
 test/built-ins/Proxy/ownKeys/return-type-throws-object.js       | 1 +
 test/built-ins/Proxy/ownKeys/return-type-throws-undefined.js    | 1 +
 test/built-ins/Proxy/ownKeys/trap-is-not-callable-realm.js      | 2 +-
 test/built-ins/Proxy/ownKeys/trap-is-not-callable.js            | 1 +
 test/built-ins/Proxy/ownKeys/trap-is-undefined.js               | 1 +
 test/built-ins/Proxy/preventExtensions/call-parameters.js       | 1 +
 test/built-ins/Proxy/preventExtensions/null-handler.js          | 1 +
 test/built-ins/Proxy/preventExtensions/return-false.js          | 2 +-
 test/built-ins/Proxy/preventExtensions/return-is-abrupt.js      | 1 +
 .../Proxy/preventExtensions/return-true-target-is-extensible.js | 1 +
 .../preventExtensions/return-true-target-is-not-extensible.js   | 2 +-
 .../Proxy/preventExtensions/trap-is-not-callable-realm.js       | 2 +-
 test/built-ins/Proxy/preventExtensions/trap-is-not-callable.js  | 1 +
 test/built-ins/Proxy/preventExtensions/trap-is-undefined.js     | 2 +-
 test/built-ins/Proxy/proxy-newtarget.js                         | 1 +
 test/built-ins/Proxy/proxy-no-prototype.js                      | 1 +
 test/built-ins/Proxy/proxy-undefined-newtarget.js               | 1 +
 test/built-ins/Proxy/revocable/length.js                        | 1 +
 test/built-ins/Proxy/revocable/name.js                          | 1 +
 test/built-ins/Proxy/revocable/proxy.js                         | 1 +
 .../built-ins/Proxy/revocable/revocation-function-extensible.js | 1 +
 test/built-ins/Proxy/revocable/revocation-function-length.js    | 1 +
 test/built-ins/Proxy/revocable/revocation-function-name.js      | 1 +
 .../Proxy/revocable/revocation-function-nonconstructor.js       | 1 +
 test/built-ins/Proxy/revocable/revocation-function-prototype.js | 1 +
 .../revocable/revoke-consecutive-call-returns-undefined.js      | 1 +
 test/built-ins/Proxy/revocable/revoke-returns-undefined.js      | 1 +
 test/built-ins/Proxy/revocable/revoke.js                        | 1 +
 .../set/boolean-trap-result-is-false-boolean-return-false.js    | 2 +-
 .../Proxy/set/boolean-trap-result-is-false-null-return-false.js | 2 +-
 .../set/boolean-trap-result-is-false-number-return-false.js     | 2 +-
 .../set/boolean-trap-result-is-false-string-return-false.js     | 2 +-
 .../set/boolean-trap-result-is-false-undefined-return-false.js  | 2 +-
 test/built-ins/Proxy/set/call-parameters.js                     | 1 +
 test/built-ins/Proxy/set/null-handler.js                        | 1 +
 test/built-ins/Proxy/set/return-is-abrupt.js                    | 1 +
 ...target-property-accessor-is-configurable-set-is-undefined.js | 2 +-
 .../return-true-target-property-accessor-is-not-configurable.js | 2 +-
 .../set/return-true-target-property-is-not-configurable.js      | 2 +-
 .../Proxy/set/return-true-target-property-is-not-writable.js    | 2 +-
 ...et-property-is-accessor-not-configurable-set-is-undefined.js | 1 +
 ...-property-is-not-configurable-not-writable-not-equal-to-v.js | 1 +
 test/built-ins/Proxy/set/trap-is-not-callable-realm.js          | 2 +-
 test/built-ins/Proxy/set/trap-is-not-callable.js                | 1 +
 test/built-ins/Proxy/set/trap-is-undefined-no-property.js       | 1 +
 test/built-ins/Proxy/set/trap-is-undefined-receiver.js          | 1 +
 test/built-ins/Proxy/set/trap-is-undefined.js                   | 1 +
 test/built-ins/Proxy/setPrototypeOf/call-parameters.js          | 1 +
 test/built-ins/Proxy/setPrototypeOf/internals-call-order.js     | 2 +-
 .../not-extensible-target-not-same-target-prototype.js          | 2 +-
 .../not-extensible-target-same-target-prototype.js              | 2 +-
 test/built-ins/Proxy/setPrototypeOf/null-handler.js             | 1 +
 .../Proxy/setPrototypeOf/return-abrupt-from-get-trap.js         | 1 +
 .../setPrototypeOf/return-abrupt-from-isextensible-target.js    | 1 +
 .../setPrototypeOf/return-abrupt-from-target-getprototypeof.js  | 1 +
 test/built-ins/Proxy/setPrototypeOf/return-abrupt-from-trap.js  | 1 +
 .../Proxy/setPrototypeOf/toboolean-trap-result-false.js         | 2 +-
 .../toboolean-trap-result-true-target-is-extensible.js          | 2 +-
 .../Proxy/setPrototypeOf/trap-is-not-callable-realm.js          | 2 +-
 test/built-ins/Proxy/setPrototypeOf/trap-is-not-callable.js     | 2 +-
 .../built-ins/Proxy/setPrototypeOf/trap-is-undefined-or-null.js | 1 +
 test/built-ins/Reflect/apply/apply.js                           | 1 +
 .../built-ins/Reflect/apply/arguments-list-is-not-array-like.js | 1 +
 test/built-ins/Reflect/apply/call-target.js                     | 1 +
 test/built-ins/Reflect/apply/length.js                          | 1 +
 test/built-ins/Reflect/apply/name.js                            | 1 +
 test/built-ins/Reflect/apply/return-target-call-result.js       | 1 +
 test/built-ins/Reflect/apply/target-is-not-callable-throws.js   | 1 +
 .../Reflect/construct/arguments-list-is-not-array-like.js       | 1 +
 test/built-ins/Reflect/construct/construct.js                   | 1 +
 test/built-ins/Reflect/construct/length.js                      | 1 +
 test/built-ins/Reflect/construct/name.js                        | 1 +
 .../Reflect/construct/newtarget-is-not-constructor-throws.js    | 1 +
 .../Reflect/construct/return-with-newtarget-argument.js         | 1 +
 .../Reflect/construct/return-without-newtarget-argument.js      | 1 +
 .../Reflect/construct/target-is-not-constructor-throws.js       | 1 +
 test/built-ins/Reflect/construct/use-arguments-list.js          | 1 +
 test/built-ins/Reflect/defineProperty/define-properties.js      | 1 +
 .../Reflect/defineProperty/define-symbol-properties.js          | 2 +-
 test/built-ins/Reflect/defineProperty/defineProperty.js         | 1 +
 test/built-ins/Reflect/defineProperty/length.js                 | 1 +
 test/built-ins/Reflect/defineProperty/name.js                   | 1 +
 .../Reflect/defineProperty/return-abrupt-from-attributes.js     | 1 +
 .../Reflect/defineProperty/return-abrupt-from-property-key.js   | 1 +
 .../Reflect/defineProperty/return-abrupt-from-result.js         | 2 +-
 test/built-ins/Reflect/defineProperty/return-boolean.js         | 1 +
 .../Reflect/defineProperty/target-is-not-object-throws.js       | 1 +
 .../built-ins/Reflect/defineProperty/target-is-symbol-throws.js | 2 +-
 test/built-ins/Reflect/deleteProperty/delete-properties.js      | 1 +
 .../Reflect/deleteProperty/delete-symbol-properties.js          | 2 +-
 test/built-ins/Reflect/deleteProperty/deleteProperty.js         | 1 +
 test/built-ins/Reflect/deleteProperty/length.js                 | 1 +
 test/built-ins/Reflect/deleteProperty/name.js                   | 1 +
 .../Reflect/deleteProperty/return-abrupt-from-property-key.js   | 1 +
 .../Reflect/deleteProperty/return-abrupt-from-result.js         | 2 +-
 test/built-ins/Reflect/deleteProperty/return-boolean.js         | 1 +
 .../Reflect/deleteProperty/target-is-not-object-throws.js       | 1 +
 .../built-ins/Reflect/deleteProperty/target-is-symbol-throws.js | 2 +-
 test/built-ins/Reflect/enumerate/undefined.js                   | 1 +
 test/built-ins/Reflect/get/get.js                               | 1 +
 test/built-ins/Reflect/get/length.js                            | 1 +
 test/built-ins/Reflect/get/name.js                              | 1 +
 test/built-ins/Reflect/get/return-abrupt-from-property-key.js   | 1 +
 test/built-ins/Reflect/get/return-abrupt-from-result.js         | 1 +
 test/built-ins/Reflect/get/return-value-from-receiver.js        | 1 +
 test/built-ins/Reflect/get/return-value-from-symbol-key.js      | 2 +-
 test/built-ins/Reflect/get/return-value.js                      | 1 +
 test/built-ins/Reflect/get/target-is-not-object-throws.js       | 1 +
 test/built-ins/Reflect/get/target-is-symbol-throws.js           | 2 +-
 .../getOwnPropertyDescriptor/getOwnPropertyDescriptor.js        | 1 +
 test/built-ins/Reflect/getOwnPropertyDescriptor/length.js       | 1 +
 test/built-ins/Reflect/getOwnPropertyDescriptor/name.js         | 1 +
 .../getOwnPropertyDescriptor/return-abrupt-from-property-key.js | 1 +
 .../getOwnPropertyDescriptor/return-abrupt-from-result.js       | 2 +-
 .../getOwnPropertyDescriptor/return-from-accessor-descriptor.js | 1 +
 .../getOwnPropertyDescriptor/return-from-data-descriptor.js     | 1 +
 .../Reflect/getOwnPropertyDescriptor/symbol-property.js         | 2 +-
 .../getOwnPropertyDescriptor/target-is-not-object-throws.js     | 1 +
 .../Reflect/getOwnPropertyDescriptor/target-is-symbol-throws.js | 2 +-
 .../Reflect/getOwnPropertyDescriptor/undefined-own-property.js  | 1 +
 .../Reflect/getOwnPropertyDescriptor/undefined-property.js      | 1 +
 test/built-ins/Reflect/getPrototypeOf/getPrototypeOf.js         | 1 +
 test/built-ins/Reflect/getPrototypeOf/length.js                 | 1 +
 test/built-ins/Reflect/getPrototypeOf/name.js                   | 1 +
 test/built-ins/Reflect/getPrototypeOf/null-prototype.js         | 1 +
 .../Reflect/getPrototypeOf/return-abrupt-from-result.js         | 2 +-
 test/built-ins/Reflect/getPrototypeOf/return-prototype.js       | 1 +
 test/built-ins/Reflect/getPrototypeOf/skip-own-properties.js    | 1 +
 .../Reflect/getPrototypeOf/target-is-not-object-throws.js       | 1 +
 .../built-ins/Reflect/getPrototypeOf/target-is-symbol-throws.js | 2 +-
 test/built-ins/Reflect/has/has.js                               | 1 +
 test/built-ins/Reflect/has/length.js                            | 1 +
 test/built-ins/Reflect/has/name.js                              | 1 +
 test/built-ins/Reflect/has/return-abrupt-from-property-key.js   | 1 +
 test/built-ins/Reflect/has/return-abrupt-from-result.js         | 2 +-
 test/built-ins/Reflect/has/return-boolean.js                    | 1 +
 test/built-ins/Reflect/has/symbol-property.js                   | 2 +-
 test/built-ins/Reflect/has/target-is-not-object-throws.js       | 1 +
 test/built-ins/Reflect/has/target-is-symbol-throws.js           | 2 +-
 test/built-ins/Reflect/isExtensible/isExtensible.js             | 1 +
 test/built-ins/Reflect/isExtensible/length.js                   | 1 +
 test/built-ins/Reflect/isExtensible/name.js                     | 1 +
 .../built-ins/Reflect/isExtensible/return-abrupt-from-result.js | 2 +-
 test/built-ins/Reflect/isExtensible/return-boolean.js           | 1 +
 .../Reflect/isExtensible/target-is-not-object-throws.js         | 1 +
 test/built-ins/Reflect/isExtensible/target-is-symbol-throws.js  | 2 +-
 test/built-ins/Reflect/object-prototype.js                      | 1 +
 test/built-ins/Reflect/ownKeys/length.js                        | 1 +
 test/built-ins/Reflect/ownKeys/name.js                          | 1 +
 test/built-ins/Reflect/ownKeys/ownKeys.js                       | 1 +
 test/built-ins/Reflect/ownKeys/return-abrupt-from-result.js     | 2 +-
 .../Reflect/ownKeys/return-array-with-own-keys-only.js          | 1 +
 test/built-ins/Reflect/ownKeys/return-empty-array.js            | 1 +
 test/built-ins/Reflect/ownKeys/return-non-enumerable-keys.js    | 1 +
 .../ownKeys/return-on-corresponding-order-large-index.js        | 2 +-
 test/built-ins/Reflect/ownKeys/return-on-corresponding-order.js | 2 +-
 test/built-ins/Reflect/ownKeys/target-is-not-object-throws.js   | 1 +
 test/built-ins/Reflect/ownKeys/target-is-symbol-throws.js       | 2 +-
 .../always-return-true-from-ordinary-object.js                  | 1 +
 test/built-ins/Reflect/preventExtensions/length.js              | 1 +
 test/built-ins/Reflect/preventExtensions/name.js                | 1 +
 test/built-ins/Reflect/preventExtensions/prevent-extensions.js  | 1 +
 test/built-ins/Reflect/preventExtensions/preventExtensions.js   | 1 +
 .../Reflect/preventExtensions/return-abrupt-from-result.js      | 2 +-
 .../preventExtensions/return-boolean-from-proxy-object.js       | 2 +-
 .../Reflect/preventExtensions/target-is-not-object-throws.js    | 1 +
 .../Reflect/preventExtensions/target-is-symbol-throws.js        | 2 +-
 test/built-ins/Reflect/prop-desc.js                             | 1 +
 test/built-ins/Reflect/set/call-prototype-property-set.js       | 1 +
 test/built-ins/Reflect/set/creates-a-data-descriptor.js         | 1 +
 test/built-ins/Reflect/set/different-property-descriptors.js    | 1 +
 test/built-ins/Reflect/set/length.js                            | 1 +
 test/built-ins/Reflect/set/name.js                              | 1 +
 test/built-ins/Reflect/set/receiver-is-not-object.js            | 1 +
 test/built-ins/Reflect/set/return-abrupt-from-property-key.js   | 1 +
 test/built-ins/Reflect/set/return-abrupt-from-result.js         | 1 +
 .../Reflect/set/return-false-if-receiver-is-not-writable.js     | 1 +
 .../Reflect/set/return-false-if-target-is-not-writable.js       | 1 +
 .../set/set-value-on-accessor-descriptor-with-receiver.js       | 1 +
 test/built-ins/Reflect/set/set-value-on-accessor-descriptor.js  | 1 +
 test/built-ins/Reflect/set/set-value-on-data-descriptor.js      | 1 +
 test/built-ins/Reflect/set/set.js                               | 1 +
 test/built-ins/Reflect/set/symbol-property.js                   | 2 +-
 test/built-ins/Reflect/set/target-is-not-object-throws.js       | 1 +
 test/built-ins/Reflect/set/target-is-symbol-throws.js           | 2 +-
 test/built-ins/Reflect/setPrototypeOf/length.js                 | 1 +
 test/built-ins/Reflect/setPrototypeOf/name.js                   | 1 +
 .../setPrototypeOf/proto-is-not-object-and-not-null-throws.js   | 1 +
 test/built-ins/Reflect/setPrototypeOf/proto-is-symbol-throws.js | 2 +-
 .../Reflect/setPrototypeOf/return-abrupt-from-result.js         | 2 +-
 .../return-false-if-target-and-proto-are-the-same.js            | 1 +
 .../setPrototypeOf/return-false-if-target-is-not-extensible.js  | 1 +
 .../return-false-if-target-is-prototype-of-proto.js             | 1 +
 .../setPrototypeOf/return-true-if-new-prototype-is-set.js       | 1 +
 .../Reflect/setPrototypeOf/return-true-if-proto-is-current.js   | 1 +
 test/built-ins/Reflect/setPrototypeOf/setPrototypeOf.js         | 1 +
 .../Reflect/setPrototypeOf/target-is-not-object-throws.js       | 1 +
 .../built-ins/Reflect/setPrototypeOf/target-is-symbol-throws.js | 2 +-
 374 files changed, 374 insertions(+), 91 deletions(-)

diff --git a/test/built-ins/Proxy/apply/call-parameters.js b/test/built-ins/Proxy/apply/call-parameters.js
index 347e4bb4ea..f45af9cdff 100644
--- a/test/built-ins/Proxy/apply/call-parameters.js
+++ b/test/built-ins/Proxy/apply/call-parameters.js
@@ -9,6 +9,7 @@ info: |
     [[Call]] (thisArgument, argumentsList)
 
     9. Return Call(trap, handler, «target, thisArgument, argArray»).
+features: [Proxy]
 ---*/
 
 var _target, _args, _handler, _context;
diff --git a/test/built-ins/Proxy/apply/call-result.js b/test/built-ins/Proxy/apply/call-result.js
index 1f3bf53d2f..451d3c18cd 100644
--- a/test/built-ins/Proxy/apply/call-result.js
+++ b/test/built-ins/Proxy/apply/call-result.js
@@ -8,6 +8,7 @@ info: |
     [[Call]] (thisArgument, argumentsList)
 
     9. Return Call(trap, handler, «target, thisArgument, argArray»).
+features: [Proxy]
 ---*/
 
 var target = function(a, b) {
diff --git a/test/built-ins/Proxy/apply/null-handler.js b/test/built-ins/Proxy/apply/null-handler.js
index cdc7461d11..6e0016ec8b 100644
--- a/test/built-ins/Proxy/apply/null-handler.js
+++ b/test/built-ins/Proxy/apply/null-handler.js
@@ -6,6 +6,7 @@ description: >
     [[Call]] (thisArgument, argumentsList)
 
     2. If handler is null, throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 
diff --git a/test/built-ins/Proxy/apply/return-abrupt.js b/test/built-ins/Proxy/apply/return-abrupt.js
index db3f6bfa56..494973defb 100644
--- a/test/built-ins/Proxy/apply/return-abrupt.js
+++ b/test/built-ins/Proxy/apply/return-abrupt.js
@@ -4,6 +4,7 @@
 es6id: 9.5.13
 description: >
     Return is an abrupt completion
+features: [Proxy]
 ---*/
 
 var target = function(a, b) {
diff --git a/test/built-ins/Proxy/apply/trap-is-not-callable-realm.js b/test/built-ins/Proxy/apply/trap-is-not-callable-realm.js
index e9298ce27a..d225b984c2 100644
--- a/test/built-ins/Proxy/apply/trap-is-not-callable-realm.js
+++ b/test/built-ins/Proxy/apply/trap-is-not-callable-realm.js
@@ -6,7 +6,7 @@ es6id: 9.5.13
 description: >
   Throws if trap is not callable (honoring the Realm of the current execution
   context)
-features: [cross-realm]
+features: [cross-realm, Proxy]
 ---*/
 
 var OProxy = $262.createRealm().global.Proxy;
diff --git a/test/built-ins/Proxy/apply/trap-is-not-callable.js b/test/built-ins/Proxy/apply/trap-is-not-callable.js
index b6e74f1ef3..14e84966b2 100644
--- a/test/built-ins/Proxy/apply/trap-is-not-callable.js
+++ b/test/built-ins/Proxy/apply/trap-is-not-callable.js
@@ -4,6 +4,7 @@
 es6id: 9.5.13
 description: >
     Throws if trap is not callable.
+features: [Proxy]
 ---*/
 
 var p = new Proxy(function() {}, {
diff --git a/test/built-ins/Proxy/apply/trap-is-null.js b/test/built-ins/Proxy/apply/trap-is-null.js
index 8bb87786c1..0584a3ddb6 100644
--- a/test/built-ins/Proxy/apply/trap-is-null.js
+++ b/test/built-ins/Proxy/apply/trap-is-null.js
@@ -20,6 +20,7 @@ info: |
     ...
     3. If func is either undefined or null, return undefined.
     ...
+features: [Proxy]
 ---*/
 
 var calls = 0;
diff --git a/test/built-ins/Proxy/apply/trap-is-undefined-no-property.js b/test/built-ins/Proxy/apply/trap-is-undefined-no-property.js
index 898fad3621..45e2ef5f77 100644
--- a/test/built-ins/Proxy/apply/trap-is-undefined-no-property.js
+++ b/test/built-ins/Proxy/apply/trap-is-undefined-no-property.js
@@ -20,6 +20,7 @@ info: |
     ...
     3. If func is either undefined or null, return undefined.
     ...
+features: [Proxy]
 ---*/
 
 var calls = 0;
diff --git a/test/built-ins/Proxy/apply/trap-is-undefined.js b/test/built-ins/Proxy/apply/trap-is-undefined.js
index a8df9f34ba..5a2b9e5e77 100644
--- a/test/built-ins/Proxy/apply/trap-is-undefined.js
+++ b/test/built-ins/Proxy/apply/trap-is-undefined.js
@@ -20,6 +20,7 @@ info: |
     ...
     3. If func is either undefined or null, return undefined.
     ...
+features: [Proxy]
 ---*/
 
 var calls = 0;
diff --git a/test/built-ins/Proxy/construct/call-parameters-new-target.js b/test/built-ins/Proxy/construct/call-parameters-new-target.js
index dab0f8512f..21adc346b9 100644
--- a/test/built-ins/Proxy/construct/call-parameters-new-target.js
+++ b/test/built-ins/Proxy/construct/call-parameters-new-target.js
@@ -11,7 +11,7 @@ info: |
     [[Construct]] (argumentsList, newTarget)
 
     9. Let newObj be Call(trap, handler, «target, argArray, newTarget»).
-features: [Reflect.construct]
+features: [Proxy, Reflect, Reflect.construct]
 ---*/
 
 function Target() {}
diff --git a/test/built-ins/Proxy/construct/call-parameters.js b/test/built-ins/Proxy/construct/call-parameters.js
index 7d0e9cc1e4..ad36717b52 100644
--- a/test/built-ins/Proxy/construct/call-parameters.js
+++ b/test/built-ins/Proxy/construct/call-parameters.js
@@ -10,6 +10,7 @@ info: |
     [[Construct]] ( argumentsList, newTarget)
 
     9. Let newObj be Call(trap, handler, «target, argArray, newTarget »).
+features: [Proxy]
 ---*/
 
 var _target, _handler, _args, _P;
diff --git a/test/built-ins/Proxy/construct/call-result.js b/test/built-ins/Proxy/construct/call-result.js
index 7740f1fe85..0a65858468 100644
--- a/test/built-ins/Proxy/construct/call-result.js
+++ b/test/built-ins/Proxy/construct/call-result.js
@@ -8,6 +8,7 @@ info: |
     [[Construct]] ( argumentsList, newTarget)
 
     12. Return newObj
+features: [Proxy]
 ---*/
 
 function Target(a, b) {
diff --git a/test/built-ins/Proxy/construct/null-handler.js b/test/built-ins/Proxy/construct/null-handler.js
index 816d04d4f7..d94f02e70c 100644
--- a/test/built-ins/Proxy/construct/null-handler.js
+++ b/test/built-ins/Proxy/construct/null-handler.js
@@ -6,6 +6,7 @@ description: >
     [[Construct]] ( argumentsList, newTarget)
 
     2. If handler is null, throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 
diff --git a/test/built-ins/Proxy/construct/return-is-abrupt.js b/test/built-ins/Proxy/construct/return-is-abrupt.js
index c0d41aa4ee..272fd06489 100644
--- a/test/built-ins/Proxy/construct/return-is-abrupt.js
+++ b/test/built-ins/Proxy/construct/return-is-abrupt.js
@@ -9,6 +9,7 @@ info: |
 
     9. Let newObj be Call(trap, handler, «target, argArray, newTarget »).
     10. ReturnIfAbrupt(newObj).
+features: [Proxy]
 ---*/
 
 function Target() {}
diff --git a/test/built-ins/Proxy/construct/return-not-object-throws-boolean.js b/test/built-ins/Proxy/construct/return-not-object-throws-boolean.js
index 5c40d5c8c8..6b00f4635e 100644
--- a/test/built-ins/Proxy/construct/return-not-object-throws-boolean.js
+++ b/test/built-ins/Proxy/construct/return-not-object-throws-boolean.js
@@ -8,6 +8,7 @@ info: |
     [[Construct]] ( argumentsList, newTarget)
 
     11. If Type(newObj) is not Object, throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 function Target() {
diff --git a/test/built-ins/Proxy/construct/return-not-object-throws-number.js b/test/built-ins/Proxy/construct/return-not-object-throws-number.js
index 7e97a803b8..3861877640 100644
--- a/test/built-ins/Proxy/construct/return-not-object-throws-number.js
+++ b/test/built-ins/Proxy/construct/return-not-object-throws-number.js
@@ -8,6 +8,7 @@ info: |
     [[Construct]] ( argumentsList, newTarget)
 
     11. If Type(newObj) is not Object, throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 function Target() {
diff --git a/test/built-ins/Proxy/construct/return-not-object-throws-string.js b/test/built-ins/Proxy/construct/return-not-object-throws-string.js
index ca2f5af05c..4917cb36b2 100644
--- a/test/built-ins/Proxy/construct/return-not-object-throws-string.js
+++ b/test/built-ins/Proxy/construct/return-not-object-throws-string.js
@@ -8,6 +8,7 @@ info: |
     [[Construct]] ( argumentsList, newTarget)
 
     11. If Type(newObj) is not Object, throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 function Target() {
diff --git a/test/built-ins/Proxy/construct/return-not-object-throws-symbol.js b/test/built-ins/Proxy/construct/return-not-object-throws-symbol.js
index 963812950a..fbf42ad113 100644
--- a/test/built-ins/Proxy/construct/return-not-object-throws-symbol.js
+++ b/test/built-ins/Proxy/construct/return-not-object-throws-symbol.js
@@ -8,7 +8,7 @@ info: |
     [[Construct]] ( argumentsList, newTarget)
 
     11. If Type(newObj) is not Object, throw a TypeError exception.
-features: [Symbol]
+features: [Proxy, Symbol]
 ---*/
 
 function Target() {
diff --git a/test/built-ins/Proxy/construct/return-not-object-throws-undefined.js b/test/built-ins/Proxy/construct/return-not-object-throws-undefined.js
index 347dd3dd92..026c6e19b4 100644
--- a/test/built-ins/Proxy/construct/return-not-object-throws-undefined.js
+++ b/test/built-ins/Proxy/construct/return-not-object-throws-undefined.js
@@ -8,6 +8,7 @@ info: |
     [[Construct]] ( argumentsList, newTarget)
 
     11. If Type(newObj) is not Object, throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 function Target() {
diff --git a/test/built-ins/Proxy/construct/trap-is-not-callable-realm.js b/test/built-ins/Proxy/construct/trap-is-not-callable-realm.js
index ea02b140a7..853ea5879d 100644
--- a/test/built-ins/Proxy/construct/trap-is-not-callable-realm.js
+++ b/test/built-ins/Proxy/construct/trap-is-not-callable-realm.js
@@ -6,7 +6,7 @@ es6id: 9.5.14
 description: >
   Throws if trap is not callable (honoring the Realm of the current execution
   context)
-features: [cross-realm]
+features: [cross-realm, Proxy]
 ---*/
 
 var OProxy = $262.createRealm().global.Proxy;
diff --git a/test/built-ins/Proxy/construct/trap-is-not-callable.js b/test/built-ins/Proxy/construct/trap-is-not-callable.js
index 41bc0c700c..f5f7996e8e 100644
--- a/test/built-ins/Proxy/construct/trap-is-not-callable.js
+++ b/test/built-ins/Proxy/construct/trap-is-not-callable.js
@@ -4,6 +4,7 @@
 es6id: 9.5.14
 description: >
     Throws if trap is not callable.
+features: [Proxy]
 ---*/
 
 function Target() {}
diff --git a/test/built-ins/Proxy/construct/trap-is-null.js b/test/built-ins/Proxy/construct/trap-is-null.js
index 9bc1ab29f3..fdd4852738 100644
--- a/test/built-ins/Proxy/construct/trap-is-null.js
+++ b/test/built-ins/Proxy/construct/trap-is-null.js
@@ -21,7 +21,7 @@ info: |
     ...
     3. If func is either undefined or null, return undefined.
     ...
-features: [Reflect.construct]
+features: [Proxy, Reflect, Reflect.construct]
 ---*/
 
 var calls = 0;
diff --git a/test/built-ins/Proxy/construct/trap-is-undefined-no-property.js b/test/built-ins/Proxy/construct/trap-is-undefined-no-property.js
index 4157f7b234..a6472c1ab3 100644
--- a/test/built-ins/Proxy/construct/trap-is-undefined-no-property.js
+++ b/test/built-ins/Proxy/construct/trap-is-undefined-no-property.js
@@ -10,7 +10,7 @@ info: |
 
     7. If trap is undefined, then
         b. Return Construct(target, argumentsList, newTarget).
-features: [Reflect.construct]
+features: [Proxy, Reflect, Reflect.construct]
 ---*/
 
 var calls = 0;
diff --git a/test/built-ins/Proxy/construct/trap-is-undefined-proto-from-ctor-realm.js b/test/built-ins/Proxy/construct/trap-is-undefined-proto-from-ctor-realm.js
index 3af68854db..67930e35c3 100644
--- a/test/built-ins/Proxy/construct/trap-is-undefined-proto-from-ctor-realm.js
+++ b/test/built-ins/Proxy/construct/trap-is-undefined-proto-from-ctor-realm.js
@@ -20,7 +20,7 @@ info: |
        a. Let realm be ? GetFunctionRealm(constructor).
        b. Let proto be realm's intrinsic object named intrinsicDefaultProto.
     [...]
-features: [cross-realm, Reflect.construct]
+features: [cross-realm, Proxy, Reflect, Reflect.construct]
 ---*/
 
 var other = $262.createRealm().global;
diff --git a/test/built-ins/Proxy/construct/trap-is-undefined.js b/test/built-ins/Proxy/construct/trap-is-undefined.js
index 97580c6d64..7c17356267 100644
--- a/test/built-ins/Proxy/construct/trap-is-undefined.js
+++ b/test/built-ins/Proxy/construct/trap-is-undefined.js
@@ -21,7 +21,7 @@ info: |
     ...
     3. If func is either undefined or null, return undefined.
     ...
-features: [Reflect.construct]
+features: [Proxy, Reflect, Reflect.construct]
 ---*/
 
 var calls = 0;
diff --git a/test/built-ins/Proxy/constructor.js b/test/built-ins/Proxy/constructor.js
index 1fff16b967..1b6806f6f9 100644
--- a/test/built-ins/Proxy/constructor.js
+++ b/test/built-ins/Proxy/constructor.js
@@ -5,6 +5,7 @@ es6id: 26.2.1
 description: >
     The Proxy constructor is the %Proxy% intrinsic object and the
     initial value of the Proxy property of the global object.
+features: [Proxy]
 ---*/
 
 assert.sameValue(typeof Proxy, "function", "`typeof Proxy` is `'function'`");
diff --git a/test/built-ins/Proxy/create-handler-is-revoked-proxy.js b/test/built-ins/Proxy/create-handler-is-revoked-proxy.js
index 151ad36f41..fc9a343dc8 100644
--- a/test/built-ins/Proxy/create-handler-is-revoked-proxy.js
+++ b/test/built-ins/Proxy/create-handler-is-revoked-proxy.js
@@ -9,6 +9,7 @@ description: >
     [[ProxyHandler]] internal slot of handler is null, throw a
     TypeError exception.
     ...
+features: [Proxy]
 ---*/
 
 var revocable = Proxy.revocable({}, {});
diff --git a/test/built-ins/Proxy/create-handler-not-object-throw-boolean.js b/test/built-ins/Proxy/create-handler-not-object-throw-boolean.js
index e1846af107..123119a010 100644
--- a/test/built-ins/Proxy/create-handler-not-object-throw-boolean.js
+++ b/test/built-ins/Proxy/create-handler-not-object-throw-boolean.js
@@ -7,6 +7,7 @@ description: >
     ...
     3. If Type(handler) is not Object, throw a TypeError exception.
     ...
+features: [Proxy]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Proxy/create-handler-not-object-throw-null.js b/test/built-ins/Proxy/create-handler-not-object-throw-null.js
index c22244d25f..992ebe7f4a 100644
--- a/test/built-ins/Proxy/create-handler-not-object-throw-null.js
+++ b/test/built-ins/Proxy/create-handler-not-object-throw-null.js
@@ -7,6 +7,7 @@ description: >
     ...
     3. If Type(handler) is not Object, throw a TypeError exception.
     ...
+features: [Proxy]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Proxy/create-handler-not-object-throw-number.js b/test/built-ins/Proxy/create-handler-not-object-throw-number.js
index 262a990672..4ed00aa68f 100644
--- a/test/built-ins/Proxy/create-handler-not-object-throw-number.js
+++ b/test/built-ins/Proxy/create-handler-not-object-throw-number.js
@@ -7,6 +7,7 @@ description: >
     ...
     3. If Type(handler) is not Object, throw a TypeError exception.
     ...
+features: [Proxy]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Proxy/create-handler-not-object-throw-string.js b/test/built-ins/Proxy/create-handler-not-object-throw-string.js
index 3882b313e6..60b5aac4ad 100644
--- a/test/built-ins/Proxy/create-handler-not-object-throw-string.js
+++ b/test/built-ins/Proxy/create-handler-not-object-throw-string.js
@@ -7,6 +7,7 @@ description: >
     ...
     3. If Type(handler) is not Object, throw a TypeError exception.
     ...
+features: [Proxy]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Proxy/create-handler-not-object-throw-symbol.js b/test/built-ins/Proxy/create-handler-not-object-throw-symbol.js
index 78234d8e22..5efddeb353 100644
--- a/test/built-ins/Proxy/create-handler-not-object-throw-symbol.js
+++ b/test/built-ins/Proxy/create-handler-not-object-throw-symbol.js
@@ -7,7 +7,7 @@ description: >
     ...
     3. If Type(handler) is not Object, throw a TypeError exception.
     ...
-features: [Symbol]
+features: [Proxy, Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Proxy/create-handler-not-object-throw-undefined.js b/test/built-ins/Proxy/create-handler-not-object-throw-undefined.js
index 78a78ba640..03d75c02bb 100644
--- a/test/built-ins/Proxy/create-handler-not-object-throw-undefined.js
+++ b/test/built-ins/Proxy/create-handler-not-object-throw-undefined.js
@@ -7,6 +7,7 @@ description: >
     ...
     3. If Type(handler) is not Object, throw a TypeError exception.
     ...
+features: [Proxy]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Proxy/create-target-is-not-callable.js b/test/built-ins/Proxy/create-target-is-not-callable.js
index b29ed9cd0d..b381ab5877 100644
--- a/test/built-ins/Proxy/create-target-is-not-callable.js
+++ b/test/built-ins/Proxy/create-target-is-not-callable.js
@@ -16,6 +16,7 @@ info: |
     tailPosition )
 
     4. If IsCallable(func) is false, throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {});
diff --git a/test/built-ins/Proxy/create-target-is-not-constructor.js b/test/built-ins/Proxy/create-target-is-not-constructor.js
index f369b5ef21..dc18e2a574 100644
--- a/test/built-ins/Proxy/create-target-is-not-constructor.js
+++ b/test/built-ins/Proxy/create-target-is-not-constructor.js
@@ -17,6 +17,7 @@ info: |
     12.3.3.1.1 Runtime Semantics: EvaluateNew(constructProduction, arguments)
 
     8. If IsConstructor (constructor) is false, throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 var p = new Proxy(eval, {});
diff --git a/test/built-ins/Proxy/create-target-is-revoked-proxy.js b/test/built-ins/Proxy/create-target-is-revoked-proxy.js
index fb8b118de3..7e33b1ddb9 100644
--- a/test/built-ins/Proxy/create-target-is-revoked-proxy.js
+++ b/test/built-ins/Proxy/create-target-is-revoked-proxy.js
@@ -9,6 +9,7 @@ description: >
     [[ProxyHandler]] internal slot of target is null, throw a
     TypeError exception.
     ...
+features: [Proxy]
 ---*/
 
 var revocable = Proxy.revocable({}, {});
diff --git a/test/built-ins/Proxy/create-target-not-object-throw-boolean.js b/test/built-ins/Proxy/create-target-not-object-throw-boolean.js
index d8b9f1856f..7cd761a31f 100644
--- a/test/built-ins/Proxy/create-target-not-object-throw-boolean.js
+++ b/test/built-ins/Proxy/create-target-not-object-throw-boolean.js
@@ -7,6 +7,7 @@ description: >
     ...
     1. If Type(target) is not Object, throw a TypeError exception.
     ...
+features: [Proxy]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Proxy/create-target-not-object-throw-null.js b/test/built-ins/Proxy/create-target-not-object-throw-null.js
index af64c1e46b..18a3b995c8 100644
--- a/test/built-ins/Proxy/create-target-not-object-throw-null.js
+++ b/test/built-ins/Proxy/create-target-not-object-throw-null.js
@@ -7,6 +7,7 @@ description: >
     ...
     1. If Type(target) is not Object, throw a TypeError exception.
     ...
+features: [Proxy]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Proxy/create-target-not-object-throw-number.js b/test/built-ins/Proxy/create-target-not-object-throw-number.js
index ba78893441..c7f05b634c 100644
--- a/test/built-ins/Proxy/create-target-not-object-throw-number.js
+++ b/test/built-ins/Proxy/create-target-not-object-throw-number.js
@@ -7,6 +7,7 @@ description: >
     ...
     1. If Type(target) is not Object, throw a TypeError exception.
     ...
+features: [Proxy]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Proxy/create-target-not-object-throw-string.js b/test/built-ins/Proxy/create-target-not-object-throw-string.js
index aa1fcd96ff..6fd1bc2b0d 100644
--- a/test/built-ins/Proxy/create-target-not-object-throw-string.js
+++ b/test/built-ins/Proxy/create-target-not-object-throw-string.js
@@ -7,6 +7,7 @@ description: >
     ...
     1. If Type(target) is not Object, throw a TypeError exception.
     ...
+features: [Proxy]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Proxy/create-target-not-object-throw-symbol.js b/test/built-ins/Proxy/create-target-not-object-throw-symbol.js
index 825e7145af..6062561c24 100644
--- a/test/built-ins/Proxy/create-target-not-object-throw-symbol.js
+++ b/test/built-ins/Proxy/create-target-not-object-throw-symbol.js
@@ -7,7 +7,7 @@ description: >
     ...
     1. If Type(target) is not Object, throw a TypeError exception.
     ...
-features: [Symbol]
+features: [Proxy, Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Proxy/create-target-not-object-throw-undefined.js b/test/built-ins/Proxy/create-target-not-object-throw-undefined.js
index 42895cf623..bd1b9acdd6 100644
--- a/test/built-ins/Proxy/create-target-not-object-throw-undefined.js
+++ b/test/built-ins/Proxy/create-target-not-object-throw-undefined.js
@@ -7,6 +7,7 @@ description: >
     ...
     1. If Type(target) is not Object, throw a TypeError exception.
     ...
+features: [Proxy]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Proxy/defineProperty/call-parameters.js b/test/built-ins/Proxy/defineProperty/call-parameters.js
index 6afb6f5baf..7ea4a7f9ad 100644
--- a/test/built-ins/Proxy/defineProperty/call-parameters.js
+++ b/test/built-ins/Proxy/defineProperty/call-parameters.js
@@ -13,6 +13,7 @@ info: |
     10. Let booleanTrapResult be ToBoolean(Call(trap, handler, «target, P,
     descObj»)).
     ...
+features: [Proxy]
 ---*/
 
 var _handler, _target, _prop, _desc;
diff --git a/test/built-ins/Proxy/defineProperty/desc-realm.js b/test/built-ins/Proxy/defineProperty/desc-realm.js
index 609ed7e146..0a18f9a061 100644
--- a/test/built-ins/Proxy/defineProperty/desc-realm.js
+++ b/test/built-ins/Proxy/defineProperty/desc-realm.js
@@ -21,7 +21,7 @@ info: |
   2. Let obj be ObjectCreate(%ObjectPrototype%).
   ...
   11. Return obj.
-features: [cross-realm]
+features: [cross-realm, Proxy]
 ---*/
 
 var OProxy = $262.createRealm().global.Proxy;
diff --git a/test/built-ins/Proxy/defineProperty/null-handler-realm.js b/test/built-ins/Proxy/defineProperty/null-handler-realm.js
index 746dea5399..44e228e8e2 100644
--- a/test/built-ins/Proxy/defineProperty/null-handler-realm.js
+++ b/test/built-ins/Proxy/defineProperty/null-handler-realm.js
@@ -10,7 +10,7 @@ info: |
   1. Assert: IsPropertyKey(P) is true.
   2. Let handler be O.[[ProxyHandler]].
   3. If handler is null, throw a TypeError exception.
-features: [cross-realm]
+features: [cross-realm, Proxy]
 ---*/
 
 var OProxy = $262.createRealm().global.Proxy;
diff --git a/test/built-ins/Proxy/defineProperty/null-handler.js b/test/built-ins/Proxy/defineProperty/null-handler.js
index aa83c1ff03..509058dcda 100644
--- a/test/built-ins/Proxy/defineProperty/null-handler.js
+++ b/test/built-ins/Proxy/defineProperty/null-handler.js
@@ -4,6 +4,7 @@
 es6id: 9.5.6
 description: >
     Throws a TypeError exception if handler is null.
+features: [Proxy]
 ---*/
 
 var p = Proxy.revocable({}, {});
diff --git a/test/built-ins/Proxy/defineProperty/return-boolean-and-define-target.js b/test/built-ins/Proxy/defineProperty/return-boolean-and-define-target.js
index 0f7594a143..51aecfcd3e 100644
--- a/test/built-ins/Proxy/defineProperty/return-boolean-and-define-target.js
+++ b/test/built-ins/Proxy/defineProperty/return-boolean-and-define-target.js
@@ -6,7 +6,7 @@ description: >
     If a property has a corresponding target object property then applying the
     Property Descriptor of the property to the target object using
     [[DefineOwnProperty]] will not throw an exception.
-features: [Reflect]
+features: [Proxy, Reflect]
 includes: [propertyHelper.js]
 ---*/
 
diff --git a/test/built-ins/Proxy/defineProperty/return-is-abrupt.js b/test/built-ins/Proxy/defineProperty/return-is-abrupt.js
index 5914eacf60..175429057c 100644
--- a/test/built-ins/Proxy/defineProperty/return-is-abrupt.js
+++ b/test/built-ins/Proxy/defineProperty/return-is-abrupt.js
@@ -12,6 +12,7 @@ info: |
     descObj»)).
     11. ReturnIfAbrupt(booleanTrapResult).
     ...
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/defineProperty/targetdesc-configurable-desc-not-configurable-realm.js b/test/built-ins/Proxy/defineProperty/targetdesc-configurable-desc-not-configurable-realm.js
index b87cfbfe5d..af491e9518 100644
--- a/test/built-ins/Proxy/defineProperty/targetdesc-configurable-desc-not-configurable-realm.js
+++ b/test/built-ins/Proxy/defineProperty/targetdesc-configurable-desc-not-configurable-realm.js
@@ -15,7 +15,7 @@ info: |
         b. If settingConfigFalse is true and targetDesc.[[Configurable]] is
         true, throw a TypeError exception.
     ...
-features: [cross-realm]
+features: [cross-realm, Proxy]
 ---*/
 
 var OProxy = $262.createRealm().global.Proxy;
diff --git a/test/built-ins/Proxy/defineProperty/targetdesc-configurable-desc-not-configurable.js b/test/built-ins/Proxy/defineProperty/targetdesc-configurable-desc-not-configurable.js
index 25bf881713..546ec79c2d 100644
--- a/test/built-ins/Proxy/defineProperty/targetdesc-configurable-desc-not-configurable.js
+++ b/test/built-ins/Proxy/defineProperty/targetdesc-configurable-desc-not-configurable.js
@@ -13,6 +13,7 @@ info: |
         b. If settingConfigFalse is true and targetDesc.[[Configurable]] is
         true, throw a TypeError exception.
     ...
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor-not-configurable-target-realm.js b/test/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor-not-configurable-target-realm.js
index 4d62b68c96..5b1d0d311d 100644
--- a/test/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor-not-configurable-target-realm.js
+++ b/test/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor-not-configurable-target-realm.js
@@ -14,7 +14,7 @@ info: |
         a. If IsCompatiblePropertyDescriptor(extensibleTarget, Desc ,
         targetDesc) is false, throw a TypeError exception.
     ...
-features: [cross-realm]
+features: [cross-realm, Proxy]
 ---*/
 
 var OProxy = $262.createRealm().global.Proxy;
diff --git a/test/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor-not-configurable-target.js b/test/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor-not-configurable-target.js
index 14ce2cc244..57d56406ed 100644
--- a/test/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor-not-configurable-target.js
+++ b/test/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor-not-configurable-target.js
@@ -13,6 +13,7 @@ info: |
         a. If IsCompatiblePropertyDescriptor(extensibleTarget, Desc ,
         targetDesc) is false, throw a TypeError exception.
     ...
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor-realm.js b/test/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor-realm.js
index 7469989277..042c617392 100644
--- a/test/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor-realm.js
+++ b/test/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor-realm.js
@@ -15,7 +15,7 @@ info: |
         a. If IsCompatiblePropertyDescriptor(extensibleTarget, Desc ,
         targetDesc) is false, throw a TypeError exception.
     ...
-features: [cross-realm]
+features: [cross-realm, Proxy]
 ---*/
 
 var OProxy = $262.createRealm().global.Proxy;
diff --git a/test/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor.js b/test/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor.js
index 1a671b3a0b..d357e2c53d 100644
--- a/test/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor.js
+++ b/test/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor.js
@@ -13,6 +13,7 @@ info: |
         a. If IsCompatiblePropertyDescriptor(extensibleTarget, Desc ,
         targetDesc) is false, throw a TypeError exception.
     ...
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/defineProperty/targetdesc-undefined-not-configurable-descriptor-realm.js b/test/built-ins/Proxy/defineProperty/targetdesc-undefined-not-configurable-descriptor-realm.js
index b1f5b831e0..d883ecdf22 100644
--- a/test/built-ins/Proxy/defineProperty/targetdesc-undefined-not-configurable-descriptor-realm.js
+++ b/test/built-ins/Proxy/defineProperty/targetdesc-undefined-not-configurable-descriptor-realm.js
@@ -15,7 +15,7 @@ info: |
         ...
         b. If settingConfigFalse is true, throw a TypeError exception.
     ...
-features: [cross-realm]
+features: [cross-realm, Proxy]
 ---*/
 
 var OProxy = $262.createRealm().global.Proxy;
diff --git a/test/built-ins/Proxy/defineProperty/targetdesc-undefined-not-configurable-descriptor.js b/test/built-ins/Proxy/defineProperty/targetdesc-undefined-not-configurable-descriptor.js
index ca6f80c866..881c0b0777 100644
--- a/test/built-ins/Proxy/defineProperty/targetdesc-undefined-not-configurable-descriptor.js
+++ b/test/built-ins/Proxy/defineProperty/targetdesc-undefined-not-configurable-descriptor.js
@@ -13,6 +13,7 @@ info: |
         ...
         b. If settingConfigFalse is true, throw a TypeError exception.
     ...
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/defineProperty/targetdesc-undefined-target-is-not-extensible-realm.js b/test/built-ins/Proxy/defineProperty/targetdesc-undefined-target-is-not-extensible-realm.js
index 9471abc137..c281849d99 100644
--- a/test/built-ins/Proxy/defineProperty/targetdesc-undefined-target-is-not-extensible-realm.js
+++ b/test/built-ins/Proxy/defineProperty/targetdesc-undefined-target-is-not-extensible-realm.js
@@ -14,7 +14,7 @@ info: |
     19. If targetDesc is undefined, then
         a. If extensibleTarget is false, throw a TypeError exception.
     ...
-features: [cross-realm]
+features: [cross-realm, Proxy]
 ---*/
 
 var OProxy = $262.createRealm().global.Proxy;
diff --git a/test/built-ins/Proxy/defineProperty/targetdesc-undefined-target-is-not-extensible.js b/test/built-ins/Proxy/defineProperty/targetdesc-undefined-target-is-not-extensible.js
index 9f5a53c7d3..7908b63823 100644
--- a/test/built-ins/Proxy/defineProperty/targetdesc-undefined-target-is-not-extensible.js
+++ b/test/built-ins/Proxy/defineProperty/targetdesc-undefined-target-is-not-extensible.js
@@ -12,6 +12,7 @@ info: |
     19. If targetDesc is undefined, then
         a. If extensibleTarget is false, throw a TypeError exception.
     ...
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/defineProperty/trap-is-not-callable-realm.js b/test/built-ins/Proxy/defineProperty/trap-is-not-callable-realm.js
index 2542dcf056..e5674f8a79 100644
--- a/test/built-ins/Proxy/defineProperty/trap-is-not-callable-realm.js
+++ b/test/built-ins/Proxy/defineProperty/trap-is-not-callable-realm.js
@@ -17,7 +17,7 @@ info: |
         2. Let func be GetV(O, P).
         5. If IsCallable(func) is false, throw a TypeError exception.
         ...
-features: [cross-realm]
+features: [cross-realm, Proxy]
 ---*/
 
 var OProxy = $262.createRealm().global.Proxy;
diff --git a/test/built-ins/Proxy/defineProperty/trap-is-not-callable.js b/test/built-ins/Proxy/defineProperty/trap-is-not-callable.js
index d75b215674..8c417344ef 100644
--- a/test/built-ins/Proxy/defineProperty/trap-is-not-callable.js
+++ b/test/built-ins/Proxy/defineProperty/trap-is-not-callable.js
@@ -15,6 +15,7 @@ info: |
         2. Let func be GetV(O, P).
         5. If IsCallable(func) is false, throw a TypeError exception.
         ...
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/defineProperty/trap-is-undefined.js b/test/built-ins/Proxy/defineProperty/trap-is-undefined.js
index 3fe044b29e..d99bd51eb2 100644
--- a/test/built-ins/Proxy/defineProperty/trap-is-undefined.js
+++ b/test/built-ins/Proxy/defineProperty/trap-is-undefined.js
@@ -12,6 +12,7 @@ info: |
         a. Return target.[[DefineOwnProperty]](P, Desc).
     ...
 includes: [propertyHelper.js]
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/defineProperty/trap-return-is-false.js b/test/built-ins/Proxy/defineProperty/trap-return-is-false.js
index a401653c51..202f80e352 100644
--- a/test/built-ins/Proxy/defineProperty/trap-return-is-false.js
+++ b/test/built-ins/Proxy/defineProperty/trap-return-is-false.js
@@ -10,7 +10,7 @@ info: |
     ...
     12. If booleanTrapResult is false, return false.
     ...
-features: [Reflect]
+features: [Proxy, Reflect]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/deleteProperty/boolean-trap-result-boolean-false.js b/test/built-ins/Proxy/deleteProperty/boolean-trap-result-boolean-false.js
index 4419f0a19c..dcc7e5e42f 100644
--- a/test/built-ins/Proxy/deleteProperty/boolean-trap-result-boolean-false.js
+++ b/test/built-ins/Proxy/deleteProperty/boolean-trap-result-boolean-false.js
@@ -6,7 +6,7 @@ description: >
     [[Delete]] (P)
 
     The result is a Boolean value.
-features: [Reflect]
+features: [Proxy, Reflect]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/deleteProperty/boolean-trap-result-boolean-true.js b/test/built-ins/Proxy/deleteProperty/boolean-trap-result-boolean-true.js
index c5ccffbf38..6706fdcaed 100644
--- a/test/built-ins/Proxy/deleteProperty/boolean-trap-result-boolean-true.js
+++ b/test/built-ins/Proxy/deleteProperty/boolean-trap-result-boolean-true.js
@@ -6,7 +6,7 @@ description: >
     [[Delete]] (P)
 
     The result is a Boolean value.
-features: [Reflect]
+features: [Proxy, Reflect]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/deleteProperty/call-parameters.js b/test/built-ins/Proxy/deleteProperty/call-parameters.js
index bfd8e3b081..c166712515 100644
--- a/test/built-ins/Proxy/deleteProperty/call-parameters.js
+++ b/test/built-ins/Proxy/deleteProperty/call-parameters.js
@@ -10,6 +10,7 @@ info: |
     6.1.7.2 Object Internal Methods and Internal Slots
 
     (...) Receiver is used as the this value when evaluating the code
+features: [Proxy]
 ---*/
 
 var _handler, _target, _prop;
diff --git a/test/built-ins/Proxy/deleteProperty/null-handler.js b/test/built-ins/Proxy/deleteProperty/null-handler.js
index ddc6c8d8a7..64014b14a8 100644
--- a/test/built-ins/Proxy/deleteProperty/null-handler.js
+++ b/test/built-ins/Proxy/deleteProperty/null-handler.js
@@ -6,6 +6,7 @@ description: >
     [[Delete]] (P)
 
     3. If handler is null, throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 var p = Proxy.revocable({
diff --git a/test/built-ins/Proxy/deleteProperty/return-false-not-strict.js b/test/built-ins/Proxy/deleteProperty/return-false-not-strict.js
index 6c485ec64e..2d5f0512e1 100644
--- a/test/built-ins/Proxy/deleteProperty/return-false-not-strict.js
+++ b/test/built-ins/Proxy/deleteProperty/return-false-not-strict.js
@@ -7,6 +7,7 @@ description: >
 
     11. If booleanTrapResult is false, return false.
 flags: [noStrict]
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/deleteProperty/return-false-strict.js b/test/built-ins/Proxy/deleteProperty/return-false-strict.js
index befa2c60ab..31b4a88883 100644
--- a/test/built-ins/Proxy/deleteProperty/return-false-strict.js
+++ b/test/built-ins/Proxy/deleteProperty/return-false-strict.js
@@ -7,7 +7,7 @@ description: >
 
     11. If booleanTrapResult is false, return false.
 flags: [onlyStrict]
-features: [Reflect]
+features: [Proxy, Reflect]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/deleteProperty/return-is-abrupt.js b/test/built-ins/Proxy/deleteProperty/return-is-abrupt.js
index 7e9f76bf47..4689b99c32 100644
--- a/test/built-ins/Proxy/deleteProperty/return-is-abrupt.js
+++ b/test/built-ins/Proxy/deleteProperty/return-is-abrupt.js
@@ -7,6 +7,7 @@ description: >
 info: |
     9. Let booleanTrapResult be ToBoolean(Call(trap, handler, «target, P»)).
     10. ReturnIfAbrupt(booleanTrapResult).
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/deleteProperty/targetdesc-is-not-configurable.js b/test/built-ins/Proxy/deleteProperty/targetdesc-is-not-configurable.js
index 7923974dc8..db17617309 100644
--- a/test/built-ins/Proxy/deleteProperty/targetdesc-is-not-configurable.js
+++ b/test/built-ins/Proxy/deleteProperty/targetdesc-is-not-configurable.js
@@ -9,6 +9,7 @@ description: >
     own property of the target object.
 info: |
     14. If targetDesc.[[Configurable]] is false, throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/deleteProperty/targetdesc-is-undefined-return-true.js b/test/built-ins/Proxy/deleteProperty/targetdesc-is-undefined-return-true.js
index d3d2d77397..da5485faff 100644
--- a/test/built-ins/Proxy/deleteProperty/targetdesc-is-undefined-return-true.js
+++ b/test/built-ins/Proxy/deleteProperty/targetdesc-is-undefined-return-true.js
@@ -6,6 +6,7 @@ description: >
     [[Delete]] (P)
 
     14. If targetDesc is undefined, return true.
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/deleteProperty/trap-is-not-callable-realm.js b/test/built-ins/Proxy/deleteProperty/trap-is-not-callable-realm.js
index b1f1a1713c..a6fb334d93 100644
--- a/test/built-ins/Proxy/deleteProperty/trap-is-not-callable-realm.js
+++ b/test/built-ins/Proxy/deleteProperty/trap-is-not-callable-realm.js
@@ -15,7 +15,7 @@ info: |
     7.3.9 GetMethod (O, P)
 
     5. If IsCallable(func) is false, throw a TypeError exception.
-features: [cross-realm]
+features: [cross-realm, Proxy]
 ---*/
 
 var OProxy = $262.createRealm().global.Proxy;
diff --git a/test/built-ins/Proxy/deleteProperty/trap-is-not-callable.js b/test/built-ins/Proxy/deleteProperty/trap-is-not-callable.js
index 29ee6d64ca..aee5dd6abb 100644
--- a/test/built-ins/Proxy/deleteProperty/trap-is-not-callable.js
+++ b/test/built-ins/Proxy/deleteProperty/trap-is-not-callable.js
@@ -13,6 +13,7 @@ info: |
     7.3.9 GetMethod (O, P)
 
     5. If IsCallable(func) is false, throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/deleteProperty/trap-is-undefined-not-strict.js b/test/built-ins/Proxy/deleteProperty/trap-is-undefined-not-strict.js
index 0f174367f1..48d8b91675 100644
--- a/test/built-ins/Proxy/deleteProperty/trap-is-undefined-not-strict.js
+++ b/test/built-ins/Proxy/deleteProperty/trap-is-undefined-not-strict.js
@@ -7,6 +7,7 @@ description: >
 
     8. If trap is undefined, then Return target.[[Delete]](P).
 flags: [noStrict]
+features: [Proxy]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/deleteProperty/trap-is-undefined-strict.js b/test/built-ins/Proxy/deleteProperty/trap-is-undefined-strict.js
index d1c1df2bf2..c48228cbbb 100644
--- a/test/built-ins/Proxy/deleteProperty/trap-is-undefined-strict.js
+++ b/test/built-ins/Proxy/deleteProperty/trap-is-undefined-strict.js
@@ -7,7 +7,7 @@ description: >
 
     8. If trap is undefined, then Return target.[[Delete]](P).
 flags: [onlyStrict]
-features: [Reflect]
+features: [Proxy, Reflect]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/enumerate/removed-does-not-trigger.js b/test/built-ins/Proxy/enumerate/removed-does-not-trigger.js
index c4cc879db8..2696525469 100644
--- a/test/built-ins/Proxy/enumerate/removed-does-not-trigger.js
+++ b/test/built-ins/Proxy/enumerate/removed-does-not-trigger.js
@@ -5,7 +5,7 @@ esid: sec-proxy-object-internal-methods-and-internal-slots
 description: >
   Enumerate trap was removed and it should not be triggered anymore.
 includes: [compareArray.js]
-features: [Symbol.iterator]
+features: [Proxy, Symbol, Symbol.iterator]
 ---*/
 
 var x;
diff --git a/test/built-ins/Proxy/function-prototype.js b/test/built-ins/Proxy/function-prototype.js
index b37f51b56e..763117ee07 100644
--- a/test/built-ins/Proxy/function-prototype.js
+++ b/test/built-ins/Proxy/function-prototype.js
@@ -5,6 +5,7 @@ es6id: 26.2.2
 description: >
     The value of the [[Prototype]] internal slot of the Proxy
     constructor is the intrinsic object %FunctionPrototype% (19.2.3).
+features: [Proxy]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Proxy/get-fn-realm.js b/test/built-ins/Proxy/get-fn-realm.js
index 922a6ffd0d..4dc7a9b3f7 100644
--- a/test/built-ins/Proxy/get-fn-realm.js
+++ b/test/built-ins/Proxy/get-fn-realm.js
@@ -16,7 +16,7 @@ info: |
           throw a TypeError exception.
        b. Let proxyTarget be the value of obj's [[ProxyTarget]] internal slot.
        c. Return ? GetFunctionRealm(proxyTarget).
-features: [cross-realm]
+features: [cross-realm, Proxy]
 ---*/
 
 var other = $262.createRealm().global;
diff --git a/test/built-ins/Proxy/get/accessor-get-is-undefined-throws.js b/test/built-ins/Proxy/get/accessor-get-is-undefined-throws.js
index 4427d5b807..966fb3cd5f 100644
--- a/test/built-ins/Proxy/get/accessor-get-is-undefined-throws.js
+++ b/test/built-ins/Proxy/get/accessor-get-is-undefined-throws.js
@@ -13,6 +13,7 @@ info: |
         is false and targetDesc.[[Get]] is undefined, then
             i. If trapResult is not undefined, throw a TypeError exception.
 
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/get/call-parameters.js b/test/built-ins/Proxy/get/call-parameters.js
index b4f0e11d31..7f1c4736a7 100644
--- a/test/built-ins/Proxy/get/call-parameters.js
+++ b/test/built-ins/Proxy/get/call-parameters.js
@@ -10,6 +10,7 @@ info: |
     6.1.7.2 Object Internal Methods and Internal Slots
 
     (...) Receiver is used as the this value when evaluating the code
+features: [Proxy]
 ---*/
 
 var _target, _handler, _prop, _receiver;
diff --git a/test/built-ins/Proxy/get/not-same-value-configurable-false-writable-false-throws.js b/test/built-ins/Proxy/get/not-same-value-configurable-false-writable-false-throws.js
index ce6f0a1fc9..5a6435c5d8 100644
--- a/test/built-ins/Proxy/get/not-same-value-configurable-false-writable-false-throws.js
+++ b/test/built-ins/Proxy/get/not-same-value-configurable-false-writable-false-throws.js
@@ -13,6 +13,7 @@ info: |
         false and targetDesc.[[Writable]] is false, then
             i. If SameValue(trapResult, targetDesc.[[Value]]) is false, throw a
             TypeError exception.
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/get/null-handler.js b/test/built-ins/Proxy/get/null-handler.js
index 0be40457c7..4ba9149c84 100644
--- a/test/built-ins/Proxy/get/null-handler.js
+++ b/test/built-ins/Proxy/get/null-handler.js
@@ -6,6 +6,7 @@ description: >
     [[Get]] (P, Receiver)
 
     2. If handler is null, throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 var p = Proxy.revocable({}, {});
diff --git a/test/built-ins/Proxy/get/return-is-abrupt.js b/test/built-ins/Proxy/get/return-is-abrupt.js
index c632d8e5f0..49b6f519af 100644
--- a/test/built-ins/Proxy/get/return-is-abrupt.js
+++ b/test/built-ins/Proxy/get/return-is-abrupt.js
@@ -9,6 +9,7 @@ info: |
 
     9. Let trapResult be Call(trap, handler, «target, P, Receiver»).
     10. ReturnIfAbrupt(trapResult).
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/get/return-trap-result-accessor-property.js b/test/built-ins/Proxy/get/return-trap-result-accessor-property.js
index e50ae367ee..40b27fd0fd 100644
--- a/test/built-ins/Proxy/get/return-trap-result-accessor-property.js
+++ b/test/built-ins/Proxy/get/return-trap-result-accessor-property.js
@@ -6,6 +6,7 @@ description: >
     [[Get]] (P, Receiver)
 
     14. Return trapResult.
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/get/return-trap-result-configurable-false-writable-true.js b/test/built-ins/Proxy/get/return-trap-result-configurable-false-writable-true.js
index feadb297d0..439e1f6f20 100644
--- a/test/built-ins/Proxy/get/return-trap-result-configurable-false-writable-true.js
+++ b/test/built-ins/Proxy/get/return-trap-result-configurable-false-writable-true.js
@@ -6,6 +6,7 @@ description: >
     [[Get]] (P, Receiver)
 
     14. Return trapResult.
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/get/return-trap-result-configurable-true-assessor-get-undefined.js b/test/built-ins/Proxy/get/return-trap-result-configurable-true-assessor-get-undefined.js
index 5afb94229a..49efc9b1cf 100644
--- a/test/built-ins/Proxy/get/return-trap-result-configurable-true-assessor-get-undefined.js
+++ b/test/built-ins/Proxy/get/return-trap-result-configurable-true-assessor-get-undefined.js
@@ -6,6 +6,7 @@ description: >
     [[Get]] (P, Receiver)
 
     14. Return trapResult.
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/get/return-trap-result-configurable-true-writable-false.js b/test/built-ins/Proxy/get/return-trap-result-configurable-true-writable-false.js
index 31d494104a..998809a14d 100644
--- a/test/built-ins/Proxy/get/return-trap-result-configurable-true-writable-false.js
+++ b/test/built-ins/Proxy/get/return-trap-result-configurable-true-writable-false.js
@@ -6,6 +6,7 @@ description: >
     [[Get]] (P, Receiver)
 
     14. Return trapResult.
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/get/return-trap-result-same-value-configurable-false-writable-false.js b/test/built-ins/Proxy/get/return-trap-result-same-value-configurable-false-writable-false.js
index f26b486388..2d9fcd1c65 100644
--- a/test/built-ins/Proxy/get/return-trap-result-same-value-configurable-false-writable-false.js
+++ b/test/built-ins/Proxy/get/return-trap-result-same-value-configurable-false-writable-false.js
@@ -15,6 +15,7 @@ info: |
             TypeError exception.
         ...
     14. Return trapResult.
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/get/return-trap-result.js b/test/built-ins/Proxy/get/return-trap-result.js
index 7e1b945f78..625d97ee48 100644
--- a/test/built-ins/Proxy/get/return-trap-result.js
+++ b/test/built-ins/Proxy/get/return-trap-result.js
@@ -6,6 +6,7 @@ description: >
     [[Get]] (P, Receiver)
 
     14. Return trapResult.
+features: [Proxy]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/get/trap-is-not-callable-realm.js b/test/built-ins/Proxy/get/trap-is-not-callable-realm.js
index 1d3cfade35..2c17b94191 100644
--- a/test/built-ins/Proxy/get/trap-is-not-callable-realm.js
+++ b/test/built-ins/Proxy/get/trap-is-not-callable-realm.js
@@ -15,7 +15,7 @@ info: |
     7.3.9 GetMethod (O, P)
 
     5. If IsCallable(func) is false, throw a TypeError exception.
-features: [cross-realm]
+features: [cross-realm, Proxy]
 ---*/
 
 var OProxy = $262.createRealm().global.Proxy;
diff --git a/test/built-ins/Proxy/get/trap-is-not-callable.js b/test/built-ins/Proxy/get/trap-is-not-callable.js
index 50b1294018..3721691816 100644
--- a/test/built-ins/Proxy/get/trap-is-not-callable.js
+++ b/test/built-ins/Proxy/get/trap-is-not-callable.js
@@ -13,6 +13,7 @@ info: |
     7.3.9 GetMethod (O, P)
 
     5. If IsCallable(func) is false, throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/get/trap-is-undefined-no-property.js b/test/built-ins/Proxy/get/trap-is-undefined-no-property.js
index c25ea6ca2e..eecc09f9db 100644
--- a/test/built-ins/Proxy/get/trap-is-undefined-no-property.js
+++ b/test/built-ins/Proxy/get/trap-is-undefined-no-property.js
@@ -6,6 +6,7 @@ description: >
     [[Get]] (P, Receiver)
 
     8. If trap is undefined, then return target.[[Get]](P, Receiver).
+features: [Proxy]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/get/trap-is-undefined-receiver.js b/test/built-ins/Proxy/get/trap-is-undefined-receiver.js
index 3cf99140b5..f0d7d0f8a7 100644
--- a/test/built-ins/Proxy/get/trap-is-undefined-receiver.js
+++ b/test/built-ins/Proxy/get/trap-is-undefined-receiver.js
@@ -10,6 +10,7 @@ info: |
 
     7. If trap is undefined, then
         a. Return ? target.[[Get]](P, Receiver).
+features: [Proxy]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/get/trap-is-undefined.js b/test/built-ins/Proxy/get/trap-is-undefined.js
index b06d573306..8d41201cd7 100644
--- a/test/built-ins/Proxy/get/trap-is-undefined.js
+++ b/test/built-ins/Proxy/get/trap-is-undefined.js
@@ -7,6 +7,7 @@ description: >
 
     8. If trap is undefined, then return target.[[Get]](P, Receiver).
 
+features: [Proxy]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/getOwnPropertyDescriptor/call-parameters.js b/test/built-ins/Proxy/getOwnPropertyDescriptor/call-parameters.js
index dada9a171a..a0df1c3ff0 100644
--- a/test/built-ins/Proxy/getOwnPropertyDescriptor/call-parameters.js
+++ b/test/built-ins/Proxy/getOwnPropertyDescriptor/call-parameters.js
@@ -10,6 +10,7 @@ info: |
     ...
     9. Let trapResultObj be Call(trap, handler, «target, P»).
     ...
+features: [Proxy]
 ---*/
 
 var _target, _handler, _prop;
diff --git a/test/built-ins/Proxy/getOwnPropertyDescriptor/null-handler.js b/test/built-ins/Proxy/getOwnPropertyDescriptor/null-handler.js
index 61a59ce023..d25efb4466 100644
--- a/test/built-ins/Proxy/getOwnPropertyDescriptor/null-handler.js
+++ b/test/built-ins/Proxy/getOwnPropertyDescriptor/null-handler.js
@@ -4,6 +4,7 @@
 es6id: 9.5.5
 description: >
     Throws a TypeError exception if handler is null.
+features: [Proxy]
 ---*/
 
 var p = Proxy.revocable({}, {});
diff --git a/test/built-ins/Proxy/getOwnPropertyDescriptor/result-is-undefined-target-is-not-extensible.js b/test/built-ins/Proxy/getOwnPropertyDescriptor/result-is-undefined-target-is-not-extensible.js
index a19bfedbc8..d4caac0a90 100644
--- a/test/built-ins/Proxy/getOwnPropertyDescriptor/result-is-undefined-target-is-not-extensible.js
+++ b/test/built-ins/Proxy/getOwnPropertyDescriptor/result-is-undefined-target-is-not-extensible.js
@@ -13,6 +13,7 @@ info: |
         ...
         e. If ToBoolean(extensibleTarget) is false, throw a TypeError exception.
     ...
+features: [Proxy]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/getOwnPropertyDescriptor/result-is-undefined-targetdesc-is-not-configurable.js b/test/built-ins/Proxy/getOwnPropertyDescriptor/result-is-undefined-targetdesc-is-not-configurable.js
index 6d62c28bf7..e1606fe866 100644
--- a/test/built-ins/Proxy/getOwnPropertyDescriptor/result-is-undefined-targetdesc-is-not-configurable.js
+++ b/test/built-ins/Proxy/getOwnPropertyDescriptor/result-is-undefined-targetdesc-is-not-configurable.js
@@ -13,6 +13,7 @@ info: |
         ...
         b. If targetDesc.[[Configurable]] is false, throw a TypeError exception.
     ...
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/getOwnPropertyDescriptor/result-is-undefined-targetdesc-is-undefined.js b/test/built-ins/Proxy/getOwnPropertyDescriptor/result-is-undefined-targetdesc-is-undefined.js
index 651005509c..11d517cf87 100644
--- a/test/built-ins/Proxy/getOwnPropertyDescriptor/result-is-undefined-targetdesc-is-undefined.js
+++ b/test/built-ins/Proxy/getOwnPropertyDescriptor/result-is-undefined-targetdesc-is-undefined.js
@@ -12,6 +12,7 @@ info: |
     14. If trapResultObj is undefined, then
         a. If targetDesc is undefined, return undefined.
     ...
+features: [Proxy]
 ---*/
 
 var t = {};
diff --git a/test/built-ins/Proxy/getOwnPropertyDescriptor/result-is-undefined.js b/test/built-ins/Proxy/getOwnPropertyDescriptor/result-is-undefined.js
index fb881aeba1..47df43f642 100644
--- a/test/built-ins/Proxy/getOwnPropertyDescriptor/result-is-undefined.js
+++ b/test/built-ins/Proxy/getOwnPropertyDescriptor/result-is-undefined.js
@@ -13,6 +13,7 @@ info: |
         ...
         f. Return undefined.
     ...
+features: [Proxy]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/getOwnPropertyDescriptor/result-type-is-not-object-nor-undefined-realm.js b/test/built-ins/Proxy/getOwnPropertyDescriptor/result-type-is-not-object-nor-undefined-realm.js
index 4b54cba83e..7355c45ed0 100644
--- a/test/built-ins/Proxy/getOwnPropertyDescriptor/result-type-is-not-object-nor-undefined-realm.js
+++ b/test/built-ins/Proxy/getOwnPropertyDescriptor/result-type-is-not-object-nor-undefined-realm.js
@@ -10,7 +10,7 @@ info: |
   [...]
   9. If Type(trapResultObj) is neither Object nor Undefined, throw a TypeError
      exception.
-features: [cross-realm]
+features: [cross-realm, Proxy]
 ---*/
 
 var OProxy = $262.createRealm().global.Proxy;
diff --git a/test/built-ins/Proxy/getOwnPropertyDescriptor/result-type-is-not-object-nor-undefined.js b/test/built-ins/Proxy/getOwnPropertyDescriptor/result-type-is-not-object-nor-undefined.js
index 1e706893c9..e7d3c63847 100644
--- a/test/built-ins/Proxy/getOwnPropertyDescriptor/result-type-is-not-object-nor-undefined.js
+++ b/test/built-ins/Proxy/getOwnPropertyDescriptor/result-type-is-not-object-nor-undefined.js
@@ -11,7 +11,7 @@ info: |
     11. If Type(trapResultObj) is neither Object nor Undefined, throw a
     TypeError exception.
     ...
-features: [Symbol]
+features: [Proxy, Symbol]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/getOwnPropertyDescriptor/resultdesc-is-invalid-descriptor.js b/test/built-ins/Proxy/getOwnPropertyDescriptor/resultdesc-is-invalid-descriptor.js
index b256f6907a..6902d56333 100644
--- a/test/built-ins/Proxy/getOwnPropertyDescriptor/resultdesc-is-invalid-descriptor.js
+++ b/test/built-ins/Proxy/getOwnPropertyDescriptor/resultdesc-is-invalid-descriptor.js
@@ -12,6 +12,7 @@ info: |
     20. Let valid be IsCompatiblePropertyDescriptor (extensibleTarget,
     resultDesc, targetDesc).
     21. If valid is false, throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/getOwnPropertyDescriptor/resultdesc-is-not-configurable-targetdesc-is-configurable.js b/test/built-ins/Proxy/getOwnPropertyDescriptor/resultdesc-is-not-configurable-targetdesc-is-configurable.js
index bc99d971ba..b146fee841 100644
--- a/test/built-ins/Proxy/getOwnPropertyDescriptor/resultdesc-is-not-configurable-targetdesc-is-configurable.js
+++ b/test/built-ins/Proxy/getOwnPropertyDescriptor/resultdesc-is-not-configurable-targetdesc-is-configurable.js
@@ -14,6 +14,7 @@ info: |
         then
             i. Throw a TypeError exception.
     ...
+features: [Proxy]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/getOwnPropertyDescriptor/resultdesc-is-not-configurable-targetdesc-is-undefined.js b/test/built-ins/Proxy/getOwnPropertyDescriptor/resultdesc-is-not-configurable-targetdesc-is-undefined.js
index 4dba72b98d..c3cd6a6631 100644
--- a/test/built-ins/Proxy/getOwnPropertyDescriptor/resultdesc-is-not-configurable-targetdesc-is-undefined.js
+++ b/test/built-ins/Proxy/getOwnPropertyDescriptor/resultdesc-is-not-configurable-targetdesc-is-undefined.js
@@ -24,6 +24,7 @@ info: |
         a. If targetDesc is undefined or targetDesc.[[Configurable]] is true, then
             i. Throw a TypeError exception.
 
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/getOwnPropertyDescriptor/resultdesc-return-configurable.js b/test/built-ins/Proxy/getOwnPropertyDescriptor/resultdesc-return-configurable.js
index ed8dd3bcfe..2339e60be8 100644
--- a/test/built-ins/Proxy/getOwnPropertyDescriptor/resultdesc-return-configurable.js
+++ b/test/built-ins/Proxy/getOwnPropertyDescriptor/resultdesc-return-configurable.js
@@ -5,6 +5,7 @@ es6id: 9.5.5
 description: >
     Return descriptor from trap result if it has the same value as the target
     property descriptor.
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/getOwnPropertyDescriptor/resultdesc-return-not-configurable.js b/test/built-ins/Proxy/getOwnPropertyDescriptor/resultdesc-return-not-configurable.js
index 928039e340..f385314ef7 100644
--- a/test/built-ins/Proxy/getOwnPropertyDescriptor/resultdesc-return-not-configurable.js
+++ b/test/built-ins/Proxy/getOwnPropertyDescriptor/resultdesc-return-not-configurable.js
@@ -5,6 +5,7 @@ es6id: 9.5.5
 description: >
     Return descriptor from trap result if it has the same value as the target
     property descriptor and they're not configurable.
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/getOwnPropertyDescriptor/return-is-abrupt.js b/test/built-ins/Proxy/getOwnPropertyDescriptor/return-is-abrupt.js
index 805f068e64..a71f27b6e4 100644
--- a/test/built-ins/Proxy/getOwnPropertyDescriptor/return-is-abrupt.js
+++ b/test/built-ins/Proxy/getOwnPropertyDescriptor/return-is-abrupt.js
@@ -11,6 +11,7 @@ info: |
     9. Let trapResultObj be Call(trap, handler, «target, P»).
     10. ReturnIfAbrupt(trapResultObj).
     ...
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/getOwnPropertyDescriptor/trap-is-not-callable-realm.js b/test/built-ins/Proxy/getOwnPropertyDescriptor/trap-is-not-callable-realm.js
index f5740c8ed7..1b32775f7a 100644
--- a/test/built-ins/Proxy/getOwnPropertyDescriptor/trap-is-not-callable-realm.js
+++ b/test/built-ins/Proxy/getOwnPropertyDescriptor/trap-is-not-callable-realm.js
@@ -20,7 +20,7 @@ info: |
         2. Let func be GetV(O, P).
         5. If IsCallable(func) is false, throw a TypeError exception.
         ...
-features: [cross-realm]
+features: [cross-realm, Proxy]
 ---*/
 
 var OProxy = $262.createRealm().global.Proxy;
diff --git a/test/built-ins/Proxy/getOwnPropertyDescriptor/trap-is-not-callable.js b/test/built-ins/Proxy/getOwnPropertyDescriptor/trap-is-not-callable.js
index ce9fd5886e..3d0ca59f7b 100644
--- a/test/built-ins/Proxy/getOwnPropertyDescriptor/trap-is-not-callable.js
+++ b/test/built-ins/Proxy/getOwnPropertyDescriptor/trap-is-not-callable.js
@@ -18,6 +18,7 @@ info: |
         2. Let func be GetV(O, P).
         5. If IsCallable(func) is false, throw a TypeError exception.
         ...
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/getOwnPropertyDescriptor/trap-is-undefined.js b/test/built-ins/Proxy/getOwnPropertyDescriptor/trap-is-undefined.js
index 4471bc1ecb..9e8f4a37ea 100644
--- a/test/built-ins/Proxy/getOwnPropertyDescriptor/trap-is-undefined.js
+++ b/test/built-ins/Proxy/getOwnPropertyDescriptor/trap-is-undefined.js
@@ -12,6 +12,7 @@ info: |
         a. Return target.[[GetOwnProperty]](P).
     ...
 includes: [propertyHelper.js]
+features: [Proxy]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/getPrototypeOf/call-parameters.js b/test/built-ins/Proxy/getPrototypeOf/call-parameters.js
index 4c35a5ec36..c70c87b0a3 100644
--- a/test/built-ins/Proxy/getPrototypeOf/call-parameters.js
+++ b/test/built-ins/Proxy/getPrototypeOf/call-parameters.js
@@ -11,6 +11,7 @@ info: |
     8. Let handlerProto be Call(trap, handler, «target»).
     ...
 
+features: [Proxy]
 ---*/
 
 var _handler, _target;
diff --git a/test/built-ins/Proxy/getPrototypeOf/extensible-target-return-handlerproto.js b/test/built-ins/Proxy/getPrototypeOf/extensible-target-return-handlerproto.js
index a611999421..ec6845dedf 100644
--- a/test/built-ins/Proxy/getPrototypeOf/extensible-target-return-handlerproto.js
+++ b/test/built-ins/Proxy/getPrototypeOf/extensible-target-return-handlerproto.js
@@ -20,6 +20,7 @@ info: |
     13. If extensibleTarget is true, return handlerProto.
     ...
 
+features: [Proxy]
 ---*/
 
 var prot = {
diff --git a/test/built-ins/Proxy/getPrototypeOf/not-extensible-not-same-proto-throws.js b/test/built-ins/Proxy/getPrototypeOf/not-extensible-not-same-proto-throws.js
index 0569ed4edf..b7c7d0a573 100644
--- a/test/built-ins/Proxy/getPrototypeOf/not-extensible-not-same-proto-throws.js
+++ b/test/built-ins/Proxy/getPrototypeOf/not-extensible-not-same-proto-throws.js
@@ -23,6 +23,7 @@ info: |
     16. If SameValue(handlerProto, targetProto) is false, throw a TypeError
     exception.
     ...
+features: [Proxy]
 ---*/
 
 var target = Object.create({
diff --git a/test/built-ins/Proxy/getPrototypeOf/not-extensible-same-proto.js b/test/built-ins/Proxy/getPrototypeOf/not-extensible-same-proto.js
index 052b02c7be..ff74619d4a 100644
--- a/test/built-ins/Proxy/getPrototypeOf/not-extensible-same-proto.js
+++ b/test/built-ins/Proxy/getPrototypeOf/not-extensible-same-proto.js
@@ -22,6 +22,7 @@ info: |
     ...
     17. Return handlerProto.
 
+features: [Proxy]
 ---*/
 
 var target = Object.create(Array.prototype);
diff --git a/test/built-ins/Proxy/getPrototypeOf/null-handler.js b/test/built-ins/Proxy/getPrototypeOf/null-handler.js
index 3768419809..e43ef4e531 100644
--- a/test/built-ins/Proxy/getPrototypeOf/null-handler.js
+++ b/test/built-ins/Proxy/getPrototypeOf/null-handler.js
@@ -4,6 +4,7 @@
 es6id: 9.5.1
 description: >
     Throws a TypeError exception if handler is null.
+features: [Proxy]
 ---*/
 
 var p = Proxy.revocable({}, {});
diff --git a/test/built-ins/Proxy/getPrototypeOf/return-is-abrupt.js b/test/built-ins/Proxy/getPrototypeOf/return-is-abrupt.js
index f81d3ffe32..59af3a3bc5 100644
--- a/test/built-ins/Proxy/getPrototypeOf/return-is-abrupt.js
+++ b/test/built-ins/Proxy/getPrototypeOf/return-is-abrupt.js
@@ -7,6 +7,7 @@ description: >
 info: |
     8. Let handlerProto be Call(trap, handler, «target»).
     9. ReturnIfAbrupt(handlerProto).
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/getPrototypeOf/trap-is-not-callable-realm.js b/test/built-ins/Proxy/getPrototypeOf/trap-is-not-callable-realm.js
index 4a0f1a0bc1..fff2def4b1 100644
--- a/test/built-ins/Proxy/getPrototypeOf/trap-is-not-callable-realm.js
+++ b/test/built-ins/Proxy/getPrototypeOf/trap-is-not-callable-realm.js
@@ -6,7 +6,7 @@ es6id: 9.5.1
 description: >
   Throws if trap is not callable (honoring the Realm of the current execution
   context)
-features: [cross-realm]
+features: [cross-realm, Proxy]
 ---*/
 
 var OProxy = $262.createRealm().global.Proxy;
diff --git a/test/built-ins/Proxy/getPrototypeOf/trap-is-not-callable.js b/test/built-ins/Proxy/getPrototypeOf/trap-is-not-callable.js
index 3920ee73df..a7ab07480c 100644
--- a/test/built-ins/Proxy/getPrototypeOf/trap-is-not-callable.js
+++ b/test/built-ins/Proxy/getPrototypeOf/trap-is-not-callable.js
@@ -4,6 +4,7 @@
 es6id: 9.5.1
 description: >
     Throws if trap is not callable.
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/getPrototypeOf/trap-is-undefined.js b/test/built-ins/Proxy/getPrototypeOf/trap-is-undefined.js
index efa9dcd100..c286f94c35 100644
--- a/test/built-ins/Proxy/getPrototypeOf/trap-is-undefined.js
+++ b/test/built-ins/Proxy/getPrototypeOf/trap-is-undefined.js
@@ -4,6 +4,7 @@
 es6id: 9.5.1
 description: >
     Return target.[[GetPrototypeOf]]() if trap is undefined.
+features: [Proxy]
 ---*/
 
 var target = Object.create(Array.prototype);
diff --git a/test/built-ins/Proxy/getPrototypeOf/trap-result-neither-object-nor-null-throws-boolean.js b/test/built-ins/Proxy/getPrototypeOf/trap-result-neither-object-nor-null-throws-boolean.js
index 7a534ddc99..0d7ab1ad3a 100644
--- a/test/built-ins/Proxy/getPrototypeOf/trap-result-neither-object-nor-null-throws-boolean.js
+++ b/test/built-ins/Proxy/getPrototypeOf/trap-result-neither-object-nor-null-throws-boolean.js
@@ -4,6 +4,7 @@
 es6id: 9.5.1
 description: >
     Throw a TypeError exception if trap result is false.
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/getPrototypeOf/trap-result-neither-object-nor-null-throws-number.js b/test/built-ins/Proxy/getPrototypeOf/trap-result-neither-object-nor-null-throws-number.js
index 628e0868cd..8c4bb9c3df 100644
--- a/test/built-ins/Proxy/getPrototypeOf/trap-result-neither-object-nor-null-throws-number.js
+++ b/test/built-ins/Proxy/getPrototypeOf/trap-result-neither-object-nor-null-throws-number.js
@@ -4,6 +4,7 @@
 es6id: 9.5.1
 description: >
     Throw a TypeError exception if trap result is a Number.
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/getPrototypeOf/trap-result-neither-object-nor-null-throws-string.js b/test/built-ins/Proxy/getPrototypeOf/trap-result-neither-object-nor-null-throws-string.js
index 29033521ee..3c30d2c09a 100644
--- a/test/built-ins/Proxy/getPrototypeOf/trap-result-neither-object-nor-null-throws-string.js
+++ b/test/built-ins/Proxy/getPrototypeOf/trap-result-neither-object-nor-null-throws-string.js
@@ -4,6 +4,7 @@
 es6id: 9.5.1
 description: >
     throw a TypeError exception if trap result is a String.
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/getPrototypeOf/trap-result-neither-object-nor-null-throws-symbol.js b/test/built-ins/Proxy/getPrototypeOf/trap-result-neither-object-nor-null-throws-symbol.js
index 0c88056ee7..205c6dcab8 100644
--- a/test/built-ins/Proxy/getPrototypeOf/trap-result-neither-object-nor-null-throws-symbol.js
+++ b/test/built-ins/Proxy/getPrototypeOf/trap-result-neither-object-nor-null-throws-symbol.js
@@ -4,7 +4,7 @@
 es6id: 9.5.1
 description: >
     Throw a TypeError exception if trap result is a Symbol.
-features: [Symbol]
+features: [Proxy, Symbol]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/getPrototypeOf/trap-result-neither-object-nor-null-throws-undefined.js b/test/built-ins/Proxy/getPrototypeOf/trap-result-neither-object-nor-null-throws-undefined.js
index ea4aeff853..102a0dcfa4 100644
--- a/test/built-ins/Proxy/getPrototypeOf/trap-result-neither-object-nor-null-throws-undefined.js
+++ b/test/built-ins/Proxy/getPrototypeOf/trap-result-neither-object-nor-null-throws-undefined.js
@@ -4,6 +4,7 @@
 es6id: 9.5.1
 description: >
     Throw a TypeError exception if trap result is undefined.
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/has/call-in.js b/test/built-ins/Proxy/has/call-in.js
index f51d824dbf..123eb55ba9 100644
--- a/test/built-ins/Proxy/has/call-in.js
+++ b/test/built-ins/Proxy/has/call-in.js
@@ -10,6 +10,7 @@ info: |
     ...
     9. Let booleanTrapResult be ToBoolean(Call(trap, handler, «target, P»)).
     ...
+features: [Proxy]
 ---*/
 
 var _handler, _target, _prop;
diff --git a/test/built-ins/Proxy/has/call-object-create.js b/test/built-ins/Proxy/has/call-object-create.js
index 4bcbe2ca5e..3954219296 100644
--- a/test/built-ins/Proxy/has/call-object-create.js
+++ b/test/built-ins/Proxy/has/call-object-create.js
@@ -15,6 +15,7 @@ info: |
     ...
     9. Let booleanTrapResult be ToBoolean(Call(trap, handler, «target, P»)).
     ...
+features: [Proxy]
 ---*/
 
 var _handler, _target, _prop;
diff --git a/test/built-ins/Proxy/has/call-with.js b/test/built-ins/Proxy/has/call-with.js
index 1efe91f2cb..306cc2fc66 100644
--- a/test/built-ins/Proxy/has/call-with.js
+++ b/test/built-ins/Proxy/has/call-with.js
@@ -11,6 +11,7 @@ info: |
     9. Let booleanTrapResult be ToBoolean(Call(trap, handler, «target, P»)).
     ...
 flags: [noStrict]
+features: [Proxy]
 ---*/
 
 var _handler, _target, _prop;
diff --git a/test/built-ins/Proxy/has/null-handler-using-with.js b/test/built-ins/Proxy/has/null-handler-using-with.js
index 68320160ba..d586f56f92 100644
--- a/test/built-ins/Proxy/has/null-handler-using-with.js
+++ b/test/built-ins/Proxy/has/null-handler-using-with.js
@@ -5,6 +5,7 @@ es6id: 9.5.7
 description: >
     Throws a TypeError exception if handler is null.
 flags: [noStrict]
+features: [Proxy]
 ---*/
 
 var p = Proxy.revocable({}, {});
diff --git a/test/built-ins/Proxy/has/null-handler.js b/test/built-ins/Proxy/has/null-handler.js
index 8cc5d8ea32..8a8bfcc7a5 100644
--- a/test/built-ins/Proxy/has/null-handler.js
+++ b/test/built-ins/Proxy/has/null-handler.js
@@ -4,6 +4,7 @@
 es6id: 9.5.7
 description: >
     Throws a TypeError exception if handler is null.
+features: [Proxy]
 ---*/
 
 var p = Proxy.revocable({}, {});
diff --git a/test/built-ins/Proxy/has/return-false-target-not-extensible-using-with.js b/test/built-ins/Proxy/has/return-false-target-not-extensible-using-with.js
index fb3e6f463e..5424c8509b 100644
--- a/test/built-ins/Proxy/has/return-false-target-not-extensible-using-with.js
+++ b/test/built-ins/Proxy/has/return-false-target-not-extensible-using-with.js
@@ -19,6 +19,7 @@ info: |
             iv. If extensibleTarget is false, throw a TypeError exception.
     ...
 flags: [noStrict]
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/has/return-false-target-not-extensible.js b/test/built-ins/Proxy/has/return-false-target-not-extensible.js
index dc5e3a3b90..4f27abcf74 100644
--- a/test/built-ins/Proxy/has/return-false-target-not-extensible.js
+++ b/test/built-ins/Proxy/has/return-false-target-not-extensible.js
@@ -18,6 +18,7 @@ info: |
             ...
             iv. If extensibleTarget is false, throw a TypeError exception.
     ...
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/has/return-false-target-prop-exists-using-with.js b/test/built-ins/Proxy/has/return-false-target-prop-exists-using-with.js
index cb7ebd738e..2235e4e48c 100644
--- a/test/built-ins/Proxy/has/return-false-target-prop-exists-using-with.js
+++ b/test/built-ins/Proxy/has/return-false-target-prop-exists-using-with.js
@@ -11,6 +11,7 @@ info: |
     ...
     12. Return booleanTrapResult.
 flags: [noStrict]
+features: [Proxy]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/has/return-false-target-prop-exists.js b/test/built-ins/Proxy/has/return-false-target-prop-exists.js
index 52bc88f4ff..9eb6233566 100644
--- a/test/built-ins/Proxy/has/return-false-target-prop-exists.js
+++ b/test/built-ins/Proxy/has/return-false-target-prop-exists.js
@@ -10,6 +10,7 @@ info: |
 
     ...
     12. Return booleanTrapResult.
+features: [Proxy]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/has/return-false-targetdesc-not-configurable-using-with.js b/test/built-ins/Proxy/has/return-false-targetdesc-not-configurable-using-with.js
index a6a5517092..fdd7636f53 100644
--- a/test/built-ins/Proxy/has/return-false-targetdesc-not-configurable-using-with.js
+++ b/test/built-ins/Proxy/has/return-false-targetdesc-not-configurable-using-with.js
@@ -16,6 +16,7 @@ info: |
             exception.
     ...
 flags: [noStrict]
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/has/return-false-targetdesc-not-configurable.js b/test/built-ins/Proxy/has/return-false-targetdesc-not-configurable.js
index 71f882c229..e733be526c 100644
--- a/test/built-ins/Proxy/has/return-false-targetdesc-not-configurable.js
+++ b/test/built-ins/Proxy/has/return-false-targetdesc-not-configurable.js
@@ -15,6 +15,7 @@ info: |
             i. If targetDesc.[[Configurable]] is false, throw a TypeError
             exception.
     ...
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/has/return-is-abrupt-in.js b/test/built-ins/Proxy/has/return-is-abrupt-in.js
index 9e42c2d058..daf1846d8b 100644
--- a/test/built-ins/Proxy/has/return-is-abrupt-in.js
+++ b/test/built-ins/Proxy/has/return-is-abrupt-in.js
@@ -11,6 +11,7 @@ info: |
     9. Let booleanTrapResult be ToBoolean(Call(trap, handler, «target, P»)).
     10. ReturnIfAbrupt(booleanTrapResult).
     ...
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/has/return-is-abrupt-with.js b/test/built-ins/Proxy/has/return-is-abrupt-with.js
index e4ff88601b..03c9883b36 100644
--- a/test/built-ins/Proxy/has/return-is-abrupt-with.js
+++ b/test/built-ins/Proxy/has/return-is-abrupt-with.js
@@ -12,6 +12,7 @@ info: |
     10. ReturnIfAbrupt(booleanTrapResult).
     ...
 flags: [noStrict]
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/has/return-true-target-prop-exists-using-with.js b/test/built-ins/Proxy/has/return-true-target-prop-exists-using-with.js
index 1e58f30f78..f2f7413eb0 100644
--- a/test/built-ins/Proxy/has/return-true-target-prop-exists-using-with.js
+++ b/test/built-ins/Proxy/has/return-true-target-prop-exists-using-with.js
@@ -6,6 +6,7 @@ description: >
     The result of [[HasProperty]] is a Boolean value and will affect has
     checkings. True returned when target property exists;
 flags: [noStrict]
+features: [Proxy]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/has/return-true-target-prop-exists.js b/test/built-ins/Proxy/has/return-true-target-prop-exists.js
index 187ef00304..42b7d0ec88 100644
--- a/test/built-ins/Proxy/has/return-true-target-prop-exists.js
+++ b/test/built-ins/Proxy/has/return-true-target-prop-exists.js
@@ -5,6 +5,7 @@ es6id: 9.5.7
 description: >
     The result of [[HasProperty]] is a Boolean value and will affect has
     checkings. True returned when target property exists;
+features: [Proxy]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/has/return-true-without-same-target-prop.js b/test/built-ins/Proxy/has/return-true-without-same-target-prop.js
index 5ee560de89..9d32b235f0 100644
--- a/test/built-ins/Proxy/has/return-true-without-same-target-prop.js
+++ b/test/built-ins/Proxy/has/return-true-without-same-target-prop.js
@@ -5,6 +5,7 @@ es6id: 9.5.7
 description: >
     The result of [[HasProperty]] is a Boolean value and will affect has
     checkings. True returned when target property doesn't exists;
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/has/trap-is-not-callable-realm.js b/test/built-ins/Proxy/has/trap-is-not-callable-realm.js
index d36bfe4bb5..c628a54a61 100644
--- a/test/built-ins/Proxy/has/trap-is-not-callable-realm.js
+++ b/test/built-ins/Proxy/has/trap-is-not-callable-realm.js
@@ -17,7 +17,7 @@ info: |
         2. Let func be GetV(O, P).
         5. If IsCallable(func) is false, throw a TypeError exception.
         ...
-features: [cross-realm]
+features: [cross-realm, Proxy]
 ---*/
 
 var OProxy = $262.createRealm().global.Proxy;
diff --git a/test/built-ins/Proxy/has/trap-is-not-callable-using-with.js b/test/built-ins/Proxy/has/trap-is-not-callable-using-with.js
index 951ebcf43a..e099024097 100644
--- a/test/built-ins/Proxy/has/trap-is-not-callable-using-with.js
+++ b/test/built-ins/Proxy/has/trap-is-not-callable-using-with.js
@@ -16,6 +16,7 @@ info: |
         5. If IsCallable(func) is false, throw a TypeError exception.
         ...
 flags: [noStrict]
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/has/trap-is-not-callable.js b/test/built-ins/Proxy/has/trap-is-not-callable.js
index 63f4943574..7127dcb110 100644
--- a/test/built-ins/Proxy/has/trap-is-not-callable.js
+++ b/test/built-ins/Proxy/has/trap-is-not-callable.js
@@ -15,6 +15,7 @@ info: |
         2. Let func be GetV(O, P).
         5. If IsCallable(func) is false, throw a TypeError exception.
         ...
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/has/trap-is-undefined-using-with.js b/test/built-ins/Proxy/has/trap-is-undefined-using-with.js
index 4c3ec37c27..4c778fcd02 100644
--- a/test/built-ins/Proxy/has/trap-is-undefined-using-with.js
+++ b/test/built-ins/Proxy/has/trap-is-undefined-using-with.js
@@ -12,6 +12,7 @@ info: |
         a. Return target.[[HasProperty]](P).
     ...
 flags: [noStrict]
+features: [Proxy]
 ---*/
 
 var target = Object.create(Array.prototype);
diff --git a/test/built-ins/Proxy/has/trap-is-undefined.js b/test/built-ins/Proxy/has/trap-is-undefined.js
index dfffc0a959..d78229a2fc 100644
--- a/test/built-ins/Proxy/has/trap-is-undefined.js
+++ b/test/built-ins/Proxy/has/trap-is-undefined.js
@@ -11,6 +11,7 @@ info: |
     8. If trap is undefined, then
         a. Return target.[[HasProperty]](P).
     ...
+features: [Proxy]
 ---*/
 
 var target = Object.create(Array.prototype);
diff --git a/test/built-ins/Proxy/isExtensible/call-parameters.js b/test/built-ins/Proxy/isExtensible/call-parameters.js
index 3327adc8c4..d76443ea49 100644
--- a/test/built-ins/Proxy/isExtensible/call-parameters.js
+++ b/test/built-ins/Proxy/isExtensible/call-parameters.js
@@ -12,6 +12,7 @@ info: |
     8. Let booleanTrapResult be ToBoolean(Call(trap, handler, «target»)).
     ...
 
+features: [Proxy]
 ---*/
 
 var _target, _handler;
diff --git a/test/built-ins/Proxy/isExtensible/null-handler.js b/test/built-ins/Proxy/isExtensible/null-handler.js
index 0ff2c1b37f..be770d6e20 100644
--- a/test/built-ins/Proxy/isExtensible/null-handler.js
+++ b/test/built-ins/Proxy/isExtensible/null-handler.js
@@ -4,6 +4,7 @@
 es6id: 9.5.3
 description: >
     Throws a TypeError exception if handler is null
+features: [Proxy]
 ---*/
 
 var p = Proxy.revocable({}, {});
diff --git a/test/built-ins/Proxy/isExtensible/return-is-abrupt.js b/test/built-ins/Proxy/isExtensible/return-is-abrupt.js
index ae7591d536..295c601239 100644
--- a/test/built-ins/Proxy/isExtensible/return-is-abrupt.js
+++ b/test/built-ins/Proxy/isExtensible/return-is-abrupt.js
@@ -11,6 +11,7 @@ info: |
     8. Let booleanTrapResult be ToBoolean(Call(trap, handler, «target»)).
     9. ReturnIfAbrupt(booleanTrapResult).
     ...
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/isExtensible/return-is-boolean.js b/test/built-ins/Proxy/isExtensible/return-is-boolean.js
index 5c8bf4e3f0..b5c3e67fb4 100644
--- a/test/built-ins/Proxy/isExtensible/return-is-boolean.js
+++ b/test/built-ins/Proxy/isExtensible/return-is-boolean.js
@@ -4,6 +4,7 @@
 es6id: 9.5.3
 description: >
     The trap returns a boolean result.
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/isExtensible/return-is-different-from-target.js b/test/built-ins/Proxy/isExtensible/return-is-different-from-target.js
index 50a76377d8..7ff5e33b02 100644
--- a/test/built-ins/Proxy/isExtensible/return-is-different-from-target.js
+++ b/test/built-ins/Proxy/isExtensible/return-is-different-from-target.js
@@ -12,6 +12,7 @@ info: |
     12. If SameValue(booleanTrapResult, targetResult) is false, throw a
     TypeError exception.
     ...
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/isExtensible/return-same-result-from-target.js b/test/built-ins/Proxy/isExtensible/return-same-result-from-target.js
index 0c8406f46a..204a6de18f 100644
--- a/test/built-ins/Proxy/isExtensible/return-same-result-from-target.js
+++ b/test/built-ins/Proxy/isExtensible/return-same-result-from-target.js
@@ -4,6 +4,7 @@
 es6id: 9.5.3
 description: >
     Return trap result.
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/isExtensible/trap-is-not-callable-realm.js b/test/built-ins/Proxy/isExtensible/trap-is-not-callable-realm.js
index 9c4e957956..546ed847f6 100644
--- a/test/built-ins/Proxy/isExtensible/trap-is-not-callable-realm.js
+++ b/test/built-ins/Proxy/isExtensible/trap-is-not-callable-realm.js
@@ -19,7 +19,7 @@ info: |
         2. Let func be GetV(O, P).
         5. If IsCallable(func) is false, throw a TypeError exception.
         ...
-features: [cross-realm]
+features: [cross-realm, Proxy]
 ---*/
 
 var OProxy = $262.createRealm().global.Proxy;
diff --git a/test/built-ins/Proxy/isExtensible/trap-is-not-callable.js b/test/built-ins/Proxy/isExtensible/trap-is-not-callable.js
index 7db8f4cf6e..367fc9d98a 100644
--- a/test/built-ins/Proxy/isExtensible/trap-is-not-callable.js
+++ b/test/built-ins/Proxy/isExtensible/trap-is-not-callable.js
@@ -17,6 +17,7 @@ info: |
         2. Let func be GetV(O, P).
         5. If IsCallable(func) is false, throw a TypeError exception.
         ...
+features: [Proxy]
 ---*/
 
 
diff --git a/test/built-ins/Proxy/isExtensible/trap-is-undefined.js b/test/built-ins/Proxy/isExtensible/trap-is-undefined.js
index 3eb3883ee8..b21e9f364d 100644
--- a/test/built-ins/Proxy/isExtensible/trap-is-undefined.js
+++ b/test/built-ins/Proxy/isExtensible/trap-is-undefined.js
@@ -11,6 +11,7 @@ info: |
     7. If trap is undefined, then
         a. Return target.[[IsExtensible]]().
     ...
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/length.js b/test/built-ins/Proxy/length.js
index 6f3d214494..3f4ca5a95b 100644
--- a/test/built-ins/Proxy/length.js
+++ b/test/built-ins/Proxy/length.js
@@ -8,6 +8,7 @@ description: >
     Besides the length property (whose value is 2)
 
 includes: [propertyHelper.js]
+features: [Proxy]
 ---*/
 
 assert.sameValue(Proxy.length, 2, "The value of `Proxy.length` is `2`");
diff --git a/test/built-ins/Proxy/name.js b/test/built-ins/Proxy/name.js
index e081f7e1e3..14aaeb5851 100644
--- a/test/built-ins/Proxy/name.js
+++ b/test/built-ins/Proxy/name.js
@@ -8,6 +8,7 @@ description: >
     17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Proxy]
 ---*/
 
 assert.sameValue(Proxy.name, "Proxy", "The value of `Proxy.name` is `'Proxy'`");
diff --git a/test/built-ins/Proxy/ownKeys/call-parameters-object-getownpropertynames.js b/test/built-ins/Proxy/ownKeys/call-parameters-object-getownpropertynames.js
index 112a31da8c..1a29a7cf26 100644
--- a/test/built-ins/Proxy/ownKeys/call-parameters-object-getownpropertynames.js
+++ b/test/built-ins/Proxy/ownKeys/call-parameters-object-getownpropertynames.js
@@ -6,6 +6,7 @@ description: >
     [[OwnPropertyKeys]] ( )
 
     7. Let trapResultArray be ? Call(trap, handler, « target »).
+features: [Proxy]
 ---*/
 
 var _target, _handler;
diff --git a/test/built-ins/Proxy/ownKeys/call-parameters-object-getownpropertysymbols.js b/test/built-ins/Proxy/ownKeys/call-parameters-object-getownpropertysymbols.js
index f788aa2916..45a14b7b58 100644
--- a/test/built-ins/Proxy/ownKeys/call-parameters-object-getownpropertysymbols.js
+++ b/test/built-ins/Proxy/ownKeys/call-parameters-object-getownpropertysymbols.js
@@ -7,7 +7,7 @@ description: >
 
     7. Let trapResultArray be ? Call(trap, handler, « target »).
 
-features: [Symbol]
+features: [Proxy, Symbol]
 ---*/
 
 var _target, _handler;
diff --git a/test/built-ins/Proxy/ownKeys/call-parameters-object-keys.js b/test/built-ins/Proxy/ownKeys/call-parameters-object-keys.js
index 6723d9104b..d928b3c594 100644
--- a/test/built-ins/Proxy/ownKeys/call-parameters-object-keys.js
+++ b/test/built-ins/Proxy/ownKeys/call-parameters-object-keys.js
@@ -6,6 +6,7 @@ description: >
     [[OwnPropertyKeys]] ( )
 
     8. Let trapResultArray be Call(trap, handler, «target»).
+features: [Proxy]
 ---*/
 
 var _target, _handler;
diff --git a/test/built-ins/Proxy/ownKeys/extensible-return-trap-result-absent-not-configurable-keys.js b/test/built-ins/Proxy/ownKeys/extensible-return-trap-result-absent-not-configurable-keys.js
index 6c3cc745e5..e7e8f0f36d 100644
--- a/test/built-ins/Proxy/ownKeys/extensible-return-trap-result-absent-not-configurable-keys.js
+++ b/test/built-ins/Proxy/ownKeys/extensible-return-trap-result-absent-not-configurable-keys.js
@@ -11,6 +11,7 @@ info: |
     ...
     15. If extensibleTarget is true and targetNonconfigurableKeys is empty, then
         a. Return trapResult.
+features: [Proxy]
 ---*/
 
 var p = new Proxy({
diff --git a/test/built-ins/Proxy/ownKeys/extensible-return-trap-result.js b/test/built-ins/Proxy/ownKeys/extensible-return-trap-result.js
index 63b06910a2..8610f518f8 100644
--- a/test/built-ins/Proxy/ownKeys/extensible-return-trap-result.js
+++ b/test/built-ins/Proxy/ownKeys/extensible-return-trap-result.js
@@ -10,6 +10,7 @@ info: |
 
     ...
     18. If extensibleTarget is true, return trapResult.
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/ownKeys/not-extensible-missing-keys-throws.js b/test/built-ins/Proxy/ownKeys/not-extensible-missing-keys-throws.js
index cb256bacac..0f72f15617 100644
--- a/test/built-ins/Proxy/ownKeys/not-extensible-missing-keys-throws.js
+++ b/test/built-ins/Proxy/ownKeys/not-extensible-missing-keys-throws.js
@@ -12,6 +12,7 @@ info: |
     19. For each key that is an element of targetConfigurableKeys, do
         a. If key is not an element of uncheckedResultKeys, throw a TypeError
         exception.
+features: [Proxy]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/ownKeys/not-extensible-new-keys-throws.js b/test/built-ins/Proxy/ownKeys/not-extensible-new-keys-throws.js
index fb6eddf5f3..eb7d7ac5c9 100644
--- a/test/built-ins/Proxy/ownKeys/not-extensible-new-keys-throws.js
+++ b/test/built-ins/Proxy/ownKeys/not-extensible-new-keys-throws.js
@@ -10,6 +10,7 @@ info: |
 
     ...
     20. If uncheckedResultKeys is not empty, throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/ownKeys/not-extensible-return-keys.js b/test/built-ins/Proxy/ownKeys/not-extensible-return-keys.js
index a491ffb6d0..523d14dee1 100644
--- a/test/built-ins/Proxy/ownKeys/not-extensible-return-keys.js
+++ b/test/built-ins/Proxy/ownKeys/not-extensible-return-keys.js
@@ -10,6 +10,7 @@ info: |
 
     ...
     21. Return trapResult.
+features: [Proxy]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/ownKeys/null-handler.js b/test/built-ins/Proxy/ownKeys/null-handler.js
index 653e1fc868..1839e98bef 100644
--- a/test/built-ins/Proxy/ownKeys/null-handler.js
+++ b/test/built-ins/Proxy/ownKeys/null-handler.js
@@ -6,6 +6,7 @@ description: >
     [[OwnPropertyKeys]] ( )
 
     2. If handler is null, throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 var p = Proxy.revocable({}, {});
diff --git a/test/built-ins/Proxy/ownKeys/return-all-non-configurable-keys.js b/test/built-ins/Proxy/ownKeys/return-all-non-configurable-keys.js
index 9cd1c90b4f..dd2d6d4bfa 100644
--- a/test/built-ins/Proxy/ownKeys/return-all-non-configurable-keys.js
+++ b/test/built-ins/Proxy/ownKeys/return-all-non-configurable-keys.js
@@ -13,6 +13,7 @@ info: |
         a. If key is not an element of uncheckedResultKeys, throw a TypeError
         exception.
 
+features: [Proxy]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/ownKeys/return-duplicate-entries-throws.js b/test/built-ins/Proxy/ownKeys/return-duplicate-entries-throws.js
index 0585a0a405..fd1370195a 100644
--- a/test/built-ins/Proxy/ownKeys/return-duplicate-entries-throws.js
+++ b/test/built-ins/Proxy/ownKeys/return-duplicate-entries-throws.js
@@ -9,6 +9,7 @@ info: |
 
     ...
     9. If trapResult contains any duplicate entries, throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
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 d264c94520..811a7d6f60 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,7 +9,7 @@ info: |
 
     ...
     9. If trapResult contains any duplicate entries, throw a TypeError exception.
-features: [Symbol]
+features: [Proxy, Symbol]
 ---*/
 
 var s = Symbol();
diff --git a/test/built-ins/Proxy/ownKeys/return-is-abrupt.js b/test/built-ins/Proxy/ownKeys/return-is-abrupt.js
index 405fbbfbaa..f443c3e311 100644
--- a/test/built-ins/Proxy/ownKeys/return-is-abrupt.js
+++ b/test/built-ins/Proxy/ownKeys/return-is-abrupt.js
@@ -11,6 +11,7 @@ info: |
     7. Let trapResultArray be ? Call(trap, handler, « target »).
     8. Let trapResult be ? CreateListFromArrayLike(trapResultArray, « String, Symbol »).
 
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/ownKeys/return-not-list-object-throws-realm.js b/test/built-ins/Proxy/ownKeys/return-not-list-object-throws-realm.js
index 45e22b3a0a..631d63698f 100644
--- a/test/built-ins/Proxy/ownKeys/return-not-list-object-throws-realm.js
+++ b/test/built-ins/Proxy/ownKeys/return-not-list-object-throws-realm.js
@@ -17,7 +17,7 @@ info: |
 
     2. If Type(obj) is not Object, throw a TypeError exception.
 
-features: [cross-realm, Symbol]
+features: [cross-realm, Proxy, Symbol]
 ---*/
 
 var other = $262.createRealm().global;
diff --git a/test/built-ins/Proxy/ownKeys/return-not-list-object-throws.js b/test/built-ins/Proxy/ownKeys/return-not-list-object-throws.js
index c3bd072425..34b2453949 100644
--- a/test/built-ins/Proxy/ownKeys/return-not-list-object-throws.js
+++ b/test/built-ins/Proxy/ownKeys/return-not-list-object-throws.js
@@ -17,7 +17,7 @@ info: |
 
     2. If Type(obj) is not Object, throw a TypeError exception.
 
-features: [Symbol]
+features: [Proxy, Symbol]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/ownKeys/return-type-throws-array.js b/test/built-ins/Proxy/ownKeys/return-type-throws-array.js
index 1e74a418cc..4a8638eb1b 100644
--- a/test/built-ins/Proxy/ownKeys/return-type-throws-array.js
+++ b/test/built-ins/Proxy/ownKeys/return-type-throws-array.js
@@ -21,6 +21,7 @@ info: |
       ...
       d. If Type(next) is not an element of elementTypes,
           throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/ownKeys/return-type-throws-boolean.js b/test/built-ins/Proxy/ownKeys/return-type-throws-boolean.js
index bdc89b941e..0eac051257 100644
--- a/test/built-ins/Proxy/ownKeys/return-type-throws-boolean.js
+++ b/test/built-ins/Proxy/ownKeys/return-type-throws-boolean.js
@@ -21,6 +21,7 @@ info: |
       ...
       d. If Type(next) is not an element of elementTypes,
           throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/ownKeys/return-type-throws-null.js b/test/built-ins/Proxy/ownKeys/return-type-throws-null.js
index 34abf804cb..c4fd819c95 100644
--- a/test/built-ins/Proxy/ownKeys/return-type-throws-null.js
+++ b/test/built-ins/Proxy/ownKeys/return-type-throws-null.js
@@ -21,6 +21,7 @@ info: |
       ...
       d. If Type(next) is not an element of elementTypes,
           throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/ownKeys/return-type-throws-number.js b/test/built-ins/Proxy/ownKeys/return-type-throws-number.js
index ffc6440f81..af375e9798 100644
--- a/test/built-ins/Proxy/ownKeys/return-type-throws-number.js
+++ b/test/built-ins/Proxy/ownKeys/return-type-throws-number.js
@@ -21,6 +21,7 @@ info: |
       ...
       d. If Type(next) is not an element of elementTypes,
           throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/ownKeys/return-type-throws-object.js b/test/built-ins/Proxy/ownKeys/return-type-throws-object.js
index 221d777df3..b7604142a1 100644
--- a/test/built-ins/Proxy/ownKeys/return-type-throws-object.js
+++ b/test/built-ins/Proxy/ownKeys/return-type-throws-object.js
@@ -21,6 +21,7 @@ info: |
       ...
       d. If Type(next) is not an element of elementTypes,
           throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/ownKeys/return-type-throws-undefined.js b/test/built-ins/Proxy/ownKeys/return-type-throws-undefined.js
index aa3924d529..7fc8790496 100644
--- a/test/built-ins/Proxy/ownKeys/return-type-throws-undefined.js
+++ b/test/built-ins/Proxy/ownKeys/return-type-throws-undefined.js
@@ -21,6 +21,7 @@ info: |
       ...
       d. If Type(next) is not an element of elementTypes,
           throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/ownKeys/trap-is-not-callable-realm.js b/test/built-ins/Proxy/ownKeys/trap-is-not-callable-realm.js
index 0eb431e7dd..25cc1b8adc 100644
--- a/test/built-ins/Proxy/ownKeys/trap-is-not-callable-realm.js
+++ b/test/built-ins/Proxy/ownKeys/trap-is-not-callable-realm.js
@@ -15,7 +15,7 @@ info: |
     7.3.9 GetMethod (O, P)
 
     4. If IsCallable(func) is false, throw a TypeError exception.
-features: [cross-realm]
+features: [cross-realm, Proxy]
 ---*/
 
 var OProxy = $262.createRealm().global.Proxy;
diff --git a/test/built-ins/Proxy/ownKeys/trap-is-not-callable.js b/test/built-ins/Proxy/ownKeys/trap-is-not-callable.js
index 20ed2a8fdd..18fa367f85 100644
--- a/test/built-ins/Proxy/ownKeys/trap-is-not-callable.js
+++ b/test/built-ins/Proxy/ownKeys/trap-is-not-callable.js
@@ -14,6 +14,7 @@ info: |
     7.3.9 GetMethod (O, P)
 
     4. If IsCallable(func) is false, throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 var p = new Proxy({
diff --git a/test/built-ins/Proxy/ownKeys/trap-is-undefined.js b/test/built-ins/Proxy/ownKeys/trap-is-undefined.js
index 3b42a49e11..4ef60c2eac 100644
--- a/test/built-ins/Proxy/ownKeys/trap-is-undefined.js
+++ b/test/built-ins/Proxy/ownKeys/trap-is-undefined.js
@@ -6,6 +6,7 @@ description: >
     [[OwnPropertyKeys]] ( )
 
     6. If trap is undefined, then Return target.[[OwnPropertyKeys]]()
+features: [Proxy]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/preventExtensions/call-parameters.js b/test/built-ins/Proxy/preventExtensions/call-parameters.js
index 7774224b8c..a2e0b44f2d 100644
--- a/test/built-ins/Proxy/preventExtensions/call-parameters.js
+++ b/test/built-ins/Proxy/preventExtensions/call-parameters.js
@@ -11,6 +11,7 @@ info: |
     ...
     8. Let booleanTrapResult be ToBoolean(Call(trap, handler, «target»)).
     ...
+features: [Proxy]
 ---*/
 
 var _target, _handler;
diff --git a/test/built-ins/Proxy/preventExtensions/null-handler.js b/test/built-ins/Proxy/preventExtensions/null-handler.js
index e8067f063e..cd8ad9a2ae 100644
--- a/test/built-ins/Proxy/preventExtensions/null-handler.js
+++ b/test/built-ins/Proxy/preventExtensions/null-handler.js
@@ -4,6 +4,7 @@
 es6id: 9.5.4
 description: >
     Throws a TypeError exception if handler is null.
+features: [Proxy]
 ---*/
 
 var p = Proxy.revocable({}, {});
diff --git a/test/built-ins/Proxy/preventExtensions/return-false.js b/test/built-ins/Proxy/preventExtensions/return-false.js
index dbe0c59947..71bca52f9b 100644
--- a/test/built-ins/Proxy/preventExtensions/return-false.js
+++ b/test/built-ins/Proxy/preventExtensions/return-false.js
@@ -4,7 +4,7 @@
 es6id: 9.5.4
 description: >
     If boolean trap result if false, return false.
-features: [Reflect]
+features: [Proxy, Reflect]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/preventExtensions/return-is-abrupt.js b/test/built-ins/Proxy/preventExtensions/return-is-abrupt.js
index cb3384df6c..05f7af77b9 100644
--- a/test/built-ins/Proxy/preventExtensions/return-is-abrupt.js
+++ b/test/built-ins/Proxy/preventExtensions/return-is-abrupt.js
@@ -11,6 +11,7 @@ info: |
     8. Let booleanTrapResult be ToBoolean(Call(trap, handler, «target»)).
     9. ReturnIfAbrupt(booleanTrapResult).
     ...
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/preventExtensions/return-true-target-is-extensible.js b/test/built-ins/Proxy/preventExtensions/return-true-target-is-extensible.js
index 9f922da8ea..c445bc2b73 100644
--- a/test/built-ins/Proxy/preventExtensions/return-true-target-is-extensible.js
+++ b/test/built-ins/Proxy/preventExtensions/return-true-target-is-extensible.js
@@ -14,6 +14,7 @@ info: |
         c. If targetIsExtensible is true, throw a TypeError exception.
     11. Return booleanTrapResult.
     ...
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/preventExtensions/return-true-target-is-not-extensible.js b/test/built-ins/Proxy/preventExtensions/return-true-target-is-not-extensible.js
index db2287b492..ab93489d84 100644
--- a/test/built-ins/Proxy/preventExtensions/return-true-target-is-not-extensible.js
+++ b/test/built-ins/Proxy/preventExtensions/return-true-target-is-not-extensible.js
@@ -4,7 +4,7 @@
 es6id: 9.5.4
 description: >
     Return boolean trap result if its true and target is not extensible.
-features: [Reflect]
+features: [Proxy, Reflect]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/preventExtensions/trap-is-not-callable-realm.js b/test/built-ins/Proxy/preventExtensions/trap-is-not-callable-realm.js
index f4806c4700..4adc5f0e29 100644
--- a/test/built-ins/Proxy/preventExtensions/trap-is-not-callable-realm.js
+++ b/test/built-ins/Proxy/preventExtensions/trap-is-not-callable-realm.js
@@ -19,7 +19,7 @@ info: |
         2. Let func be GetV(O, P).
         5. If IsCallable(func) is false, throw a TypeError exception.
         ...
-features: [cross-realm]
+features: [cross-realm, Proxy]
 ---*/
 
 var OProxy = $262.createRealm().global.Proxy;
diff --git a/test/built-ins/Proxy/preventExtensions/trap-is-not-callable.js b/test/built-ins/Proxy/preventExtensions/trap-is-not-callable.js
index 2a42bfdd97..3a09b2d387 100644
--- a/test/built-ins/Proxy/preventExtensions/trap-is-not-callable.js
+++ b/test/built-ins/Proxy/preventExtensions/trap-is-not-callable.js
@@ -17,6 +17,7 @@ info: |
         2. Let func be GetV(O, P).
         5. If IsCallable(func) is false, throw a TypeError exception.
         ...
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/preventExtensions/trap-is-undefined.js b/test/built-ins/Proxy/preventExtensions/trap-is-undefined.js
index 0cd82e501b..a92f7832ee 100644
--- a/test/built-ins/Proxy/preventExtensions/trap-is-undefined.js
+++ b/test/built-ins/Proxy/preventExtensions/trap-is-undefined.js
@@ -4,7 +4,7 @@
 es6id: 9.5.4
 description: >
     Return target.[[PreventExtensions]]() if target is undefined.
-features: [Reflect]
+features: [Proxy, Reflect]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/proxy-newtarget.js b/test/built-ins/Proxy/proxy-newtarget.js
index 3884cd44d6..f3227043df 100644
--- a/test/built-ins/Proxy/proxy-newtarget.js
+++ b/test/built-ins/Proxy/proxy-newtarget.js
@@ -17,6 +17,7 @@ description: >
         ...
         10. Return P.
 
+features: [Proxy]
 ---*/
 
 var p1 = new Proxy({}, {});
diff --git a/test/built-ins/Proxy/proxy-no-prototype.js b/test/built-ins/Proxy/proxy-no-prototype.js
index 027a2a8b47..a6d3cddbe2 100644
--- a/test/built-ins/Proxy/proxy-no-prototype.js
+++ b/test/built-ins/Proxy/proxy-no-prototype.js
@@ -6,6 +6,7 @@ description: >
     The Proxy constructor does not have a prototype property because
     proxy exotic objects do not have a [[Prototype]] internal slot
     that requires initialization.
+features: [Proxy]
 ---*/
 
 assert.sameValue(Object.hasOwnProperty.call(Proxy, 'prototype'), false);
diff --git a/test/built-ins/Proxy/proxy-undefined-newtarget.js b/test/built-ins/Proxy/proxy-undefined-newtarget.js
index 9b8566e92e..14d77bb56c 100644
--- a/test/built-ins/Proxy/proxy-undefined-newtarget.js
+++ b/test/built-ins/Proxy/proxy-undefined-newtarget.js
@@ -11,6 +11,7 @@ description: >
     1. If NewTarget is undefined, throw a TypeError exception.
     ...
 
+features: [Proxy]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Proxy/revocable/length.js b/test/built-ins/Proxy/revocable/length.js
index ddc208d224..3033b979e7 100644
--- a/test/built-ins/Proxy/revocable/length.js
+++ b/test/built-ins/Proxy/revocable/length.js
@@ -20,6 +20,7 @@ info: |
     object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
     [[Configurable]]: true }.
 includes: [propertyHelper.js]
+features: [Proxy]
 ---*/
 
 assert.sameValue(Proxy.revocable.length, 2);
diff --git a/test/built-ins/Proxy/revocable/name.js b/test/built-ins/Proxy/revocable/name.js
index 66e10719b1..5d3c844c24 100644
--- a/test/built-ins/Proxy/revocable/name.js
+++ b/test/built-ins/Proxy/revocable/name.js
@@ -17,6 +17,7 @@ info: |
     object, if it exists, has the attributes { [[Writable]]: false,
     [[Enumerable]]: false, [[Configurable]]: true }.
 includes: [propertyHelper.js]
+features: [Proxy]
 ---*/
 
 assert.sameValue(Proxy.revocable.name, "revocable");
diff --git a/test/built-ins/Proxy/revocable/proxy.js b/test/built-ins/Proxy/revocable/proxy.js
index 32d4c27cd0..fc7940a384 100644
--- a/test/built-ins/Proxy/revocable/proxy.js
+++ b/test/built-ins/Proxy/revocable/proxy.js
@@ -9,6 +9,7 @@ info: |
     Proxy.revocable ( target, handler )
 
     6. Perform CreateDataProperty(result, "proxy", p).
+features: [Proxy]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/revocable/revocation-function-extensible.js b/test/built-ins/Proxy/revocable/revocation-function-extensible.js
index 8b8e6117df..e6a7a93ec5 100644
--- a/test/built-ins/Proxy/revocable/revocation-function-extensible.js
+++ b/test/built-ins/Proxy/revocable/revocation-function-extensible.js
@@ -8,6 +8,7 @@ info: |
   17 ECMAScript Standard Built-in Objects:
     Unless specified otherwise, the [[Extensible]] internal slot
     of a built-in object initially has the value true.
+features: [Proxy]
 ---*/
 
 var revocationFunction = Proxy.revocable({}, {}).revoke;
diff --git a/test/built-ins/Proxy/revocable/revocation-function-length.js b/test/built-ins/Proxy/revocable/revocation-function-length.js
index 618ead532b..5ef5dbc332 100644
--- a/test/built-ins/Proxy/revocable/revocation-function-length.js
+++ b/test/built-ins/Proxy/revocable/revocation-function-length.js
@@ -12,6 +12,7 @@ info: |
     object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
     [[Configurable]]: true }.
 includes: [propertyHelper.js]
+features: [Proxy]
 ---*/
 
 var revocationFunction = Proxy.revocable({}, {}).revoke;
diff --git a/test/built-ins/Proxy/revocable/revocation-function-name.js b/test/built-ins/Proxy/revocable/revocation-function-name.js
index c3e0d49c83..7c9045d20f 100644
--- a/test/built-ins/Proxy/revocable/revocation-function-name.js
+++ b/test/built-ins/Proxy/revocable/revocation-function-name.js
@@ -11,6 +11,7 @@ info: |
     Every built-in Function object, including constructors, that is not
     identified as an anonymous function has a name property whose value
     is a String.
+features: [Proxy]
 ---*/
 
 var revocationFunction = Proxy.revocable({}, {}).revoke;
diff --git a/test/built-ins/Proxy/revocable/revocation-function-nonconstructor.js b/test/built-ins/Proxy/revocable/revocation-function-nonconstructor.js
index 1dd225538a..007e00e384 100644
--- a/test/built-ins/Proxy/revocable/revocation-function-nonconstructor.js
+++ b/test/built-ins/Proxy/revocable/revocation-function-nonconstructor.js
@@ -9,6 +9,7 @@ info: |
     Built-in function objects that are not identified as constructors do not
     implement the [[Construct]] internal method unless otherwise specified
     in the description of a particular function.
+features: [Proxy]
 ---*/
 
 var revocationFunction = Proxy.revocable({}, {}).revoke;
diff --git a/test/built-ins/Proxy/revocable/revocation-function-prototype.js b/test/built-ins/Proxy/revocable/revocation-function-prototype.js
index f1040d2ac5..5890170b2b 100644
--- a/test/built-ins/Proxy/revocable/revocation-function-prototype.js
+++ b/test/built-ins/Proxy/revocable/revocation-function-prototype.js
@@ -10,6 +10,7 @@ info: |
     constructor has the Function prototype object, which is the initial
     value of the expression Function.prototype (19.2.3), as the value of
     its [[Prototype]] internal slot.
+features: [Proxy]
 ---*/
 
 var revocationFunction = Proxy.revocable({}, {}).revoke;
diff --git a/test/built-ins/Proxy/revocable/revoke-consecutive-call-returns-undefined.js b/test/built-ins/Proxy/revocable/revoke-consecutive-call-returns-undefined.js
index 7621db372c..2296de8238 100644
--- a/test/built-ins/Proxy/revocable/revoke-consecutive-call-returns-undefined.js
+++ b/test/built-ins/Proxy/revocable/revoke-consecutive-call-returns-undefined.js
@@ -10,6 +10,7 @@ info: |
     ...
     1. Let p be the value of F’s [[RevocableProxy]] internal slot.
     2. If p is null, return undefined.
+features: [Proxy]
 ---*/
 
 var r = Proxy.revocable({}, {});
diff --git a/test/built-ins/Proxy/revocable/revoke-returns-undefined.js b/test/built-ins/Proxy/revocable/revoke-returns-undefined.js
index 8a05d694ec..abb4afd712 100644
--- a/test/built-ins/Proxy/revocable/revoke-returns-undefined.js
+++ b/test/built-ins/Proxy/revocable/revoke-returns-undefined.js
@@ -9,6 +9,7 @@ info: |
 
     ...
     7. Return undefined.
+features: [Proxy]
 ---*/
 
 var r = Proxy.revocable({}, {});
diff --git a/test/built-ins/Proxy/revocable/revoke.js b/test/built-ins/Proxy/revocable/revoke.js
index 6a54f91d56..7ad537d2dd 100644
--- a/test/built-ins/Proxy/revocable/revoke.js
+++ b/test/built-ins/Proxy/revocable/revoke.js
@@ -8,6 +8,7 @@ info: |
     Proxy.revocable ( target, handler )
 
     7. Perform CreateDataProperty(result, "revoke", revoker).
+features: [Proxy]
 ---*/
 
 var r = Proxy.revocable({}, {});
diff --git a/test/built-ins/Proxy/set/boolean-trap-result-is-false-boolean-return-false.js b/test/built-ins/Proxy/set/boolean-trap-result-is-false-boolean-return-false.js
index 7f30f31c94..81270ad62a 100644
--- a/test/built-ins/Proxy/set/boolean-trap-result-is-false-boolean-return-false.js
+++ b/test/built-ins/Proxy/set/boolean-trap-result-is-false-boolean-return-false.js
@@ -6,7 +6,7 @@ description: >
     [[Set]] ( P, V, Receiver)
 
     11. If booleanTrapResult is false, return false.
-features: [Reflect]
+features: [Proxy, Reflect, Reflect.set]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/set/boolean-trap-result-is-false-null-return-false.js b/test/built-ins/Proxy/set/boolean-trap-result-is-false-null-return-false.js
index 20ae2d4901..43f5e57183 100644
--- a/test/built-ins/Proxy/set/boolean-trap-result-is-false-null-return-false.js
+++ b/test/built-ins/Proxy/set/boolean-trap-result-is-false-null-return-false.js
@@ -6,7 +6,7 @@ description: >
     [[Set]] ( P, V, Receiver)
 
     11. If booleanTrapResult is false, return false.
-features: [Reflect]
+features: [Proxy, Reflect, Reflect.set]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/set/boolean-trap-result-is-false-number-return-false.js b/test/built-ins/Proxy/set/boolean-trap-result-is-false-number-return-false.js
index a1c4f2259b..527559ce1d 100644
--- a/test/built-ins/Proxy/set/boolean-trap-result-is-false-number-return-false.js
+++ b/test/built-ins/Proxy/set/boolean-trap-result-is-false-number-return-false.js
@@ -6,7 +6,7 @@ description: >
     [[Set]] ( P, V, Receiver)
 
     11. If booleanTrapResult is false, return false.
-features: [Reflect]
+features: [Proxy, Reflect, Reflect.set]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/set/boolean-trap-result-is-false-string-return-false.js b/test/built-ins/Proxy/set/boolean-trap-result-is-false-string-return-false.js
index 78f8d8ec5b..42e1410f29 100644
--- a/test/built-ins/Proxy/set/boolean-trap-result-is-false-string-return-false.js
+++ b/test/built-ins/Proxy/set/boolean-trap-result-is-false-string-return-false.js
@@ -6,7 +6,7 @@ description: >
     [[Set]] ( P, V, Receiver)
 
     11. If booleanTrapResult is false, return false.
-features: [Reflect]
+features: [Proxy, Reflect, Reflect.set]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/set/boolean-trap-result-is-false-undefined-return-false.js b/test/built-ins/Proxy/set/boolean-trap-result-is-false-undefined-return-false.js
index a17dd5a3fe..a0da571fa0 100644
--- a/test/built-ins/Proxy/set/boolean-trap-result-is-false-undefined-return-false.js
+++ b/test/built-ins/Proxy/set/boolean-trap-result-is-false-undefined-return-false.js
@@ -6,7 +6,7 @@ description: >
     [[Set]] ( P, V, Receiver)
 
     11. If booleanTrapResult is false, return false.
-features: [Reflect]
+features: [Proxy, Reflect, Reflect.set]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/set/call-parameters.js b/test/built-ins/Proxy/set/call-parameters.js
index 3b2fa42344..1780b2ee3b 100644
--- a/test/built-ins/Proxy/set/call-parameters.js
+++ b/test/built-ins/Proxy/set/call-parameters.js
@@ -8,6 +8,7 @@ description: >
     9. Let booleanTrapResult be ToBoolean(Call(trap, handler, «target, P, V,
     Receiver»)).
 
+features: [Proxy]
 ---*/
 
 var _target, _handler, _prop, _value, _receiver;
diff --git a/test/built-ins/Proxy/set/null-handler.js b/test/built-ins/Proxy/set/null-handler.js
index 637c43a46e..71c4a60242 100644
--- a/test/built-ins/Proxy/set/null-handler.js
+++ b/test/built-ins/Proxy/set/null-handler.js
@@ -6,6 +6,7 @@ description: >
     [[Set]] ( P, V, Receiver)
 
     3. If handler is null, throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 var p = Proxy.revocable({}, {});
diff --git a/test/built-ins/Proxy/set/return-is-abrupt.js b/test/built-ins/Proxy/set/return-is-abrupt.js
index 6f6ee2b254..d5210c9aaf 100644
--- a/test/built-ins/Proxy/set/return-is-abrupt.js
+++ b/test/built-ins/Proxy/set/return-is-abrupt.js
@@ -11,6 +11,7 @@ info: |
     9. Let booleanTrapResult be ToBoolean(Call(trap, handler, «target, P, V, Receiver»)).
     10. ReturnIfAbrupt(booleanTrapResult).
     ...
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/set/return-true-target-property-accessor-is-configurable-set-is-undefined.js b/test/built-ins/Proxy/set/return-true-target-property-accessor-is-configurable-set-is-undefined.js
index 20e5f2a95d..8e4b3e7678 100644
--- a/test/built-ins/Proxy/set/return-true-target-property-accessor-is-configurable-set-is-undefined.js
+++ b/test/built-ins/Proxy/set/return-true-target-property-accessor-is-configurable-set-is-undefined.js
@@ -7,7 +7,7 @@ description: >
 
     Returns true if trap returns true and target property accessor is
     configurable and set is undefined.
-features: [Reflect]
+features: [Proxy, Reflect, Reflect.set]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/set/return-true-target-property-accessor-is-not-configurable.js b/test/built-ins/Proxy/set/return-true-target-property-accessor-is-not-configurable.js
index 89547216d3..6630fe2ede 100644
--- a/test/built-ins/Proxy/set/return-true-target-property-accessor-is-not-configurable.js
+++ b/test/built-ins/Proxy/set/return-true-target-property-accessor-is-not-configurable.js
@@ -7,7 +7,7 @@ description: >
 
     Returns true if trap returns true and target property accessor is not
     configurable and set is not undefined.
-features: [Reflect]
+features: [Proxy, Reflect, Reflect.set]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/set/return-true-target-property-is-not-configurable.js b/test/built-ins/Proxy/set/return-true-target-property-is-not-configurable.js
index 730ecafe15..adb5f9a41c 100644
--- a/test/built-ins/Proxy/set/return-true-target-property-is-not-configurable.js
+++ b/test/built-ins/Proxy/set/return-true-target-property-is-not-configurable.js
@@ -7,7 +7,7 @@ description: >
 
     Returns true if trap returns true and target property is not configurable
     but writable.
-features: [Reflect]
+features: [Proxy, Reflect, Reflect.set]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/set/return-true-target-property-is-not-writable.js b/test/built-ins/Proxy/set/return-true-target-property-is-not-writable.js
index 3fd7a5a957..72b8db5489 100644
--- a/test/built-ins/Proxy/set/return-true-target-property-is-not-writable.js
+++ b/test/built-ins/Proxy/set/return-true-target-property-is-not-writable.js
@@ -7,7 +7,7 @@ description: >
 
     Returns true if trap returns true and target property is configurable
     but not writable.
-features: [Reflect]
+features: [Proxy, Reflect, Reflect.set]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/set/target-property-is-accessor-not-configurable-set-is-undefined.js b/test/built-ins/Proxy/set/target-property-is-accessor-not-configurable-set-is-undefined.js
index 582336903d..a1520c5094 100644
--- a/test/built-ins/Proxy/set/target-property-is-accessor-not-configurable-set-is-undefined.js
+++ b/test/built-ins/Proxy/set/target-property-is-accessor-not-configurable-set-is-undefined.js
@@ -12,6 +12,7 @@ info: |
         b. If IsAccessorDescriptor(targetDesc) and targetDesc.[[Configurable]] is false, then
             i. If targetDesc.[[Set]] is undefined, throw a TypeError exception.
 
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/set/target-property-is-not-configurable-not-writable-not-equal-to-v.js b/test/built-ins/Proxy/set/target-property-is-not-configurable-not-writable-not-equal-to-v.js
index 9bfd14990c..89c34f5f82 100644
--- a/test/built-ins/Proxy/set/target-property-is-not-configurable-not-writable-not-equal-to-v.js
+++ b/test/built-ins/Proxy/set/target-property-is-not-configurable-not-writable-not-equal-to-v.js
@@ -13,6 +13,7 @@ info: |
         false and targetDesc.[[Writable]] is false, then
             i. If SameValue(V, targetDesc.[[Value]]) is false, throw a TypeError
             exception.
+features: [Proxy]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/set/trap-is-not-callable-realm.js b/test/built-ins/Proxy/set/trap-is-not-callable-realm.js
index b6338c67fb..5f5845b0e9 100644
--- a/test/built-ins/Proxy/set/trap-is-not-callable-realm.js
+++ b/test/built-ins/Proxy/set/trap-is-not-callable-realm.js
@@ -15,7 +15,7 @@ info: |
     7.3.9 GetMethod (O, P)
 
     5. If IsCallable(func) is false, throw a TypeError exception.
-features: [cross-realm]
+features: [cross-realm, Proxy]
 ---*/
 
 var OProxy = $262.createRealm().global.Proxy;
diff --git a/test/built-ins/Proxy/set/trap-is-not-callable.js b/test/built-ins/Proxy/set/trap-is-not-callable.js
index cd3622d7c6..de9e336c0d 100644
--- a/test/built-ins/Proxy/set/trap-is-not-callable.js
+++ b/test/built-ins/Proxy/set/trap-is-not-callable.js
@@ -13,6 +13,7 @@ info: |
     7.3.9 GetMethod (O, P)
 
     5. If IsCallable(func) is false, throw a TypeError exception.
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/set/trap-is-undefined-no-property.js b/test/built-ins/Proxy/set/trap-is-undefined-no-property.js
index 512cb83e1f..8323d9b387 100644
--- a/test/built-ins/Proxy/set/trap-is-undefined-no-property.js
+++ b/test/built-ins/Proxy/set/trap-is-undefined-no-property.js
@@ -7,6 +7,7 @@ description: >
 
     8. If trap is undefined, then return target.[[Set]](P, V, Receiver).
 
+features: [Proxy]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/set/trap-is-undefined-receiver.js b/test/built-ins/Proxy/set/trap-is-undefined-receiver.js
index 4c915c4942..255265d039 100644
--- a/test/built-ins/Proxy/set/trap-is-undefined-receiver.js
+++ b/test/built-ins/Proxy/set/trap-is-undefined-receiver.js
@@ -10,6 +10,7 @@ info: |
 
     7. If trap is undefined, then
         a. Return ? target.[[Set]](P, V, Receiver).
+features: [Proxy]
 ---*/
 
 var context;
diff --git a/test/built-ins/Proxy/set/trap-is-undefined.js b/test/built-ins/Proxy/set/trap-is-undefined.js
index 06cadd7a09..2a668a6356 100644
--- a/test/built-ins/Proxy/set/trap-is-undefined.js
+++ b/test/built-ins/Proxy/set/trap-is-undefined.js
@@ -7,6 +7,7 @@ description: >
 
     8. If trap is undefined, then return target.[[Set]](P, V, Receiver).
 
+features: [Proxy]
 ---*/
 
 var target = {
diff --git a/test/built-ins/Proxy/setPrototypeOf/call-parameters.js b/test/built-ins/Proxy/setPrototypeOf/call-parameters.js
index ff44703df8..df7aa375cd 100644
--- a/test/built-ins/Proxy/setPrototypeOf/call-parameters.js
+++ b/test/built-ins/Proxy/setPrototypeOf/call-parameters.js
@@ -11,6 +11,7 @@ info: |
     ...
     9. Let booleanTrapResult be ToBoolean(Call(trap, handler, «target, V»)).
     ...
+features: [Proxy]
 ---*/
 
 var _handler, _target, _value;
diff --git a/test/built-ins/Proxy/setPrototypeOf/internals-call-order.js b/test/built-ins/Proxy/setPrototypeOf/internals-call-order.js
index 8f2c3d502c..0d75b09a88 100644
--- a/test/built-ins/Proxy/setPrototypeOf/internals-call-order.js
+++ b/test/built-ins/Proxy/setPrototypeOf/internals-call-order.js
@@ -14,7 +14,7 @@ info: |
   10. Let extensibleTarget be ? IsExtensible(target).
   11. If extensibleTarget is true, return true.
   12. Let targetProto be ? target.[[GetPrototypeOf]]().
-features: [Reflect.setPrototypeOf]
+features: [Proxy, Reflect, Reflect.setPrototypeOf]
 ---*/
 
 var calls = [];
diff --git a/test/built-ins/Proxy/setPrototypeOf/not-extensible-target-not-same-target-prototype.js b/test/built-ins/Proxy/setPrototypeOf/not-extensible-target-not-same-target-prototype.js
index d46138c3e1..b8aa3308d5 100644
--- a/test/built-ins/Proxy/setPrototypeOf/not-extensible-target-not-same-target-prototype.js
+++ b/test/built-ins/Proxy/setPrototypeOf/not-extensible-target-not-same-target-prototype.js
@@ -21,7 +21,7 @@ info: |
     16. If booleanTrapResult is true and SameValue(V, targetProto) is false,
     throw a TypeError exception.
     ...
-features: [Reflect.setPrototypeOf]
+features: [Proxy, Reflect, Reflect.setPrototypeOf]
 ---*/
 
 var target, proxy;
diff --git a/test/built-ins/Proxy/setPrototypeOf/not-extensible-target-same-target-prototype.js b/test/built-ins/Proxy/setPrototypeOf/not-extensible-target-same-target-prototype.js
index 26ec3a9176..22bfb93e3a 100644
--- a/test/built-ins/Proxy/setPrototypeOf/not-extensible-target-same-target-prototype.js
+++ b/test/built-ins/Proxy/setPrototypeOf/not-extensible-target-same-target-prototype.js
@@ -12,7 +12,7 @@ info: |
   12. Let targetProto be ? target.[[GetPrototypeOf]]().
   13. If SameValue(V, targetProto) is false, throw a TypeError exception.
   14. Return true.
-features: [Reflect.setPrototypeOf]
+features: [Proxy, Reflect, Reflect.setPrototypeOf]
 ---*/
 
 var proto = {};
diff --git a/test/built-ins/Proxy/setPrototypeOf/null-handler.js b/test/built-ins/Proxy/setPrototypeOf/null-handler.js
index 8a78bc9653..6ce40ec56d 100644
--- a/test/built-ins/Proxy/setPrototypeOf/null-handler.js
+++ b/test/built-ins/Proxy/setPrototypeOf/null-handler.js
@@ -4,6 +4,7 @@
 es6id: 9.5.2
 description: >
     Throws a TypeError exception if handler is null
+features: [Proxy]
 ---*/
 
 var p = Proxy.revocable({}, {});
diff --git a/test/built-ins/Proxy/setPrototypeOf/return-abrupt-from-get-trap.js b/test/built-ins/Proxy/setPrototypeOf/return-abrupt-from-get-trap.js
index c547b55e71..bf044a5b52 100644
--- a/test/built-ins/Proxy/setPrototypeOf/return-abrupt-from-get-trap.js
+++ b/test/built-ins/Proxy/setPrototypeOf/return-abrupt-from-get-trap.js
@@ -9,6 +9,7 @@ info: |
   [[SetPrototypeOf]] (V)
 
   6. Let trap be ? GetMethod(handler, "setPrototypeOf").
+features: [Proxy]
 ---*/
 
 var handler = Object.defineProperty({}, "setPrototypeOf", {
diff --git a/test/built-ins/Proxy/setPrototypeOf/return-abrupt-from-isextensible-target.js b/test/built-ins/Proxy/setPrototypeOf/return-abrupt-from-isextensible-target.js
index ee9980648f..87277dbe16 100644
--- a/test/built-ins/Proxy/setPrototypeOf/return-abrupt-from-isextensible-target.js
+++ b/test/built-ins/Proxy/setPrototypeOf/return-abrupt-from-isextensible-target.js
@@ -9,6 +9,7 @@ info: |
   [[SetPrototypeOf]] (V)
 
   10. Let extensibleTarget be ? IsExtensible(target).
+features: [Proxy]
 ---*/
 
 var target = new Proxy({}, {
diff --git a/test/built-ins/Proxy/setPrototypeOf/return-abrupt-from-target-getprototypeof.js b/test/built-ins/Proxy/setPrototypeOf/return-abrupt-from-target-getprototypeof.js
index 3d9a80a9e2..06a293206a 100644
--- a/test/built-ins/Proxy/setPrototypeOf/return-abrupt-from-target-getprototypeof.js
+++ b/test/built-ins/Proxy/setPrototypeOf/return-abrupt-from-target-getprototypeof.js
@@ -9,6 +9,7 @@ info: |
   [[SetPrototypeOf]] (V)
 
   12. Let targetProto be ? target.[[GetPrototypeOf]]().
+features: [Proxy]
 ---*/
 
 var target = new Proxy({}, {
diff --git a/test/built-ins/Proxy/setPrototypeOf/return-abrupt-from-trap.js b/test/built-ins/Proxy/setPrototypeOf/return-abrupt-from-trap.js
index 292515d93d..afd0df9235 100644
--- a/test/built-ins/Proxy/setPrototypeOf/return-abrupt-from-trap.js
+++ b/test/built-ins/Proxy/setPrototypeOf/return-abrupt-from-trap.js
@@ -9,6 +9,7 @@ info: |
 
     9. Let booleanTrapResult be ToBoolean(Call(trap, handler, «target, V»)).
     10. ReturnIfAbrupt(booleanTrapResult).
+features: [Proxy]
 ---*/
 
 var p = new Proxy({}, {
diff --git a/test/built-ins/Proxy/setPrototypeOf/toboolean-trap-result-false.js b/test/built-ins/Proxy/setPrototypeOf/toboolean-trap-result-false.js
index e87fdf93d8..50b08f39a8 100644
--- a/test/built-ins/Proxy/setPrototypeOf/toboolean-trap-result-false.js
+++ b/test/built-ins/Proxy/setPrototypeOf/toboolean-trap-result-false.js
@@ -13,7 +13,7 @@ info: |
   9. If booleanTrapResult is false, return false.
   10. Let extensibleTarget be ? IsExtensible(target).
   11. If extensibleTarget is true, return true.
-features: [Reflect.setPrototypeOf]
+features: [Proxy, Reflect, Reflect.setPrototypeOf]
 ---*/
 
 var called = 0;
diff --git a/test/built-ins/Proxy/setPrototypeOf/toboolean-trap-result-true-target-is-extensible.js b/test/built-ins/Proxy/setPrototypeOf/toboolean-trap-result-true-target-is-extensible.js
index 5353aaf006..cec54f75ad 100644
--- a/test/built-ins/Proxy/setPrototypeOf/toboolean-trap-result-true-target-is-extensible.js
+++ b/test/built-ins/Proxy/setPrototypeOf/toboolean-trap-result-true-target-is-extensible.js
@@ -13,7 +13,7 @@ info: |
   9. If booleanTrapResult is false, return false.
   10. Let extensibleTarget be ? IsExtensible(target).
   11. If extensibleTarget is true, return true.
-features: [Reflect.setPrototypeOf, Symbol]
+features: [Proxy, Reflect, Reflect.setPrototypeOf, Symbol]
 ---*/
 
 var called;
diff --git a/test/built-ins/Proxy/setPrototypeOf/trap-is-not-callable-realm.js b/test/built-ins/Proxy/setPrototypeOf/trap-is-not-callable-realm.js
index 7e7b7212d1..e68db7348e 100644
--- a/test/built-ins/Proxy/setPrototypeOf/trap-is-not-callable-realm.js
+++ b/test/built-ins/Proxy/setPrototypeOf/trap-is-not-callable-realm.js
@@ -20,7 +20,7 @@ info: |
         2. Let func be GetV(O, P).
         5. If IsCallable(func) is false, throw a TypeError exception.
         ...
-features: [cross-realm]
+features: [cross-realm, Proxy]
 ---*/
 
 var OProxy = $262.createRealm().global.Proxy;
diff --git a/test/built-ins/Proxy/setPrototypeOf/trap-is-not-callable.js b/test/built-ins/Proxy/setPrototypeOf/trap-is-not-callable.js
index c6977adb34..1dffdecc39 100644
--- a/test/built-ins/Proxy/setPrototypeOf/trap-is-not-callable.js
+++ b/test/built-ins/Proxy/setPrototypeOf/trap-is-not-callable.js
@@ -18,7 +18,7 @@ info: |
         2. Let func be GetV(O, P).
         5. If IsCallable(func) is false, throw a TypeError exception.
         ...
-features: [Reflect.setPrototypeOf]
+features: [Proxy, Reflect, Reflect.setPrototypeOf]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Proxy/setPrototypeOf/trap-is-undefined-or-null.js b/test/built-ins/Proxy/setPrototypeOf/trap-is-undefined-or-null.js
index 5e442100c5..625b7792e9 100644
--- a/test/built-ins/Proxy/setPrototypeOf/trap-is-undefined-or-null.js
+++ b/test/built-ins/Proxy/setPrototypeOf/trap-is-undefined-or-null.js
@@ -16,6 +16,7 @@ info: |
 
   2. Let func be ? GetV(V, P).
   3. If func is either undefined or null, return undefined.
+features: [Proxy]
 ---*/
 
 var proxy, called, value;
diff --git a/test/built-ins/Reflect/apply/apply.js b/test/built-ins/Reflect/apply/apply.js
index e7a9fa62ea..477abc79f2 100644
--- a/test/built-ins/Reflect/apply/apply.js
+++ b/test/built-ins/Reflect/apply/apply.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 verifyNotEnumerable(Reflect, 'apply');
diff --git a/test/built-ins/Reflect/apply/arguments-list-is-not-array-like.js b/test/built-ins/Reflect/apply/arguments-list-is-not-array-like.js
index 1c36206247..5483682683 100644
--- a/test/built-ins/Reflect/apply/arguments-list-is-not-array-like.js
+++ b/test/built-ins/Reflect/apply/arguments-list-is-not-array-like.js
@@ -19,6 +19,7 @@ info: |
   4. Let len be ToLength(Get(obj, "length")).
   5. ReturnIfAbrupt(len).
   ...
+features: [Reflect]
 ---*/
 
 function fn() {}
diff --git a/test/built-ins/Reflect/apply/call-target.js b/test/built-ins/Reflect/apply/call-target.js
index bf07a0bfb4..5654d51686 100644
--- a/test/built-ins/Reflect/apply/call-target.js
+++ b/test/built-ins/Reflect/apply/call-target.js
@@ -10,6 +10,7 @@ info: |
   ...
   4. Perform PrepareForTailCall().
   5. Return Call(target, thisArgument, args).
+features: [Reflect]
 ---*/
 
 var o = {};
diff --git a/test/built-ins/Reflect/apply/length.js b/test/built-ins/Reflect/apply/length.js
index ed670ec794..8c66edfa96 100644
--- a/test/built-ins/Reflect/apply/length.js
+++ b/test/built-ins/Reflect/apply/length.js
@@ -5,6 +5,7 @@ es6id: 26.1.1
 description: >
   Reflect.apply.length value and property descriptor
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/apply/name.js b/test/built-ins/Reflect/apply/name.js
index f3fa7f70ae..7d71677f76 100644
--- a/test/built-ins/Reflect/apply/name.js
+++ b/test/built-ins/Reflect/apply/name.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/apply/return-target-call-result.js b/test/built-ins/Reflect/apply/return-target-call-result.js
index b506a8091e..ee4c802bbf 100644
--- a/test/built-ins/Reflect/apply/return-target-call-result.js
+++ b/test/built-ins/Reflect/apply/return-target-call-result.js
@@ -10,6 +10,7 @@ info: |
   ...
   4. Perform PrepareForTailCall().
   5. Return Call(target, thisArgument, args).
+features: [Reflect]
 ---*/
 
 var o = {};
diff --git a/test/built-ins/Reflect/apply/target-is-not-callable-throws.js b/test/built-ins/Reflect/apply/target-is-not-callable-throws.js
index 42b7768b7c..15a175799d 100644
--- a/test/built-ins/Reflect/apply/target-is-not-callable-throws.js
+++ b/test/built-ins/Reflect/apply/target-is-not-callable-throws.js
@@ -16,6 +16,7 @@ info: |
   2. If Type(argument) is not Object, return false.
   3. If argument has a [[Call]] internal method, return true.
   4. Return false.
+features: [Reflect]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/construct/arguments-list-is-not-array-like.js b/test/built-ins/Reflect/construct/arguments-list-is-not-array-like.js
index 12eeac4361..fa6235b7bb 100644
--- a/test/built-ins/Reflect/construct/arguments-list-is-not-array-like.js
+++ b/test/built-ins/Reflect/construct/arguments-list-is-not-array-like.js
@@ -19,6 +19,7 @@ info: |
   4. Let len be ToLength(Get(obj, "length")).
   5. ReturnIfAbrupt(len).
   ...
+features: [Reflect, Reflect.construct]
 ---*/
 
 function fn() {}
diff --git a/test/built-ins/Reflect/construct/construct.js b/test/built-ins/Reflect/construct/construct.js
index 38b4a277e0..ffe0546260 100644
--- a/test/built-ins/Reflect/construct/construct.js
+++ b/test/built-ins/Reflect/construct/construct.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 verifyNotEnumerable(Reflect, 'construct');
diff --git a/test/built-ins/Reflect/construct/length.js b/test/built-ins/Reflect/construct/length.js
index 6891f0f0f0..eec78e35d8 100644
--- a/test/built-ins/Reflect/construct/length.js
+++ b/test/built-ins/Reflect/construct/length.js
@@ -9,6 +9,7 @@ info: |
 
   The length property of the construct function is 2.
 includes: [propertyHelper.js]
+features: [Reflect, Reflect.construct]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/construct/name.js b/test/built-ins/Reflect/construct/name.js
index 1dd353df37..56b8b7651f 100644
--- a/test/built-ins/Reflect/construct/name.js
+++ b/test/built-ins/Reflect/construct/name.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect, Reflect.construct]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/construct/newtarget-is-not-constructor-throws.js b/test/built-ins/Reflect/construct/newtarget-is-not-constructor-throws.js
index bd30280676..4b8a3357a8 100644
--- a/test/built-ins/Reflect/construct/newtarget-is-not-constructor-throws.js
+++ b/test/built-ins/Reflect/construct/newtarget-is-not-constructor-throws.js
@@ -11,6 +11,7 @@ info: |
   2. If newTarget is not present, let newTarget be target.
   3. Else, if IsConstructor(newTarget) is false, throw a TypeError exception.
   ...
+features: [Reflect, Reflect.construct]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/construct/return-with-newtarget-argument.js b/test/built-ins/Reflect/construct/return-with-newtarget-argument.js
index 90f816297e..ffffd2065a 100644
--- a/test/built-ins/Reflect/construct/return-with-newtarget-argument.js
+++ b/test/built-ins/Reflect/construct/return-with-newtarget-argument.js
@@ -11,6 +11,7 @@ info: |
   2. If newTarget is not present, let newTarget be target.
   ...
   6. Return Construct(target, args, newTarget).
+features: [Reflect, Reflect.construct]
 ---*/
 
 var o = {};
diff --git a/test/built-ins/Reflect/construct/return-without-newtarget-argument.js b/test/built-ins/Reflect/construct/return-without-newtarget-argument.js
index db88a02a27..655263c530 100644
--- a/test/built-ins/Reflect/construct/return-without-newtarget-argument.js
+++ b/test/built-ins/Reflect/construct/return-without-newtarget-argument.js
@@ -11,6 +11,7 @@ info: |
   2. If newTarget is not present, let newTarget be target.
   ...
   6. Return Construct(target, args, newTarget).
+features: [Reflect, Reflect.construct]
 ---*/
 
 var o = {};
diff --git a/test/built-ins/Reflect/construct/target-is-not-constructor-throws.js b/test/built-ins/Reflect/construct/target-is-not-constructor-throws.js
index ddc01e3d19..ce9bdb8dc0 100644
--- a/test/built-ins/Reflect/construct/target-is-not-constructor-throws.js
+++ b/test/built-ins/Reflect/construct/target-is-not-constructor-throws.js
@@ -8,6 +8,7 @@ info: |
   26.1.2 Reflect.construct ( target, argumentsList [, newTarget] )
 
   1. If IsConstructor(target) is false, throw a TypeError exception.
+features: [Reflect, Reflect.construct]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/construct/use-arguments-list.js b/test/built-ins/Reflect/construct/use-arguments-list.js
index fd4a2f6362..8de17ad243 100644
--- a/test/built-ins/Reflect/construct/use-arguments-list.js
+++ b/test/built-ins/Reflect/construct/use-arguments-list.js
@@ -11,6 +11,7 @@ info: |
   2. If newTarget is not present, let newTarget be target.
   ...
   6. Return Construct(target, args, newTarget).
+features: [Reflect, Reflect.construct]
 ---*/
 
 function fn() {
diff --git a/test/built-ins/Reflect/defineProperty/define-properties.js b/test/built-ins/Reflect/defineProperty/define-properties.js
index a960a2defb..03ad44e580 100644
--- a/test/built-ins/Reflect/defineProperty/define-properties.js
+++ b/test/built-ins/Reflect/defineProperty/define-properties.js
@@ -10,6 +10,7 @@ info: |
   ...
   6. Return target.[[DefineOwnProperty]](key, desc).
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 var o = {};
diff --git a/test/built-ins/Reflect/defineProperty/define-symbol-properties.js b/test/built-ins/Reflect/defineProperty/define-symbol-properties.js
index 0979130a06..cc89e0de34 100644
--- a/test/built-ins/Reflect/defineProperty/define-symbol-properties.js
+++ b/test/built-ins/Reflect/defineProperty/define-symbol-properties.js
@@ -17,7 +17,7 @@ info: |
   3. If Type(key) is Symbol, then
     a. Return key.
   ...
-features: [Symbol]
+features: [Reflect, Symbol]
 ---*/
 
 var o = {};
diff --git a/test/built-ins/Reflect/defineProperty/defineProperty.js b/test/built-ins/Reflect/defineProperty/defineProperty.js
index 194fd0481a..cac9a76680 100644
--- a/test/built-ins/Reflect/defineProperty/defineProperty.js
+++ b/test/built-ins/Reflect/defineProperty/defineProperty.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 verifyNotEnumerable(Reflect, 'defineProperty');
diff --git a/test/built-ins/Reflect/defineProperty/length.js b/test/built-ins/Reflect/defineProperty/length.js
index 02005b2e24..e5f137a6d9 100644
--- a/test/built-ins/Reflect/defineProperty/length.js
+++ b/test/built-ins/Reflect/defineProperty/length.js
@@ -5,6 +5,7 @@ es6id: 26.1.3
 description: >
   Reflect.defineProperty.length value and property descriptor
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/defineProperty/name.js b/test/built-ins/Reflect/defineProperty/name.js
index d2d16fd80c..5979335806 100644
--- a/test/built-ins/Reflect/defineProperty/name.js
+++ b/test/built-ins/Reflect/defineProperty/name.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/defineProperty/return-abrupt-from-attributes.js b/test/built-ins/Reflect/defineProperty/return-abrupt-from-attributes.js
index 3f1254ff6b..458afc2dda 100644
--- a/test/built-ins/Reflect/defineProperty/return-abrupt-from-attributes.js
+++ b/test/built-ins/Reflect/defineProperty/return-abrupt-from-attributes.js
@@ -11,6 +11,7 @@ info: |
   4. Let desc be ToPropertyDescriptor(attributes).
   5. ReturnIfAbrupt(desc).
   ...
+features: [Reflect]
 ---*/
 
 var attributes = {};
diff --git a/test/built-ins/Reflect/defineProperty/return-abrupt-from-property-key.js b/test/built-ins/Reflect/defineProperty/return-abrupt-from-property-key.js
index b08af58655..392d3aa0f1 100644
--- a/test/built-ins/Reflect/defineProperty/return-abrupt-from-property-key.js
+++ b/test/built-ins/Reflect/defineProperty/return-abrupt-from-property-key.js
@@ -11,6 +11,7 @@ info: |
   2. Let key be ToPropertyKey(propertyKey).
   3. ReturnIfAbrupt(key).
   ...
+features: [Reflect]
 ---*/
 
 var p = {
diff --git a/test/built-ins/Reflect/defineProperty/return-abrupt-from-result.js b/test/built-ins/Reflect/defineProperty/return-abrupt-from-result.js
index 66f685f0f6..ee2aa7e85c 100644
--- a/test/built-ins/Reflect/defineProperty/return-abrupt-from-result.js
+++ b/test/built-ins/Reflect/defineProperty/return-abrupt-from-result.js
@@ -16,7 +16,7 @@ info: |
   1. Let current be O.[[GetOwnProperty]](P).
   2. ReturnIfAbrupt(current).
   ...
-features: [Proxy]
+features: [Proxy, Reflect]
 ---*/
 
 var o = {};
diff --git a/test/built-ins/Reflect/defineProperty/return-boolean.js b/test/built-ins/Reflect/defineProperty/return-boolean.js
index 78a069ae5d..4e0ba306a7 100644
--- a/test/built-ins/Reflect/defineProperty/return-boolean.js
+++ b/test/built-ins/Reflect/defineProperty/return-boolean.js
@@ -9,6 +9,7 @@ info: |
 
   ...
   6. Return target.[[DefineOwnProperty]](key, desc).
+features: [Reflect]
 ---*/
 
 var o = {};
diff --git a/test/built-ins/Reflect/defineProperty/target-is-not-object-throws.js b/test/built-ins/Reflect/defineProperty/target-is-not-object-throws.js
index a250caa365..3df6f8c11e 100644
--- a/test/built-ins/Reflect/defineProperty/target-is-not-object-throws.js
+++ b/test/built-ins/Reflect/defineProperty/target-is-not-object-throws.js
@@ -9,6 +9,7 @@ info: |
 
   1. If Type(target) is not Object, throw a TypeError exception.
   ...
+features: [Reflect]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/defineProperty/target-is-symbol-throws.js b/test/built-ins/Reflect/defineProperty/target-is-symbol-throws.js
index 3ec8031212..44615016d5 100644
--- a/test/built-ins/Reflect/defineProperty/target-is-symbol-throws.js
+++ b/test/built-ins/Reflect/defineProperty/target-is-symbol-throws.js
@@ -9,7 +9,7 @@ info: |
 
   1. If Type(target) is not Object, throw a TypeError exception.
   ...
-features: [Symbol]
+features: [Reflect, Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/deleteProperty/delete-properties.js b/test/built-ins/Reflect/deleteProperty/delete-properties.js
index a9baea84a7..816f00d66f 100644
--- a/test/built-ins/Reflect/deleteProperty/delete-properties.js
+++ b/test/built-ins/Reflect/deleteProperty/delete-properties.js
@@ -9,6 +9,7 @@ info: |
 
   ...
   4. Return target.[[Delete]](key).
+features: [Reflect]
 ---*/
 
 var o = {
diff --git a/test/built-ins/Reflect/deleteProperty/delete-symbol-properties.js b/test/built-ins/Reflect/deleteProperty/delete-symbol-properties.js
index fc1bca0695..da17bf36f8 100644
--- a/test/built-ins/Reflect/deleteProperty/delete-symbol-properties.js
+++ b/test/built-ins/Reflect/deleteProperty/delete-symbol-properties.js
@@ -17,7 +17,7 @@ info: |
   3. If Type(key) is Symbol, then
     a. Return key.
   ...
-features: [Symbol]
+features: [Reflect, Symbol]
 ---*/
 
 var s = Symbol('1');
diff --git a/test/built-ins/Reflect/deleteProperty/deleteProperty.js b/test/built-ins/Reflect/deleteProperty/deleteProperty.js
index 5198eb424d..86d44d7fa8 100644
--- a/test/built-ins/Reflect/deleteProperty/deleteProperty.js
+++ b/test/built-ins/Reflect/deleteProperty/deleteProperty.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 verifyNotEnumerable(Reflect, 'deleteProperty');
diff --git a/test/built-ins/Reflect/deleteProperty/length.js b/test/built-ins/Reflect/deleteProperty/length.js
index aa79904dc3..2a0be6e69b 100644
--- a/test/built-ins/Reflect/deleteProperty/length.js
+++ b/test/built-ins/Reflect/deleteProperty/length.js
@@ -5,6 +5,7 @@ es6id: 26.1.4
 description: >
   Reflect.deleteProperty.length value and property descriptor
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/deleteProperty/name.js b/test/built-ins/Reflect/deleteProperty/name.js
index 3fd6e78cb4..dd8e155802 100644
--- a/test/built-ins/Reflect/deleteProperty/name.js
+++ b/test/built-ins/Reflect/deleteProperty/name.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/deleteProperty/return-abrupt-from-property-key.js b/test/built-ins/Reflect/deleteProperty/return-abrupt-from-property-key.js
index 4f34a6753b..695f8aff7d 100644
--- a/test/built-ins/Reflect/deleteProperty/return-abrupt-from-property-key.js
+++ b/test/built-ins/Reflect/deleteProperty/return-abrupt-from-property-key.js
@@ -11,6 +11,7 @@ info: |
   2. Let key be ToPropertyKey(propertyKey).
   3. ReturnIfAbrupt(key).
   ...
+features: [Reflect]
 ---*/
 
 var p = {
diff --git a/test/built-ins/Reflect/deleteProperty/return-abrupt-from-result.js b/test/built-ins/Reflect/deleteProperty/return-abrupt-from-result.js
index e1098f0f0e..e7692065f5 100644
--- a/test/built-ins/Reflect/deleteProperty/return-abrupt-from-result.js
+++ b/test/built-ins/Reflect/deleteProperty/return-abrupt-from-result.js
@@ -10,7 +10,7 @@ info: |
   ...
   6. Return target.[[DefineOwnProperty]](key, desc).
   ...
-features: [Proxy]
+features: [Proxy, Reflect]
 ---*/
 
 var o = {};
diff --git a/test/built-ins/Reflect/deleteProperty/return-boolean.js b/test/built-ins/Reflect/deleteProperty/return-boolean.js
index 4dc8e3eec0..60ddff6b8a 100644
--- a/test/built-ins/Reflect/deleteProperty/return-boolean.js
+++ b/test/built-ins/Reflect/deleteProperty/return-boolean.js
@@ -9,6 +9,7 @@ info: |
 
   ...
   4. Return target.[[Delete]](key).
+features: [Reflect]
 ---*/
 
 var o = {};
diff --git a/test/built-ins/Reflect/deleteProperty/target-is-not-object-throws.js b/test/built-ins/Reflect/deleteProperty/target-is-not-object-throws.js
index 5d3373ff4b..3c17c08030 100644
--- a/test/built-ins/Reflect/deleteProperty/target-is-not-object-throws.js
+++ b/test/built-ins/Reflect/deleteProperty/target-is-not-object-throws.js
@@ -9,6 +9,7 @@ info: |
 
   1. If Type(target) is not Object, throw a TypeError exception.
   ...
+features: [Reflect]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/deleteProperty/target-is-symbol-throws.js b/test/built-ins/Reflect/deleteProperty/target-is-symbol-throws.js
index 9081895d57..1b732a2fa0 100644
--- a/test/built-ins/Reflect/deleteProperty/target-is-symbol-throws.js
+++ b/test/built-ins/Reflect/deleteProperty/target-is-symbol-throws.js
@@ -9,7 +9,7 @@ info: |
 
   1. If Type(target) is not Object, throw a TypeError exception.
   ...
-features: [Symbol]
+features: [Reflect, Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/enumerate/undefined.js b/test/built-ins/Reflect/enumerate/undefined.js
index e981cf7030..f17547ffe3 100644
--- a/test/built-ins/Reflect/enumerate/undefined.js
+++ b/test/built-ins/Reflect/enumerate/undefined.js
@@ -4,6 +4,7 @@
 esid: sec-reflect-object
 description: >
   Reflect.enumerate was removed and it's not a function anymore
+features: [Reflect]
 ---*/
 
 assert.sameValue(Reflect.hasOwnProperty("enumerate"), false);
diff --git a/test/built-ins/Reflect/get/get.js b/test/built-ins/Reflect/get/get.js
index 05020eaaf6..c6dd68a3fd 100644
--- a/test/built-ins/Reflect/get/get.js
+++ b/test/built-ins/Reflect/get/get.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 verifyNotEnumerable(Reflect, 'get');
diff --git a/test/built-ins/Reflect/get/length.js b/test/built-ins/Reflect/get/length.js
index 30a2e94156..957d0bff80 100644
--- a/test/built-ins/Reflect/get/length.js
+++ b/test/built-ins/Reflect/get/length.js
@@ -9,6 +9,7 @@ info: |
 
   The length property of the get function is 2.
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/get/name.js b/test/built-ins/Reflect/get/name.js
index 4c760390db..0913bfdd77 100644
--- a/test/built-ins/Reflect/get/name.js
+++ b/test/built-ins/Reflect/get/name.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/get/return-abrupt-from-property-key.js b/test/built-ins/Reflect/get/return-abrupt-from-property-key.js
index 444b9e78c0..1e8d7e2e16 100644
--- a/test/built-ins/Reflect/get/return-abrupt-from-property-key.js
+++ b/test/built-ins/Reflect/get/return-abrupt-from-property-key.js
@@ -11,6 +11,7 @@ info: |
   2. Let key be ToPropertyKey(propertyKey).
   3. ReturnIfAbrupt(key).
   ...
+features: [Reflect]
 ---*/
 
 var p = {
diff --git a/test/built-ins/Reflect/get/return-abrupt-from-result.js b/test/built-ins/Reflect/get/return-abrupt-from-result.js
index 6d6a93e9fe..98077799cc 100644
--- a/test/built-ins/Reflect/get/return-abrupt-from-result.js
+++ b/test/built-ins/Reflect/get/return-abrupt-from-result.js
@@ -9,6 +9,7 @@ info: |
 
   ...
   5. Return target.[[Get]](key, receiver).
+features: [Reflect]
 ---*/
 
 var o1 = {};
diff --git a/test/built-ins/Reflect/get/return-value-from-receiver.js b/test/built-ins/Reflect/get/return-value-from-receiver.js
index 6d05b6e558..06315b42d9 100644
--- a/test/built-ins/Reflect/get/return-value-from-receiver.js
+++ b/test/built-ins/Reflect/get/return-value-from-receiver.js
@@ -27,6 +27,7 @@ info: |
   desc.[[Get]].
   7. If getter is undefined, return undefined.
   8. Return Call(getter, Receiver).
+features: [Reflect]
 ---*/
 
 var o1 = {};
diff --git a/test/built-ins/Reflect/get/return-value-from-symbol-key.js b/test/built-ins/Reflect/get/return-value-from-symbol-key.js
index b3c419b721..52e88b8f76 100644
--- a/test/built-ins/Reflect/get/return-value-from-symbol-key.js
+++ b/test/built-ins/Reflect/get/return-value-from-symbol-key.js
@@ -17,7 +17,7 @@ info: |
   3. If Type(key) is Symbol, then
     a. Return key.
   ...
-features: [Symbol]
+features: [Reflect, Symbol]
 ---*/
 
 var o = {};
diff --git a/test/built-ins/Reflect/get/return-value.js b/test/built-ins/Reflect/get/return-value.js
index c000d52c53..ebfa33b800 100644
--- a/test/built-ins/Reflect/get/return-value.js
+++ b/test/built-ins/Reflect/get/return-value.js
@@ -27,6 +27,7 @@ info: |
   desc.[[Get]].
   7. If getter is undefined, return undefined.
   8. Return Call(getter, Receiver).
+features: [Reflect]
 ---*/
 
 var o = {};
diff --git a/test/built-ins/Reflect/get/target-is-not-object-throws.js b/test/built-ins/Reflect/get/target-is-not-object-throws.js
index 4d578a8de6..f4a91722ad 100644
--- a/test/built-ins/Reflect/get/target-is-not-object-throws.js
+++ b/test/built-ins/Reflect/get/target-is-not-object-throws.js
@@ -9,6 +9,7 @@ info: |
 
   1. If Type(target) is not Object, throw a TypeError exception.
   ...
+features: [Reflect]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/get/target-is-symbol-throws.js b/test/built-ins/Reflect/get/target-is-symbol-throws.js
index f503032d23..859907e928 100644
--- a/test/built-ins/Reflect/get/target-is-symbol-throws.js
+++ b/test/built-ins/Reflect/get/target-is-symbol-throws.js
@@ -9,7 +9,7 @@ info: |
 
   1. If Type(target) is not Object, throw a TypeError exception.
   ...
-features: [Symbol]
+features: [Reflect, Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/getOwnPropertyDescriptor.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/getOwnPropertyDescriptor.js
index c5e2bd47b6..1f0f6274a1 100644
--- a/test/built-ins/Reflect/getOwnPropertyDescriptor/getOwnPropertyDescriptor.js
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/getOwnPropertyDescriptor.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 verifyNotEnumerable(Reflect, 'getOwnPropertyDescriptor');
diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/length.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/length.js
index 6335bf455a..a5eb0a1144 100644
--- a/test/built-ins/Reflect/getOwnPropertyDescriptor/length.js
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/length.js
@@ -5,6 +5,7 @@ es6id: 26.1.7
 description: >
   Reflect.getOwnPropertyDescriptor.length value and property descriptor
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/name.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/name.js
index 721c68857e..6d487eeafb 100644
--- a/test/built-ins/Reflect/getOwnPropertyDescriptor/name.js
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/name.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/return-abrupt-from-property-key.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/return-abrupt-from-property-key.js
index 3012ed523c..9df2394858 100644
--- a/test/built-ins/Reflect/getOwnPropertyDescriptor/return-abrupt-from-property-key.js
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/return-abrupt-from-property-key.js
@@ -11,6 +11,7 @@ info: |
   2. Let key be ToPropertyKey(propertyKey).
   3. ReturnIfAbrupt(key).
   ...
+features: [Reflect]
 ---*/
 
 var p = {
diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/return-abrupt-from-result.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/return-abrupt-from-result.js
index 4d7243298b..7a6171d734 100644
--- a/test/built-ins/Reflect/getOwnPropertyDescriptor/return-abrupt-from-result.js
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/return-abrupt-from-result.js
@@ -11,7 +11,7 @@ info: |
   4. Let desc be target.[[GetOwnProperty]](key).
   5. ReturnIfAbrupt(desc).
   ...
-features: [Proxy]
+features: [Proxy, Reflect]
 ---*/
 
 var o1 = {};
diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/return-from-accessor-descriptor.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/return-from-accessor-descriptor.js
index 4168de3ec1..0435b769ec 100644
--- a/test/built-ins/Reflect/getOwnPropertyDescriptor/return-from-accessor-descriptor.js
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/return-from-accessor-descriptor.js
@@ -33,6 +33,7 @@ info: |
   11. Return obj.
 
 includes: [compareArray.js]
+features: [Reflect]
 ---*/
 
 var o1 = {};
diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/return-from-data-descriptor.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/return-from-data-descriptor.js
index 79694d89ab..0b852a0653 100644
--- a/test/built-ins/Reflect/getOwnPropertyDescriptor/return-from-data-descriptor.js
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/return-from-data-descriptor.js
@@ -12,6 +12,7 @@ info: |
   5. ReturnIfAbrupt(desc).
   6. Return FromPropertyDescriptor(desc).
 includes: [compareArray.js]
+features: [Reflect]
 ---*/
 
 var o1 = {
diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/symbol-property.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/symbol-property.js
index 4967736134..d6a3b5ea3f 100644
--- a/test/built-ins/Reflect/getOwnPropertyDescriptor/symbol-property.js
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/symbol-property.js
@@ -18,7 +18,7 @@ info: |
     a. Return key.
   ...
 includes: [compareArray.js]
-features: [Symbol]
+features: [Reflect, Symbol]
 ---*/
 
 var o = {};
diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/target-is-not-object-throws.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/target-is-not-object-throws.js
index 4cc0617f7b..ff73c24760 100644
--- a/test/built-ins/Reflect/getOwnPropertyDescriptor/target-is-not-object-throws.js
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/target-is-not-object-throws.js
@@ -9,6 +9,7 @@ info: |
 
   1. If Type(target) is not Object, throw a TypeError exception.
   ...
+features: [Reflect]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/target-is-symbol-throws.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/target-is-symbol-throws.js
index 631a111e8b..db9c68ddca 100644
--- a/test/built-ins/Reflect/getOwnPropertyDescriptor/target-is-symbol-throws.js
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/target-is-symbol-throws.js
@@ -9,7 +9,7 @@ info: |
 
   1. If Type(target) is not Object, throw a TypeError exception.
   ...
-features: [Symbol]
+features: [Reflect, Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/undefined-own-property.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/undefined-own-property.js
index 0f97d52c54..01a94cc8aa 100644
--- a/test/built-ins/Reflect/getOwnPropertyDescriptor/undefined-own-property.js
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/undefined-own-property.js
@@ -15,6 +15,7 @@ info: |
   6.2.4.4 FromPropertyDescriptor ( Desc )
 
   1. If Desc is undefined, return undefined.
+features: [Reflect]
 ---*/
 
 var o = Object.create({
diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/undefined-property.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/undefined-property.js
index fc97057b60..0efaab91be 100644
--- a/test/built-ins/Reflect/getOwnPropertyDescriptor/undefined-property.js
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/undefined-property.js
@@ -15,6 +15,7 @@ info: |
   6.2.4.4 FromPropertyDescriptor ( Desc )
 
   1. If Desc is undefined, return undefined.
+features: [Reflect]
 ---*/
 
 var result = Reflect.getOwnPropertyDescriptor({}, undefined);
diff --git a/test/built-ins/Reflect/getPrototypeOf/getPrototypeOf.js b/test/built-ins/Reflect/getPrototypeOf/getPrototypeOf.js
index 79eb777566..aa02dcbd64 100644
--- a/test/built-ins/Reflect/getPrototypeOf/getPrototypeOf.js
+++ b/test/built-ins/Reflect/getPrototypeOf/getPrototypeOf.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 verifyNotEnumerable(Reflect, 'getPrototypeOf');
diff --git a/test/built-ins/Reflect/getPrototypeOf/length.js b/test/built-ins/Reflect/getPrototypeOf/length.js
index e57b7a8932..2c9335e8ca 100644
--- a/test/built-ins/Reflect/getPrototypeOf/length.js
+++ b/test/built-ins/Reflect/getPrototypeOf/length.js
@@ -5,6 +5,7 @@ es6id: 26.1.8
 description: >
   Reflect.getPrototypeOf.length value and property descriptor
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/getPrototypeOf/name.js b/test/built-ins/Reflect/getPrototypeOf/name.js
index 9b40da4328..49c5d033a1 100644
--- a/test/built-ins/Reflect/getPrototypeOf/name.js
+++ b/test/built-ins/Reflect/getPrototypeOf/name.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/getPrototypeOf/null-prototype.js b/test/built-ins/Reflect/getPrototypeOf/null-prototype.js
index 71ba4efcd6..5098134316 100644
--- a/test/built-ins/Reflect/getPrototypeOf/null-prototype.js
+++ b/test/built-ins/Reflect/getPrototypeOf/null-prototype.js
@@ -9,6 +9,7 @@ info: |
 
   ...
   2. Return target.[[GetPrototypeOf]]().
+features: [Reflect]
 ---*/
 
 var o = Object.create(null);
diff --git a/test/built-ins/Reflect/getPrototypeOf/return-abrupt-from-result.js b/test/built-ins/Reflect/getPrototypeOf/return-abrupt-from-result.js
index 15eae3176b..c83ac5445a 100644
--- a/test/built-ins/Reflect/getPrototypeOf/return-abrupt-from-result.js
+++ b/test/built-ins/Reflect/getPrototypeOf/return-abrupt-from-result.js
@@ -10,7 +10,7 @@ info: |
   ...
   2. Return target.[[GetPrototypeOf]]().
   ...
-features: [Proxy]
+features: [Proxy, Reflect]
 ---*/
 
 var o1 = {};
diff --git a/test/built-ins/Reflect/getPrototypeOf/return-prototype.js b/test/built-ins/Reflect/getPrototypeOf/return-prototype.js
index e561f60478..e94c16a55e 100644
--- a/test/built-ins/Reflect/getPrototypeOf/return-prototype.js
+++ b/test/built-ins/Reflect/getPrototypeOf/return-prototype.js
@@ -9,6 +9,7 @@ info: |
 
   ...
   2. Return target.[[GetPrototypeOf]]().
+features: [Reflect]
 ---*/
 
 var o = {};
diff --git a/test/built-ins/Reflect/getPrototypeOf/skip-own-properties.js b/test/built-ins/Reflect/getPrototypeOf/skip-own-properties.js
index f035cb328d..e60679410e 100644
--- a/test/built-ins/Reflect/getPrototypeOf/skip-own-properties.js
+++ b/test/built-ins/Reflect/getPrototypeOf/skip-own-properties.js
@@ -9,6 +9,7 @@ info: |
 
   ...
   2. Return target.[[GetPrototypeOf]]().
+features: [Reflect]
 ---*/
 
 var valid = {};
diff --git a/test/built-ins/Reflect/getPrototypeOf/target-is-not-object-throws.js b/test/built-ins/Reflect/getPrototypeOf/target-is-not-object-throws.js
index 65b0733894..7b4c79ad5a 100644
--- a/test/built-ins/Reflect/getPrototypeOf/target-is-not-object-throws.js
+++ b/test/built-ins/Reflect/getPrototypeOf/target-is-not-object-throws.js
@@ -9,6 +9,7 @@ info: |
 
   1. If Type(target) is not Object, throw a TypeError exception.
   ...
+features: [Reflect]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/getPrototypeOf/target-is-symbol-throws.js b/test/built-ins/Reflect/getPrototypeOf/target-is-symbol-throws.js
index 9e94198e4f..41f6c12b1a 100644
--- a/test/built-ins/Reflect/getPrototypeOf/target-is-symbol-throws.js
+++ b/test/built-ins/Reflect/getPrototypeOf/target-is-symbol-throws.js
@@ -9,7 +9,7 @@ info: |
 
   1. If Type(target) is not Object, throw a TypeError exception.
   ...
-features: [Symbol]
+features: [Reflect, Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/has/has.js b/test/built-ins/Reflect/has/has.js
index 8da8b4e61d..e5e6e76b07 100644
--- a/test/built-ins/Reflect/has/has.js
+++ b/test/built-ins/Reflect/has/has.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 verifyNotEnumerable(Reflect, 'has');
diff --git a/test/built-ins/Reflect/has/length.js b/test/built-ins/Reflect/has/length.js
index 9d9123899f..aaa7f74613 100644
--- a/test/built-ins/Reflect/has/length.js
+++ b/test/built-ins/Reflect/has/length.js
@@ -5,6 +5,7 @@ es6id: 26.1.9
 description: >
   Reflect.has.length value and property descriptor
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/has/name.js b/test/built-ins/Reflect/has/name.js
index cd7834283e..c735a600f6 100644
--- a/test/built-ins/Reflect/has/name.js
+++ b/test/built-ins/Reflect/has/name.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/has/return-abrupt-from-property-key.js b/test/built-ins/Reflect/has/return-abrupt-from-property-key.js
index c1ef87b4ac..bacf39f490 100644
--- a/test/built-ins/Reflect/has/return-abrupt-from-property-key.js
+++ b/test/built-ins/Reflect/has/return-abrupt-from-property-key.js
@@ -11,6 +11,7 @@ info: |
   2. Let key be ToPropertyKey(propertyKey).
   3. ReturnIfAbrupt(key).
   ...
+features: [Reflect]
 ---*/
 
 var p = {
diff --git a/test/built-ins/Reflect/has/return-abrupt-from-result.js b/test/built-ins/Reflect/has/return-abrupt-from-result.js
index b74f1db5a0..5f9ac9c5ef 100644
--- a/test/built-ins/Reflect/has/return-abrupt-from-result.js
+++ b/test/built-ins/Reflect/has/return-abrupt-from-result.js
@@ -9,7 +9,7 @@ info: |
 
   ...
   4. Return target.[[HasProperty]](key).
-features: [Proxy]
+features: [Proxy, Reflect]
 ---*/
 
 var o = {};
diff --git a/test/built-ins/Reflect/has/return-boolean.js b/test/built-ins/Reflect/has/return-boolean.js
index 6b74da5f57..b53450ad78 100644
--- a/test/built-ins/Reflect/has/return-boolean.js
+++ b/test/built-ins/Reflect/has/return-boolean.js
@@ -21,6 +21,7 @@ info: |
   6. If parent is not null, then
     a. Return parent.[[HasProperty]](P).
   7. Return false.
+features: [Reflect]
 ---*/
 
 var o1 = {
diff --git a/test/built-ins/Reflect/has/symbol-property.js b/test/built-ins/Reflect/has/symbol-property.js
index a706f6b84d..8b50b771f8 100644
--- a/test/built-ins/Reflect/has/symbol-property.js
+++ b/test/built-ins/Reflect/has/symbol-property.js
@@ -17,7 +17,7 @@ info: |
   3. If Type(key) is Symbol, then
     a. Return key.
   ...
-features: [Symbol]
+features: [Reflect, Symbol]
 ---*/
 
 var o = {};
diff --git a/test/built-ins/Reflect/has/target-is-not-object-throws.js b/test/built-ins/Reflect/has/target-is-not-object-throws.js
index d3806d9e72..ba52a0c249 100644
--- a/test/built-ins/Reflect/has/target-is-not-object-throws.js
+++ b/test/built-ins/Reflect/has/target-is-not-object-throws.js
@@ -9,6 +9,7 @@ info: |
 
   1. If Type(target) is not Object, throw a TypeError exception.
   ...
+features: [Reflect]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/has/target-is-symbol-throws.js b/test/built-ins/Reflect/has/target-is-symbol-throws.js
index 3cd7fe4523..936f08b1a8 100644
--- a/test/built-ins/Reflect/has/target-is-symbol-throws.js
+++ b/test/built-ins/Reflect/has/target-is-symbol-throws.js
@@ -9,7 +9,7 @@ info: |
 
   1. If Type(target) is not Object, throw a TypeError exception.
   ...
-features: [Symbol]
+features: [Reflect, Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/isExtensible/isExtensible.js b/test/built-ins/Reflect/isExtensible/isExtensible.js
index ebea7585a1..3f201582f8 100644
--- a/test/built-ins/Reflect/isExtensible/isExtensible.js
+++ b/test/built-ins/Reflect/isExtensible/isExtensible.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 verifyNotEnumerable(Reflect, 'isExtensible');
diff --git a/test/built-ins/Reflect/isExtensible/length.js b/test/built-ins/Reflect/isExtensible/length.js
index ac0e2b335c..5b8d6e1e1c 100644
--- a/test/built-ins/Reflect/isExtensible/length.js
+++ b/test/built-ins/Reflect/isExtensible/length.js
@@ -5,6 +5,7 @@ es6id: 26.1.10
 description: >
   Reflect.isExtensible.length value and property descriptor
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/isExtensible/name.js b/test/built-ins/Reflect/isExtensible/name.js
index 69ebf346ec..f1d4cf62ae 100644
--- a/test/built-ins/Reflect/isExtensible/name.js
+++ b/test/built-ins/Reflect/isExtensible/name.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/isExtensible/return-abrupt-from-result.js b/test/built-ins/Reflect/isExtensible/return-abrupt-from-result.js
index bab524ca7b..b546a44132 100644
--- a/test/built-ins/Reflect/isExtensible/return-abrupt-from-result.js
+++ b/test/built-ins/Reflect/isExtensible/return-abrupt-from-result.js
@@ -9,7 +9,7 @@ info: |
 
   ...
   2. Return target.[[IsExtensible]]().
-features: [Proxy]
+features: [Proxy, Reflect]
 ---*/
 
 var o1 = {};
diff --git a/test/built-ins/Reflect/isExtensible/return-boolean.js b/test/built-ins/Reflect/isExtensible/return-boolean.js
index f32c981a41..4dba4ac3f0 100644
--- a/test/built-ins/Reflect/isExtensible/return-boolean.js
+++ b/test/built-ins/Reflect/isExtensible/return-boolean.js
@@ -9,6 +9,7 @@ info: |
 
   ...
   2. Return target.[[IsExtensible]]().
+features: [Reflect]
 ---*/
 
 var o = {};
diff --git a/test/built-ins/Reflect/isExtensible/target-is-not-object-throws.js b/test/built-ins/Reflect/isExtensible/target-is-not-object-throws.js
index 35e6130e01..89f81fdd1b 100644
--- a/test/built-ins/Reflect/isExtensible/target-is-not-object-throws.js
+++ b/test/built-ins/Reflect/isExtensible/target-is-not-object-throws.js
@@ -9,6 +9,7 @@ info: |
 
   1. If Type(target) is not Object, throw a TypeError exception.
   ...
+features: [Reflect]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/isExtensible/target-is-symbol-throws.js b/test/built-ins/Reflect/isExtensible/target-is-symbol-throws.js
index f339977de1..0c6a73ca85 100644
--- a/test/built-ins/Reflect/isExtensible/target-is-symbol-throws.js
+++ b/test/built-ins/Reflect/isExtensible/target-is-symbol-throws.js
@@ -9,7 +9,7 @@ info: |
 
   1. If Type(target) is not Object, throw a TypeError exception.
   ...
-features: [Symbol]
+features: [Reflect, Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/object-prototype.js b/test/built-ins/Reflect/object-prototype.js
index 845498151b..0f2e87df51 100644
--- a/test/built-ins/Reflect/object-prototype.js
+++ b/test/built-ins/Reflect/object-prototype.js
@@ -5,6 +5,7 @@ es6id: 26.1
 description: >
   The value of the [[Prototype]] internal slot of the Reflect object
   is the intrinsic object %ObjectPrototype% (19.1.3).
+features: [Reflect]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/ownKeys/length.js b/test/built-ins/Reflect/ownKeys/length.js
index b0abccab77..51b8877fb0 100644
--- a/test/built-ins/Reflect/ownKeys/length.js
+++ b/test/built-ins/Reflect/ownKeys/length.js
@@ -5,6 +5,7 @@ es6id: 26.1.11
 description: >
   Reflect.ownKeys.length value and property descriptor
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/ownKeys/name.js b/test/built-ins/Reflect/ownKeys/name.js
index 6f0785bfb0..0bf2efd66d 100644
--- a/test/built-ins/Reflect/ownKeys/name.js
+++ b/test/built-ins/Reflect/ownKeys/name.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/ownKeys/ownKeys.js b/test/built-ins/Reflect/ownKeys/ownKeys.js
index 8f72009244..5f7271d345 100644
--- a/test/built-ins/Reflect/ownKeys/ownKeys.js
+++ b/test/built-ins/Reflect/ownKeys/ownKeys.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 verifyNotEnumerable(Reflect, 'ownKeys');
diff --git a/test/built-ins/Reflect/ownKeys/return-abrupt-from-result.js b/test/built-ins/Reflect/ownKeys/return-abrupt-from-result.js
index e7a5560ddc..ed93c17b03 100644
--- a/test/built-ins/Reflect/ownKeys/return-abrupt-from-result.js
+++ b/test/built-ins/Reflect/ownKeys/return-abrupt-from-result.js
@@ -11,7 +11,7 @@ info: |
   2. Let keys be target.[[OwnPropertyKeys]]().
   3. ReturnIfAbrupt(keys).
   ...
-features: [Proxy]
+features: [Proxy, Reflect]
 ---*/
 
 var o = {};
diff --git a/test/built-ins/Reflect/ownKeys/return-array-with-own-keys-only.js b/test/built-ins/Reflect/ownKeys/return-array-with-own-keys-only.js
index f479f4e005..2d97d8bbcb 100644
--- a/test/built-ins/Reflect/ownKeys/return-array-with-own-keys-only.js
+++ b/test/built-ins/Reflect/ownKeys/return-array-with-own-keys-only.js
@@ -12,6 +12,7 @@ info: |
   3. ReturnIfAbrupt(keys).
   4. Return CreateArrayFromList(keys).
 includes: [compareArray.js]
+features: [Reflect]
 ---*/
 
 var proto = {
diff --git a/test/built-ins/Reflect/ownKeys/return-empty-array.js b/test/built-ins/Reflect/ownKeys/return-empty-array.js
index 103875e680..8107981ef3 100644
--- a/test/built-ins/Reflect/ownKeys/return-empty-array.js
+++ b/test/built-ins/Reflect/ownKeys/return-empty-array.js
@@ -12,6 +12,7 @@ info: |
   3. ReturnIfAbrupt(keys).
   4. Return CreateArrayFromList(keys).
 includes: [compareArray.js]
+features: [Reflect]
 ---*/
 
 assert(compareArray(Reflect.ownKeys({}), []));
diff --git a/test/built-ins/Reflect/ownKeys/return-non-enumerable-keys.js b/test/built-ins/Reflect/ownKeys/return-non-enumerable-keys.js
index 282b90baae..115a9a15d2 100644
--- a/test/built-ins/Reflect/ownKeys/return-non-enumerable-keys.js
+++ b/test/built-ins/Reflect/ownKeys/return-non-enumerable-keys.js
@@ -12,6 +12,7 @@ info: |
   3. ReturnIfAbrupt(keys).
   4. Return CreateArrayFromList(keys).
 includes: [compareArray.js]
+features: [Reflect]
 ---*/
 
 assert(
diff --git a/test/built-ins/Reflect/ownKeys/return-on-corresponding-order-large-index.js b/test/built-ins/Reflect/ownKeys/return-on-corresponding-order-large-index.js
index 802646d13b..899737ea86 100644
--- a/test/built-ins/Reflect/ownKeys/return-on-corresponding-order-large-index.js
+++ b/test/built-ins/Reflect/ownKeys/return-on-corresponding-order-large-index.js
@@ -25,7 +25,7 @@ info: |
   order
     a. Add P as the last element of keys.
   5. Return keys.
-features: [Reflect,Symbol]
+features: [computed-property-names, Reflect, Symbol]
 ---*/
 
 var o1 = {
diff --git a/test/built-ins/Reflect/ownKeys/return-on-corresponding-order.js b/test/built-ins/Reflect/ownKeys/return-on-corresponding-order.js
index 92287bdfb7..b6e6b3ec76 100644
--- a/test/built-ins/Reflect/ownKeys/return-on-corresponding-order.js
+++ b/test/built-ins/Reflect/ownKeys/return-on-corresponding-order.js
@@ -25,7 +25,7 @@ info: |
   order
     a. Add P as the last element of keys.
   5. Return keys.
-features: [Symbol]
+features: [Reflect, Symbol]
 ---*/
 
 
diff --git a/test/built-ins/Reflect/ownKeys/target-is-not-object-throws.js b/test/built-ins/Reflect/ownKeys/target-is-not-object-throws.js
index c766833b91..f3328957a5 100644
--- a/test/built-ins/Reflect/ownKeys/target-is-not-object-throws.js
+++ b/test/built-ins/Reflect/ownKeys/target-is-not-object-throws.js
@@ -9,6 +9,7 @@ info: |
 
   1. If Type(target) is not Object, throw a TypeError exception.
   ...
+features: [Reflect]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/ownKeys/target-is-symbol-throws.js b/test/built-ins/Reflect/ownKeys/target-is-symbol-throws.js
index 1d6e24c256..56e4b81d9a 100644
--- a/test/built-ins/Reflect/ownKeys/target-is-symbol-throws.js
+++ b/test/built-ins/Reflect/ownKeys/target-is-symbol-throws.js
@@ -9,7 +9,7 @@ info: |
 
   1. If Type(target) is not Object, throw a TypeError exception.
   ...
-features: [Symbol]
+features: [Reflect, Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/preventExtensions/always-return-true-from-ordinary-object.js b/test/built-ins/Reflect/preventExtensions/always-return-true-from-ordinary-object.js
index 78a22737ea..5d775df7db 100644
--- a/test/built-ins/Reflect/preventExtensions/always-return-true-from-ordinary-object.js
+++ b/test/built-ins/Reflect/preventExtensions/always-return-true-from-ordinary-object.js
@@ -14,6 +14,7 @@ info: |
 
   1. Set the value of the [[Extensible]] internal slot of O to false.
   2. Return true.
+features: [Reflect]
 ---*/
 
 var o = {};
diff --git a/test/built-ins/Reflect/preventExtensions/length.js b/test/built-ins/Reflect/preventExtensions/length.js
index a2ca5f6f8f..6d26c92e85 100644
--- a/test/built-ins/Reflect/preventExtensions/length.js
+++ b/test/built-ins/Reflect/preventExtensions/length.js
@@ -5,6 +5,7 @@ es6id: 26.1.12
 description: >
   Reflect.preventExtensions.length value and property descriptor
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/preventExtensions/name.js b/test/built-ins/Reflect/preventExtensions/name.js
index 494b7a8acb..2a93f7de95 100644
--- a/test/built-ins/Reflect/preventExtensions/name.js
+++ b/test/built-ins/Reflect/preventExtensions/name.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/preventExtensions/prevent-extensions.js b/test/built-ins/Reflect/preventExtensions/prevent-extensions.js
index e5d7bc2bdf..cf8942fb39 100644
--- a/test/built-ins/Reflect/preventExtensions/prevent-extensions.js
+++ b/test/built-ins/Reflect/preventExtensions/prevent-extensions.js
@@ -14,6 +14,7 @@ info: |
 
   1. Set the value of the [[Extensible]] internal slot of O to false.
   ...
+features: [Reflect]
 ---*/
 
 var o = {};
diff --git a/test/built-ins/Reflect/preventExtensions/preventExtensions.js b/test/built-ins/Reflect/preventExtensions/preventExtensions.js
index 56d6ccdc89..ef870092fc 100644
--- a/test/built-ins/Reflect/preventExtensions/preventExtensions.js
+++ b/test/built-ins/Reflect/preventExtensions/preventExtensions.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 verifyNotEnumerable(Reflect, 'preventExtensions');
diff --git a/test/built-ins/Reflect/preventExtensions/return-abrupt-from-result.js b/test/built-ins/Reflect/preventExtensions/return-abrupt-from-result.js
index 7bec988e86..fab4533643 100644
--- a/test/built-ins/Reflect/preventExtensions/return-abrupt-from-result.js
+++ b/test/built-ins/Reflect/preventExtensions/return-abrupt-from-result.js
@@ -9,7 +9,7 @@ info: |
 
   ...
   2. Return target.[[PreventExtensions]]().
-features: [Proxy]
+features: [Proxy, Reflect]
 ---*/
 
 var o1 = {};
diff --git a/test/built-ins/Reflect/preventExtensions/return-boolean-from-proxy-object.js b/test/built-ins/Reflect/preventExtensions/return-boolean-from-proxy-object.js
index a5043352e1..f7f4ba0bbf 100644
--- a/test/built-ins/Reflect/preventExtensions/return-boolean-from-proxy-object.js
+++ b/test/built-ins/Reflect/preventExtensions/return-boolean-from-proxy-object.js
@@ -19,7 +19,7 @@ info: |
     b. ReturnIfAbrupt(targetIsExtensible).
     c. If targetIsExtensible is true, throw a TypeError exception.
   11. Return booleanTrapResult.
-features: [Proxy]
+features: [Proxy, Reflect]
 ---*/
 
 var p1 = new Proxy({}, {
diff --git a/test/built-ins/Reflect/preventExtensions/target-is-not-object-throws.js b/test/built-ins/Reflect/preventExtensions/target-is-not-object-throws.js
index 35e6130e01..89f81fdd1b 100644
--- a/test/built-ins/Reflect/preventExtensions/target-is-not-object-throws.js
+++ b/test/built-ins/Reflect/preventExtensions/target-is-not-object-throws.js
@@ -9,6 +9,7 @@ info: |
 
   1. If Type(target) is not Object, throw a TypeError exception.
   ...
+features: [Reflect]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/preventExtensions/target-is-symbol-throws.js b/test/built-ins/Reflect/preventExtensions/target-is-symbol-throws.js
index f339977de1..0c6a73ca85 100644
--- a/test/built-ins/Reflect/preventExtensions/target-is-symbol-throws.js
+++ b/test/built-ins/Reflect/preventExtensions/target-is-symbol-throws.js
@@ -9,7 +9,7 @@ info: |
 
   1. If Type(target) is not Object, throw a TypeError exception.
   ...
-features: [Symbol]
+features: [Reflect, Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/prop-desc.js b/test/built-ins/Reflect/prop-desc.js
index 72fee3c151..ce54ad7dae 100644
--- a/test/built-ins/Reflect/prop-desc.js
+++ b/test/built-ins/Reflect/prop-desc.js
@@ -21,6 +21,7 @@ info: |
   has the attributes { [[Writable]]: true, [[Enumerable]]: false,
   [[Configurable]]: true } unless otherwise specified.
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 assert.sameValue(typeof Reflect, "object");
diff --git a/test/built-ins/Reflect/set/call-prototype-property-set.js b/test/built-ins/Reflect/set/call-prototype-property-set.js
index 87fd4e76b0..f11f8ac6ea 100644
--- a/test/built-ins/Reflect/set/call-prototype-property-set.js
+++ b/test/built-ins/Reflect/set/call-prototype-property-set.js
@@ -22,6 +22,7 @@ info: |
       i. Return parent.[[Set]](P, V, Receiver).
   ...
   11. Return true.
+features: [Reflect, Reflect.set]
 ---*/
 
 var args;
diff --git a/test/built-ins/Reflect/set/creates-a-data-descriptor.js b/test/built-ins/Reflect/set/creates-a-data-descriptor.js
index 8b99a236b1..f937514120 100644
--- a/test/built-ins/Reflect/set/creates-a-data-descriptor.js
+++ b/test/built-ins/Reflect/set/creates-a-data-descriptor.js
@@ -41,6 +41,7 @@ info: |
   ...
   11. Return true.
 includes: [propertyHelper.js]
+features: [Reflect, Reflect.set]
 ---*/
 
 var o1 = {};
diff --git a/test/built-ins/Reflect/set/different-property-descriptors.js b/test/built-ins/Reflect/set/different-property-descriptors.js
index fab96a084e..6cff059b8a 100644
--- a/test/built-ins/Reflect/set/different-property-descriptors.js
+++ b/test/built-ins/Reflect/set/different-property-descriptors.js
@@ -32,6 +32,7 @@ info: |
     e. If existingDescriptor is not undefined, then
       i. If IsAccessorDescriptor(existingDescriptor) is true, return false.
   ...
+features: [Reflect, Reflect.set]
 ---*/
 
 var receiver = {};
diff --git a/test/built-ins/Reflect/set/length.js b/test/built-ins/Reflect/set/length.js
index 0ede00ac2d..7efa3e4ae7 100644
--- a/test/built-ins/Reflect/set/length.js
+++ b/test/built-ins/Reflect/set/length.js
@@ -9,6 +9,7 @@ info: |
 
   The length property of the set function is 3.
 includes: [propertyHelper.js]
+features: [Reflect, Reflect.set]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/set/name.js b/test/built-ins/Reflect/set/name.js
index 614827c43a..eea8c69399 100644
--- a/test/built-ins/Reflect/set/name.js
+++ b/test/built-ins/Reflect/set/name.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect, Reflect.set]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/set/receiver-is-not-object.js b/test/built-ins/Reflect/set/receiver-is-not-object.js
index bbabeddb3c..2abb7db565 100644
--- a/test/built-ins/Reflect/set/receiver-is-not-object.js
+++ b/test/built-ins/Reflect/set/receiver-is-not-object.js
@@ -27,6 +27,7 @@ info: |
     a. If ownDesc.[[Writable]] is false, return false.
     b. If Type(Receiver) is not Object, return false.
   ...
+features: [Reflect, Reflect.set]
 ---*/
 
 var o1 = {
diff --git a/test/built-ins/Reflect/set/return-abrupt-from-property-key.js b/test/built-ins/Reflect/set/return-abrupt-from-property-key.js
index 23a882414c..49a6e77438 100644
--- a/test/built-ins/Reflect/set/return-abrupt-from-property-key.js
+++ b/test/built-ins/Reflect/set/return-abrupt-from-property-key.js
@@ -11,6 +11,7 @@ info: |
   2. Let key be ToPropertyKey(propertyKey).
   3. ReturnIfAbrupt(key).
   ...
+features: [Reflect, Reflect.set]
 ---*/
 
 var p = {
diff --git a/test/built-ins/Reflect/set/return-abrupt-from-result.js b/test/built-ins/Reflect/set/return-abrupt-from-result.js
index fd7a07709f..55e87ca1ed 100644
--- a/test/built-ins/Reflect/set/return-abrupt-from-result.js
+++ b/test/built-ins/Reflect/set/return-abrupt-from-result.js
@@ -9,6 +9,7 @@ info: |
 
   ...
   5. Return target.[[Set]](key, V, receiver).
+features: [Reflect, Reflect.set]
 ---*/
 
 var o1 = {};
diff --git a/test/built-ins/Reflect/set/return-false-if-receiver-is-not-writable.js b/test/built-ins/Reflect/set/return-false-if-receiver-is-not-writable.js
index b272ab1c49..9e656e529c 100644
--- a/test/built-ins/Reflect/set/return-false-if-receiver-is-not-writable.js
+++ b/test/built-ins/Reflect/set/return-false-if-receiver-is-not-writable.js
@@ -18,6 +18,7 @@ info: |
   5. If IsDataDescriptor(ownDesc) is true, then
     a. If ownDesc.[[Writable]] is false, return false.
   ...
+features: [Reflect, Reflect.set]
 ---*/
 
 var o1 = {};
diff --git a/test/built-ins/Reflect/set/return-false-if-target-is-not-writable.js b/test/built-ins/Reflect/set/return-false-if-target-is-not-writable.js
index 072eea1108..4f8f105cbd 100644
--- a/test/built-ins/Reflect/set/return-false-if-target-is-not-writable.js
+++ b/test/built-ins/Reflect/set/return-false-if-target-is-not-writable.js
@@ -24,6 +24,7 @@ info: |
       i. If IsAccessorDescriptor(existingDescriptor) is true, return false.
       ii. If existingDescriptor.[[Writable]] is false, return false.
   ...
+features: [Reflect, Reflect.set]
 ---*/
 
 var o1 = {};
diff --git a/test/built-ins/Reflect/set/set-value-on-accessor-descriptor-with-receiver.js b/test/built-ins/Reflect/set/set-value-on-accessor-descriptor-with-receiver.js
index 534177d59b..1a98b3e4b9 100644
--- a/test/built-ins/Reflect/set/set-value-on-accessor-descriptor-with-receiver.js
+++ b/test/built-ins/Reflect/set/set-value-on-accessor-descriptor-with-receiver.js
@@ -21,6 +21,7 @@ info: |
   9. Let setterResult be Call(setter, Receiver, «V»).
   10. ReturnIfAbrupt(setterResult).
   11. Return true.
+features: [Reflect, Reflect.set]
 ---*/
 
 var args;
diff --git a/test/built-ins/Reflect/set/set-value-on-accessor-descriptor.js b/test/built-ins/Reflect/set/set-value-on-accessor-descriptor.js
index 9f484da631..8385981784 100644
--- a/test/built-ins/Reflect/set/set-value-on-accessor-descriptor.js
+++ b/test/built-ins/Reflect/set/set-value-on-accessor-descriptor.js
@@ -21,6 +21,7 @@ info: |
   9. Let setterResult be Call(setter, Receiver, «V»).
   10. ReturnIfAbrupt(setterResult).
   11. Return true.
+features: [Reflect, Reflect.set]
 ---*/
 
 var args;
diff --git a/test/built-ins/Reflect/set/set-value-on-data-descriptor.js b/test/built-ins/Reflect/set/set-value-on-data-descriptor.js
index 6aeaaa2f44..1a534f4928 100644
--- a/test/built-ins/Reflect/set/set-value-on-data-descriptor.js
+++ b/test/built-ins/Reflect/set/set-value-on-data-descriptor.js
@@ -28,6 +28,7 @@ info: |
     f. Else Receiver does not currently have a property P,
       i. Return CreateDataProperty(Receiver, P, V).
   ...
+features: [Reflect, Reflect.set]
 ---*/
 
 var o1 = {
diff --git a/test/built-ins/Reflect/set/set.js b/test/built-ins/Reflect/set/set.js
index deb79912d0..84f8b4b339 100644
--- a/test/built-ins/Reflect/set/set.js
+++ b/test/built-ins/Reflect/set/set.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 verifyNotEnumerable(Reflect, 'set');
diff --git a/test/built-ins/Reflect/set/symbol-property.js b/test/built-ins/Reflect/set/symbol-property.js
index c319f83154..9c354e7883 100644
--- a/test/built-ins/Reflect/set/symbol-property.js
+++ b/test/built-ins/Reflect/set/symbol-property.js
@@ -17,7 +17,7 @@ info: |
   3. If Type(key) is Symbol, then
     a. Return key.
   ...
-features: [Symbol]
+features: [Reflect, Reflect.set, Symbol]
 ---*/
 
 var o1 = {};
diff --git a/test/built-ins/Reflect/set/target-is-not-object-throws.js b/test/built-ins/Reflect/set/target-is-not-object-throws.js
index 697808e8c7..e8618b4f12 100644
--- a/test/built-ins/Reflect/set/target-is-not-object-throws.js
+++ b/test/built-ins/Reflect/set/target-is-not-object-throws.js
@@ -9,6 +9,7 @@ info: |
 
   1. If Type(target) is not Object, throw a TypeError exception.
   ...
+features: [Reflect, Reflect.set]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/set/target-is-symbol-throws.js b/test/built-ins/Reflect/set/target-is-symbol-throws.js
index d4e5cf6e3c..edbe2ad4a8 100644
--- a/test/built-ins/Reflect/set/target-is-symbol-throws.js
+++ b/test/built-ins/Reflect/set/target-is-symbol-throws.js
@@ -9,7 +9,7 @@ info: |
 
   1. If Type(target) is not Object, throw a TypeError exception.
   ...
-features: [Symbol]
+features: [Reflect, Reflect.set, Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/setPrototypeOf/length.js b/test/built-ins/Reflect/setPrototypeOf/length.js
index bcb8d164c6..d7c2b0ec47 100644
--- a/test/built-ins/Reflect/setPrototypeOf/length.js
+++ b/test/built-ins/Reflect/setPrototypeOf/length.js
@@ -5,6 +5,7 @@ es6id: 26.1.14
 description: >
   Reflect.setPrototypeOf.length value and property descriptor
 includes: [propertyHelper.js]
+features: [Reflect, Reflect.setPrototypeOf]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/setPrototypeOf/name.js b/test/built-ins/Reflect/setPrototypeOf/name.js
index f26653c4ad..6adf018317 100644
--- a/test/built-ins/Reflect/setPrototypeOf/name.js
+++ b/test/built-ins/Reflect/setPrototypeOf/name.js
@@ -9,6 +9,7 @@ info: |
 
   17 ECMAScript Standard Built-in Objects
 includes: [propertyHelper.js]
+features: [Reflect, Reflect.setPrototypeOf]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Reflect/setPrototypeOf/proto-is-not-object-and-not-null-throws.js b/test/built-ins/Reflect/setPrototypeOf/proto-is-not-object-and-not-null-throws.js
index 36700f3124..b04b2be275 100644
--- a/test/built-ins/Reflect/setPrototypeOf/proto-is-not-object-and-not-null-throws.js
+++ b/test/built-ins/Reflect/setPrototypeOf/proto-is-not-object-and-not-null-throws.js
@@ -11,6 +11,7 @@ info: |
   2. If Type(proto) is not Object and proto is not null, throw a TypeError
   exception
   ...
+features: [Reflect, Reflect.setPrototypeOf]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/setPrototypeOf/proto-is-symbol-throws.js b/test/built-ins/Reflect/setPrototypeOf/proto-is-symbol-throws.js
index 9c4c9067a3..a88657cc4d 100644
--- a/test/built-ins/Reflect/setPrototypeOf/proto-is-symbol-throws.js
+++ b/test/built-ins/Reflect/setPrototypeOf/proto-is-symbol-throws.js
@@ -11,7 +11,7 @@ info: |
   2. If Type(proto) is not Object and proto is not null, throw a TypeError
   exception
   ...
-features: [Symbol]
+features: [Reflect, Reflect.setPrototypeOf, Symbol]
 ---*/
 
 var s = Symbol(1);
diff --git a/test/built-ins/Reflect/setPrototypeOf/return-abrupt-from-result.js b/test/built-ins/Reflect/setPrototypeOf/return-abrupt-from-result.js
index 1839dbb4b3..0eb36fa6ae 100644
--- a/test/built-ins/Reflect/setPrototypeOf/return-abrupt-from-result.js
+++ b/test/built-ins/Reflect/setPrototypeOf/return-abrupt-from-result.js
@@ -9,7 +9,7 @@ info: |
 
   ...
   3. Return target.[[SetPrototypeOf]](proto).
-features: [Proxy]
+features: [Proxy, Reflect, Reflect.setPrototypeOf]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Reflect/setPrototypeOf/return-false-if-target-and-proto-are-the-same.js b/test/built-ins/Reflect/setPrototypeOf/return-false-if-target-and-proto-are-the-same.js
index 990c1e0552..0b7cfea91f 100644
--- a/test/built-ins/Reflect/setPrototypeOf/return-false-if-target-and-proto-are-the-same.js
+++ b/test/built-ins/Reflect/setPrototypeOf/return-false-if-target-and-proto-are-the-same.js
@@ -17,6 +17,7 @@ info: |
     a. If p is null, let done be true.
     b. Else, if SameValue(p, O) is true, return false.
   ...
+features: [Reflect, Reflect.setPrototypeOf]
 ---*/
 
 var o1 = {};
diff --git a/test/built-ins/Reflect/setPrototypeOf/return-false-if-target-is-not-extensible.js b/test/built-ins/Reflect/setPrototypeOf/return-false-if-target-is-not-extensible.js
index c1a59e33dd..926ddb2934 100644
--- a/test/built-ins/Reflect/setPrototypeOf/return-false-if-target-is-not-extensible.js
+++ b/test/built-ins/Reflect/setPrototypeOf/return-false-if-target-is-not-extensible.js
@@ -15,6 +15,7 @@ info: |
   ...
   5. If extensible is false, return false.
   ...
+features: [Reflect, Reflect.setPrototypeOf]
 ---*/
 
 var o1 = {};
diff --git a/test/built-ins/Reflect/setPrototypeOf/return-false-if-target-is-prototype-of-proto.js b/test/built-ins/Reflect/setPrototypeOf/return-false-if-target-is-prototype-of-proto.js
index 0339db3cbd..77be9c9975 100644
--- a/test/built-ins/Reflect/setPrototypeOf/return-false-if-target-is-prototype-of-proto.js
+++ b/test/built-ins/Reflect/setPrototypeOf/return-false-if-target-is-prototype-of-proto.js
@@ -21,6 +21,7 @@ info: |
       object internal method defined in 9.1.1, let done be true.
       ii. Else, let p be the value of p’s [[Prototype]] internal slot.
   ...
+features: [Reflect, Reflect.setPrototypeOf]
 ---*/
 
 var target = {};
diff --git a/test/built-ins/Reflect/setPrototypeOf/return-true-if-new-prototype-is-set.js b/test/built-ins/Reflect/setPrototypeOf/return-true-if-new-prototype-is-set.js
index 6c1707027e..774ad4abf2 100644
--- a/test/built-ins/Reflect/setPrototypeOf/return-true-if-new-prototype-is-set.js
+++ b/test/built-ins/Reflect/setPrototypeOf/return-true-if-new-prototype-is-set.js
@@ -16,6 +16,7 @@ info: |
   9. Set the value of the [[Prototype]] internal slot of O to V.
   10. Return true.
   ...
+features: [Reflect, Reflect.setPrototypeOf]
 ---*/
 
 var o1 = {};
diff --git a/test/built-ins/Reflect/setPrototypeOf/return-true-if-proto-is-current.js b/test/built-ins/Reflect/setPrototypeOf/return-true-if-proto-is-current.js
index 4370c5d7f5..50521058f4 100644
--- a/test/built-ins/Reflect/setPrototypeOf/return-true-if-proto-is-current.js
+++ b/test/built-ins/Reflect/setPrototypeOf/return-true-if-proto-is-current.js
@@ -15,6 +15,7 @@ info: |
   ...
   4. If SameValue(V, current), return true.
   ...
+features: [Reflect, Reflect.setPrototypeOf]
 ---*/
 
 var o1 = {};
diff --git a/test/built-ins/Reflect/setPrototypeOf/setPrototypeOf.js b/test/built-ins/Reflect/setPrototypeOf/setPrototypeOf.js
index 2377d437d9..4d21ea1817 100644
--- a/test/built-ins/Reflect/setPrototypeOf/setPrototypeOf.js
+++ b/test/built-ins/Reflect/setPrototypeOf/setPrototypeOf.js
@@ -10,6 +10,7 @@ info: |
   17 ECMAScript Standard Built-in Objects
 
 includes: [propertyHelper.js]
+features: [Reflect]
 ---*/
 
 verifyNotEnumerable(Reflect, 'setPrototypeOf');
diff --git a/test/built-ins/Reflect/setPrototypeOf/target-is-not-object-throws.js b/test/built-ins/Reflect/setPrototypeOf/target-is-not-object-throws.js
index b451b59977..bde1ed0455 100644
--- a/test/built-ins/Reflect/setPrototypeOf/target-is-not-object-throws.js
+++ b/test/built-ins/Reflect/setPrototypeOf/target-is-not-object-throws.js
@@ -9,6 +9,7 @@ info: |
 
   1. If Type(target) is not Object, throw a TypeError exception.
   ...
+features: [Reflect, Reflect.setPrototypeOf]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Reflect/setPrototypeOf/target-is-symbol-throws.js b/test/built-ins/Reflect/setPrototypeOf/target-is-symbol-throws.js
index 57c5c9e478..d7e1d1b411 100644
--- a/test/built-ins/Reflect/setPrototypeOf/target-is-symbol-throws.js
+++ b/test/built-ins/Reflect/setPrototypeOf/target-is-symbol-throws.js
@@ -9,7 +9,7 @@ info: |
 
   1. If Type(target) is not Object, throw a TypeError exception.
   ...
-features: [Symbol]
+features: [Reflect, Reflect.setPrototypeOf, Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
-- 
GitLab