diff --git a/node_modules/dialog-polyfill/test.html b/node_modules/dialog-polyfill/test.html
new file mode 100644
index 0000000..03e9b0b
--- /dev/null
+++ b/node_modules/dialog-polyfill/test.html
@@ -0,0 +1,49 @@
+<!--
+ Copyright 2015 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!DOCTYPE html>
+<meta charset="UTF-8" />
+<link rel="stylesheet" href="node_modules/mocha/mocha.css" />
+<script src="node_modules/mocha/mocha.js"></script>
+<script src="node_modules/chai/chai.js"></script>
+<link rel="stylesheet" type="text/css" href="dist/dialog-polyfill.css" />
+<script src="dist/dialog-polyfill.js"></script>
+<script>
+
+var assert = chai.assert;
+mocha.setup({ ui: 'tdd' });
+
+(function() {
+  var pageError = null;
+
+  window.addEventListener('error', function(event) {
+    pageError = event.filename + ':' + event.lineno + ' ' + event.message;
+  });
+
+  window.addEventListener('load', function() {
+    if (pageError) {
+      suite('page-script-errors', function() {
+        test('no script errors on page', function() {
+          assert.fail(null, null, pageError);
+        });
+      });
+    }
+    mocha.run();
+  });
+})();
+
+</script>
+<div id="mocha"></div>
+<script src="suite.js"></script>
