diff --git a/test/built-ins/RegExp/named-groups/groups-object.js b/test/built-ins/RegExp/named-groups/groups-object.js
new file mode 100644
index 0000000000000000000000000000000000000000..a7d2b5433ccb991f36de43a8042cd5b893b0ed27
--- /dev/null
+++ b/test/built-ins/RegExp/named-groups/groups-object.js
@@ -0,0 +1,34 @@
+// Copyright 2017 Aleksey Shvayka. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Properties of the groups object are created with CreateDataProperty
+includes: [propertyHelper.js]
+esid: sec-regexpbuiltinexec
+features: [regexp-named-groups]
+info: >
+  Runtime Semantics: RegExpBuiltinExec ( R, S )
+    24. If R contains any GroupName,
+      a. Let groups be ObjectCreate(null).
+      b. Perform ! CreateDataProperty(A, "groups", groups).
+---*/
+
+// groups is created with Define, not Set
+let counter = 0;
+Object.defineProperty(Array.prototype, "groups", {set() { counter++; }});
+let match = /(?<x>.)/.exec("a");
+assert.sameValue(counter, 0);
+
+// groups is writable, enumerable and configurable
+// (from CreateDataProperty)
+verifyProperty(match, "groups", {
+  writable: true,
+  enumerable: true,
+  configurable: true,
+});
+
+// The '__proto__' property on the groups object is not special,
+// and does not affect the [[Prototype]] of the resulting groups object.
+let {groups} = /(?<__proto__>.)/.exec("a");
+assert.sameValue("a", groups.__proto__);
+assert.sameValue(null, Object.getPrototypeOf(groups));
diff --git a/test/built-ins/RegExp/named-groups/groups-properties.js b/test/built-ins/RegExp/named-groups/groups-properties.js
index 6d7b46ec63549a88e0264bb57a6c69cb91994415..8cf12152ce42bbf3238c3ffa50a701d86f25bfad 100644
--- a/test/built-ins/RegExp/named-groups/groups-properties.js
+++ b/test/built-ins/RegExp/named-groups/groups-properties.js
@@ -31,9 +31,3 @@ assert.sameValue(counter, 0);
 verifyWritable(groups, "x");
 verifyEnumerable(groups, "x");
 verifyConfigurable(groups, "x");
-
-// The '__proto__' property on the groups object is not special,
-// and does not affect the [[Prototype]] of the resulting groups object.
-groups = /(?<__proto__>a)/u.exec("a").groups;
-assert.sameValue("a", groups.__proto__);
-assert.sameValue(null, Object.getPrototypeOf(groups));