<!DOCTYPE HTML>
<meta charset=utf-8>
<title>Test that Reporting-Endpoints report received for absolute path endpoint.</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src='resources/report-helper.js'></script>
<p id="error">No error</p>
<script>
  async_test(function (test) {
    var observer = new ReportingObserver(function (reports) {
      test.step(function () {
        // Reports should be received in the same order that they were
        // generated.
        assert_equals(reports.length, 1);
        assert_equals(reports[0].type, "deprecation");
      });
      test.done();
    });
    observer.observe();
  }, "report generated");
</script>
<script>window.webkitStorageInfo;</script>
<script>
  const base_url = `${location.protocol}//${location.host}`;
  const endpoint = `${base_url}/reporting/resources/report.py`;
  const id = '8106c1d6-55f7-4c82-a8e1-fabc59f890f8';
  promise_test(async t => {
    await wait(3000);
    const reports = await pollReports(endpoint, id);
    checkReportExists(reports, 'deprecation', location.href);
  }, "Reporting-Endpoints defined endpoint received reports.");
</script>
</body>

</html>
