diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/getOwnPropertyDescriptor.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/getOwnPropertyDescriptor.js
new file mode 100644
index 0000000000000000000000000000000000000000..4d202dbd2c33cd3b9514423a4d47226c542acb54
--- /dev/null
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/getOwnPropertyDescriptor.js
@@ -0,0 +1,17 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 26.1.7
+description: >
+  Reflect.getOwnPropertyDescriptor is configurable, writable and not enumerable.
+info: >
+  26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
+
+  17 ECMAScript Standard Built-in Objects
+
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(Reflect, 'getOwnPropertyDescriptor');
+verifyWritable(Reflect, 'getOwnPropertyDescriptor');
+verifyConfigurable(Reflect, 'getOwnPropertyDescriptor');
diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/length.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/length.js
new file mode 100644
index 0000000000000000000000000000000000000000..6335bf455ad5cbad27477c26dd51b6b5d15fd289
--- /dev/null
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/length.js
@@ -0,0 +1,17 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 26.1.7
+description: >
+  Reflect.getOwnPropertyDescriptor.length value and property descriptor
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(
+  Reflect.getOwnPropertyDescriptor.length, 2,
+  'The value of `Reflect.getOwnPropertyDescriptor.length` is `2`'
+);
+
+verifyNotEnumerable(Reflect.getOwnPropertyDescriptor, 'length');
+verifyNotWritable(Reflect.getOwnPropertyDescriptor, 'length');
+verifyConfigurable(Reflect.getOwnPropertyDescriptor, 'length');
diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/name.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/name.js
new file mode 100644
index 0000000000000000000000000000000000000000..d8806484ca398aaf3131af0d8df15f263eceda95
--- /dev/null
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/name.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 26.1.7
+description: >
+  Reflect.getOwnPropertyDescriptor.name value and property descriptor
+info: >
+  26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
+
+  17 ECMAScript Standard Built-in Objects
+
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(
+  Reflect.getOwnPropertyDescriptor.name, 'getOwnPropertyDescriptor',
+  'The value of `Reflect.getOwnPropertyDescriptor.name` is `"getOwnPropertyDescriptor"`'
+);
+
+verifyNotEnumerable(Reflect.getOwnPropertyDescriptor, 'name');
+verifyNotWritable(Reflect.getOwnPropertyDescriptor, 'name');
+verifyConfigurable(Reflect.getOwnPropertyDescriptor, 'name');
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
new file mode 100644
index 0000000000000000000000000000000000000000..c0a905319fc1621711379e83a5355b3ba6b3e951
--- /dev/null
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/return-abrupt-from-property-key.js
@@ -0,0 +1,24 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 26.1.7
+description: >
+  Return abrupt from ToPropertyKey(propertyKey)
+info: >
+  26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
+
+  ...
+  2. Let key be ToPropertyKey(propertyKey).
+  3. ReturnIfAbrupt(key).
+  ...
+---*/
+
+var p = {
+  toString: function() {
+    throw new Test262Error();
+  }
+};
+
+assert.throws(Test262Error, function() {
+  Reflect.getOwnPropertyDescriptor({}, 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
new file mode 100644
index 0000000000000000000000000000000000000000..b1a7f771eefa72352cdd6b0d6aa76052c6c47556
--- /dev/null
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/return-abrupt-from-result.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 26.1.7
+description: >
+  Return abrupt result from getting the property descriptor.
+info: >
+  26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
+
+  ...
+  4. Let desc be target.[[GetOwnProperty]](key).
+  5. ReturnIfAbrupt(desc).
+  ...
+features: [Proxy]
+---*/
+
+var o1 = {};
+var p = new Proxy(o1, {
+  getOwnPropertyDescriptor: function() {
+    throw new Test262Error();
+  }
+});
+
+assert.throws(Test262Error, function() {
+  Reflect.getOwnPropertyDescriptor(p, 'p1');
+});
diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/return-from-accessor-descriptor.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/return-from-accessor-descriptor.js
new file mode 100644
index 0000000000000000000000000000000000000000..b6f1ed349f9cda83c4a25d6068cc0b677f01cc9a
--- /dev/null
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/return-from-accessor-descriptor.js
@@ -0,0 +1,56 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 26.1.7
+description: >
+  Return a property descriptor object as an accessor descriptor.
+info: >
+  26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
+
+  ...
+  4. Let desc be target.[[GetOwnProperty]](key).
+  5. ReturnIfAbrupt(desc).
+  6. Return FromPropertyDescriptor(desc).
+
+  6.2.4.4 FromPropertyDescriptor ( Desc )
+
+  ...
+  2. Let obj be ObjectCreate(%ObjectPrototype%).
+  ...
+  4. If Desc has a [[Value]] field, then
+    a. Perform CreateDataProperty(obj, "value", Desc.[[Value]]).
+  5. If Desc has a [[Writable]] field, then
+    a. Perform CreateDataProperty(obj, "writable", Desc.[[Writable]]).
+  6. If Desc has a [[Get]] field, then
+    a. Perform CreateDataProperty(obj, "get", Desc.[[Get]]).
+  7. If Desc has a [[Set]] field, then
+    a. Perform CreateDataProperty(obj, "set", Desc.[[Set]])
+  8. If Desc has an [[Enumerable]] field, then
+    a. Perform CreateDataProperty(obj, "enumerable", Desc.[[Enumerable]]).
+  9. If Desc has a [[Configurable]] field, then
+    a. Perform CreateDataProperty(obj , "configurable", Desc.[[Configurable]]).
+  ...
+  11. Return obj.
+
+includes: [compareArray.js]
+---*/
+
+var o1 = {};
+var fn = function() {};
+Object.defineProperty(o1, 'p', {
+  get: fn,
+  configurable: true
+});
+
+var result = Reflect.getOwnPropertyDescriptor(o1, 'p');
+
+assert(
+  compareArray(
+    Object.keys(result),
+    ['get', 'set', 'enumerable', 'configurable']
+  )
+);
+assert.sameValue(result.enumerable, false);
+assert.sameValue(result.configurable, true);
+assert.sameValue(result.get, fn);
+assert.sameValue(result.set, undefined);
diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/return-from-data-descriptor.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/return-from-data-descriptor.js
new file mode 100644
index 0000000000000000000000000000000000000000..849797fa2b7f0bb8bcf08d17240267127bf408ea
--- /dev/null
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/return-from-data-descriptor.js
@@ -0,0 +1,32 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 26.1.7
+description: >
+  Return a property descriptor object as a data descriptor.
+info: >
+  26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
+
+  ...
+  4. Let desc be target.[[GetOwnProperty]](key).
+  5. ReturnIfAbrupt(desc).
+  6. Return FromPropertyDescriptor(desc).
+includes: [compareArray.js]
+---*/
+
+var o1 = {
+  p: 'foo'
+};
+
+var result = Reflect.getOwnPropertyDescriptor(o1, 'p');
+
+assert(
+  compareArray(
+    Object.keys(result),
+    ['value', 'writable', 'enumerable', 'configurable']
+  )
+);
+assert.sameValue(result.value, 'foo');
+assert.sameValue(result.enumerable, true);
+assert.sameValue(result.configurable, true);
+assert.sameValue(result.writable, true);
diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/symbol-property.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/symbol-property.js
new file mode 100644
index 0000000000000000000000000000000000000000..a1416bccf24c507c5be2f70d5d273ee36121b9b8
--- /dev/null
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/symbol-property.js
@@ -0,0 +1,39 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 26.1.7
+description: >
+  Use a symbol value on property key.
+info: >
+  26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
+
+  ...
+  2. Let key be ToPropertyKey(propertyKey).
+  ...
+
+  7.1.14 ToPropertyKey ( argument )
+
+  ...
+  3. If Type(key) is Symbol, then
+    a. Return key.
+  ...
+includes: [compareArray.js]
+features: [Symbol]
+---*/
+
+var o = {};
+var s = Symbol('42');
+o[s] = 42;
+
+var result = Reflect.getOwnPropertyDescriptor(o, s);
+
+assert(
+  compareArray(
+    Object.keys(result),
+    ['value', 'writable', 'enumerable', 'configurable']
+  )
+);
+assert.sameValue(result.value, 42);
+assert.sameValue(result.enumerable, true);
+assert.sameValue(result.configurable, true);
+assert.sameValue(result.writable, true);
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
new file mode 100644
index 0000000000000000000000000000000000000000..7ab25e723a3817e6b82a5384b053e3ec95498efe
--- /dev/null
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/target-is-not-object-throws.js
@@ -0,0 +1,28 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 26.1.7
+description: >
+  Throws a TypeError if target is not an Object.
+info: >
+  26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
+
+  1. If Type(target) is not Object, throw a TypeError exception.
+  ...
+---*/
+
+assert.throws(TypeError, function() {
+  Reflect.getOwnPropertyDescriptor(1, 'p');
+});
+
+assert.throws(TypeError, function() {
+  Reflect.getOwnPropertyDescriptor(null, 'p');
+});
+
+assert.throws(TypeError, function() {
+  Reflect.getOwnPropertyDescriptor(undefined, 'p');
+});
+
+assert.throws(TypeError, function() {
+  Reflect.getOwnPropertyDescriptor('', 'p');
+});
diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/target-is-symbol-throws.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/target-is-symbol-throws.js
new file mode 100644
index 0000000000000000000000000000000000000000..9d1bae34df2e5c2b6243bd8e5c4c8eeebac74e8b
--- /dev/null
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/target-is-symbol-throws.js
@@ -0,0 +1,17 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 26.1.7
+description: >
+  Throws a TypeError if target is a Symbol
+info: >
+  26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
+
+  1. If Type(target) is not Object, throw a TypeError exception.
+  ...
+features: [Symbol]
+---*/
+
+assert.throws(TypeError, function() {
+  Reflect.getOwnPropertyDescriptor(Symbol(1), 'p');
+});
diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/undefined-own-property.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/undefined-own-property.js
new file mode 100644
index 0000000000000000000000000000000000000000..3313063ae10b438f0320b27290e517e77d67e89b
--- /dev/null
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/undefined-own-property.js
@@ -0,0 +1,23 @@
+// Copyright (C) 2015 Leonardo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 26.1.7
+description: >
+  Return undefined for an non existing own property.
+info: >
+  26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
+
+  ...
+  4. Let desc be target.[[GetOwnProperty]](key).
+  5. ReturnIfAbrupt(desc).
+  6. Return FromPropertyDescriptor(desc).
+
+  6.2.4.4 FromPropertyDescriptor ( Desc )
+
+  1. If Desc is undefined, return undefined.
+---*/
+
+var o = Object.create({p: 1});
+
+var result = Reflect.getOwnPropertyDescriptor(o, 'p');
+assert.sameValue(result, undefined);
diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/undefined-property.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/undefined-property.js
new file mode 100644
index 0000000000000000000000000000000000000000..f2fbce7811cd3789b09c38d43430749366b19834
--- /dev/null
+++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/undefined-property.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 26.1.7
+description: >
+  Return undefined for an undefined property.
+info: >
+  26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
+
+  ...
+  4. Let desc be target.[[GetOwnProperty]](key).
+  5. ReturnIfAbrupt(desc).
+  6. Return FromPropertyDescriptor(desc).
+
+  6.2.4.4 FromPropertyDescriptor ( Desc )
+
+  1. If Desc is undefined, return undefined.
+---*/
+
+var result = Reflect.getOwnPropertyDescriptor({}, undefined);
+assert.sameValue(result, undefined);