<html>
<body>
<script>
if (window.testRunner)
    testRunner.dumpAsText();

window.onload = function() {
    document.getElementById('results').innerHTML =
        document.getElementsByTagName('img')[0].width + 'x' +
        document.getElementsByTagName('img')[0].height + ' ' +
        document.getElementsByTagName('img')[1].width + 'x' +
        document.getElementsByTagName('img')[1].height + ' ' +
        document.getElementsByTagName('img')[2].width + 'x' +
        document.getElementsByTagName('img')[2].height;
}
</script>
<img src="resources/test.webp">
<img src="resources/test2.webp">
<img src="resources/test3.webp">
<div id="results"></div>
</body>
</html>
