diff --git a/test/language/subclassing/Error/message-property-assignment.js b/test/language/subclassing/Error/message-property-assignment.js
new file mode 100644
index 0000000000000000000000000000000000000000..6a4c00dc4bdd41fd9a3b3e87c68ef1ec9530c385
--- /dev/null
+++ b/test/language/subclassing/Error/message-property-assignment.js
@@ -0,0 +1,36 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 19.5.1.1
+description: >
+  A new instance has the message property if created with a parameter
+info: >
+  19.5.1.1 Error ( message )
+
+  ...
+  4. If message is not undefined, then
+    a. Let msg be ToString(message).
+    b. ReturnIfAbrupt(msg).
+    c. Let msgDesc be the PropertyDescriptor{[[Value]]: msg, [[Writable]]: true,
+    [[Enumerable]]: false, [[Configurable]]: true}.
+    d. Let status be DefinePropertyOrThrow(O, "message", msgDesc).
+  ...
+includes: [propertyHelper.js]
+
+---*/
+
+class Err extends Error {}
+
+Err.prototype.message = 'custom-error';
+
+var err1 = new Err('foo 42');
+assert.sameValue(err1.message, 'foo 42');
+assert(err1.hasOwnProperty('message'));
+
+verifyWritable(err1, 'message');
+verifyNotEnumerable(err1, 'message');
+verifyConfigurable(err1, 'message');
+
+var err2 = new Err();
+assert.sameValue(err2.hasOwnProperty('message'), false);
+assert.sameValue(err2.message, 'custom-error');
diff --git a/test/language/subclassing/Error/regular-subclassing.js b/test/language/subclassing/Error/regular-subclassing.js
new file mode 100644
index 0000000000000000000000000000000000000000..2a073dc7e76be0c3e6103e8d7ff6a1a7cdf93793
--- /dev/null
+++ b/test/language/subclassing/Error/regular-subclassing.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 19.5.1
+description: Subclassing the Error object
+info: >
+  19.5.1 The Error Constructor
+
+  ...
+  The Error constructor is designed to be subclassable. It may be used as the
+  alue of an extends clause of a class definition. Subclass constructors that
+  intend to inherit the specified Error behaviour must include a super call to
+  the Error constructor to create and initialize subclass instances with a
+  [[ErrorData]] internal slot.
+---*/
+
+class CustomError extends Error {}
+
+var err = new CustomError('foo 42');
+
+assert.sameValue(err.message, 'foo 42');
+assert.sameValue(err.name, 'Error');
diff --git a/test/language/subclassing/Error/super-must-be-called.js b/test/language/subclassing/Error/super-must-be-called.js
new file mode 100644
index 0000000000000000000000000000000000000000..2a83c18607c935dda67c67b91e92f78612ea9e78
--- /dev/null
+++ b/test/language/subclassing/Error/super-must-be-called.js
@@ -0,0 +1,23 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 19.5.1
+description: Super need to be called to initialize internals
+info: >
+  19.5.1 The Error Constructor
+
+  ...
+  The Error constructor is designed to be subclassable. It may be used as the
+  alue of an extends clause of a class definition. Subclass constructors that
+  intend to inherit the specified Error behaviour must include a super call to
+  the Error constructor to create and initialize subclass instances with a
+  [[ErrorData]] internal slot.
+---*/
+
+class CustomError extends Error {
+  constructor() {}
+}
+
+assert.throws(ReferenceError, function() {
+  new CustomError('foo');
+});