<!DOCTYPE html>
<!--
tests generated by:
  https://github.com/cvazac/generate-server-timing-tests
-->

<head>
    <meta charset='utf-8' />
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script src="/common/performance-timeline-utils.js"></script>
    <script>
      setup({explicit_done: true})
      const tests = []
      const urlToIndex = {}
      function testServerTiming(script, expectedResults) {
        const url = script.src
        tests[urlToIndex[url]] = {url, expectedResults}
      }
      function runTests() {
        tests.forEach(function({url, expectedResults}) {
          const {serverTiming} = performance.getEntriesByName(url)[0]
          const fileName = url.substring(url.lastIndexOf('/') + 1)

          test_equals(serverTiming.length, expectedResults.length, `${fileName} - count (${serverTiming.length} ?== ${expectedResults.length})`)

          expectedResults.forEach(function(expectedResult, i) {
            const dur = expectedResult.dur || 0
            const desc = expectedResult.desc || ''
            const index = expectedResults.length === 1 ? '' : `[${i}].`
            const actual = serverTiming[i]
            if (actual === undefined) {
              // Protect against more expected results than actual results.
              return
            }
            test_equals(expectedResult.name, actual.name,
                `${fileName} - ${index}name (${expectedResult.name} ?== ${actual.name})`)
            test_equals(dur, actual.duration,
                `${fileName} - ${index}duration (${dur} ?== ${actual.duration})`)
            test_equals(desc, actual.description,
                `${fileName} - ${index}description (${desc} ?== ${actual.description})`)
          })
        })
        done()
      }
      for (let i = 0; i <= 84; i++) {
        const script = document.createElement('script')
        script.src = `./resources/parsing/${i}.js`
        document.getElementsByTagName('head')[0].appendChild(script)
        urlToIndex[script.src] = i
      }
      delayedLoadListener(runTests)
    </script>
</head>
