<!doctype html>
<html>
<head>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<img src="resources/status-code.py?status=200">
<img src="resources/status-code.py?status=307">
<img src="resources/status-code.py?status=404">
<img src="resources/status-code.py?status=502">
<script src="resources/status-code.py?status=200&script=1"></script>
<script src="resources/status-code.py?status=307&script=1"></script>
<script src="resources/status-code.py?status=404&script=1"></script>
<script src="resources/status-code.py?status=502&script=1"></script>
<script>
async_test(t => {
  window.addEventListener("load", t.step_func_done(() => {
    const images = document.getElementsByTagName("img");
    for (let img of images) {
      assert_greater_than(performance.getEntriesByName(img.src).length, 0, img.src);
    }
    const scripts = document.getElementsByTagName("script");
    let noSrcScriptFound = false;
    for (let script of scripts) {
      if (script.src) {
        assert_greater_than(performance.getEntriesByName(script.src).length, 0, script.src);
      } else {
        // Ignore this script, which has no src value. There should only be one such script.
        assert_false(noSrcScriptFound);
        noSrcScriptFound = true;
      }
    }
  }));
}, "Make sure all status codes are reported");
</script>
