<html>
<head>
  <title>failures-page-sk demo</title>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
  <script src="../../node_modules/native-promise-only/npo.js"></script>
  <script src="bower_components/webcomponentsjs/webcomponents-lite.js"></script>
  <script src="bower_components/page/page.js"></script>
  <script src="../common/js/common.js"></script>
  <script src="../js/gold.js"></script>
  <script src="bower_components/sinonjs/sinon.js"></script>
  <script src="testdata.js"></script>
  <script>
    var server = sinon.fakeServer.create();
    server.autoRespond = true;
    server.autoRespondAfter = 1000;

    server.respondWith("GET", "/json/failure", function(request) {
      request.respond(200, {"Content-Type":"application/json"},
        JSON.stringify(testdata.failures));
    });

    server.respondWith("POST", "/json/failure/clear", function(request) {
      request.respond(200, {"Content-Type":"application/json"},
        JSON.stringify(testdata.failures));
    });

  </script>

  <link rel="import" href="failures-page-sk.html">

</head>
<body>
  <failures-page-sk></failures-page-sk>
  <script type="text/javascript" charset="utf-8">
      $$$('failures-page-sk').pageSelected();
  </script>
</body>
</html>
