test_bug1832110.html (2903B)
1 <!DOCTYPE HTML> 2 <title>Test for Bug 1832110</title> 3 <style> 4 :root { 5 --bw: 1px; 6 } 7 8 div { 9 display: inline-block; 10 } 11 12 table { 13 border-collapse: collapse; 14 } 15 16 td { 17 border: var(--bw) solid black; 18 line-height: 0; 19 padding: 0; 20 } 21 22 span { 23 display: inline-block; 24 width: 10px; 25 height: 10px; 26 background: grey; 27 } 28 29 .hide { 30 display: none; 31 } 32 </style> 33 <script src="/tests/SimpleTest/SimpleTest.js"></script> 34 <script src="/tests/SimpleTest/WindowSnapshot.js"></script> 35 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 36 <script class="testbody" type="text/javascript"> 37 function set_td_border(width) { 38 document.documentElement.style.setProperty("--bw", width + "px"); 39 } 40 41 function raf() { 42 return new Promise(resolve => { 43 requestAnimationFrame(resolve); 44 }); 45 } 46 47 async function show_table(table, other) { 48 // Don't tempt subpixel snapping - try to position each table exactly the same. 49 table.classList.remove("hide"); 50 other.classList.add("hide"); 51 getComputedStyle(table).getPropertyValue("display"); 52 await raf(); 53 } 54 55 async function run_test(relativeZoom, width) { 56 SpecialPowers.setFullZoom(window, relativeZoom); 57 set_td_border(width); 58 show_table(emptyrows, normal); 59 const s1 = await snapshotRect(window, emptyrows.getBoundingClientRect()); 60 show_table(normal, emptyrows); 61 const s2 = await snapshotRect(window, normal.getBoundingClientRect()); 62 assertSnapshots(s1, s2, true, null, "emptyrows", "normal " + relativeZoom + " " + width); 63 } 64 65 SimpleTest.waitForExplicitFinish(); 66 const zoomsToTest = [ 67 100, 68 110, 69 120, 70 130, 71 140, 72 150, 73 200, 74 250, 75 300, 76 ]; 77 const originalZoom = SpecialPowers.getFullZoom(window); 78 79 const widthsToTest = [ 80 1, 81 3, 82 7, 83 11, 84 23, 85 ]; 86 for (let i = 0; i < zoomsToTest.length; ++i) { 87 let relativeZoom = originalZoom * zoomsToTest[i] / 100; 88 for (let j = 0; j < widthsToTest.length; ++j) { 89 add_task(async () => { await run_test(relativeZoom, widthsToTest[j]); }); 90 } 91 } 92 add_task(async () => { SpecialPowers.setFullZoom(window, originalZoom); }); 93 </script> 94 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1832110">Mozilla Bug 1832110</a><br> 95 <div id="emptyrows" class="hide"> 96 <table> 97 <tr><td><span></span></td><td><span></span></td><td><span></span></td></tr> 98 <tr></tr> 99 <tr><td><span></span></td><td><span></span></td><td><span></span></td></tr> 100 <tr></tr> 101 <tr><td><span></span></td><td><span></span></td><td><span></span></td></tr> 102 <tr></tr> 103 <tr><td><span></span></td><td><span></span></td><td><span></span></td></tr> 104 </table> 105 </div><div id="normal" class="hide"> 106 <table> 107 <tr><td><span></span></td><td><span></span></td><td><span></span></td></tr> 108 <tr><td><span></span></td><td><span></span></td><td><span></span></td></tr> 109 <tr><td><span></span></td><td><span></span></td><td><span></span></td></tr> 110 <tr><td><span></span></td><td><span></span></td><td><span></span></td></tr> 111 </table> 112 </div>