chromium/third_party/blink/web_tests/hittesting/paint-containment-hittest.html

<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<style>
div {
    width: 100px;
    height: 100px;
    background-color: green;
}
div > div {
    background-color: red;
}
.paintContainment {
    contain: paint;
    margin: 10px;
}
#transform {
    transform: translateZ(0) translateX(100px);
}
#absolute {
    position: absolute;
    top: 0px;
    left: 100px;
}
#fixed {
    position: fixed;
    top: 0px;
    left: 100px;
}
</style>
<body id="body">
    <p>Hit testing should respect clips established by contain: paint.</p>
<div id="containTransform" class="paintContainment">
    <div id="transform"></div>
</div>
<div id="containAbsolute" class="paintContainment">
    <div id="absolute"></div>
</div>
<div id="containFixed" class="paintContainment">
    <div id="fixed"></div>
</div>
<script>
function hitTestCenterOfElement(elementID)
{
    var element = document.getElementById(elementID);
    var rect = element.getBoundingClientRect();
    var centerX = rect.left + (rect.width / 2);
    var centerY = rect.top + (rect.height / 2);
    return document.elementFromPoint(centerX, centerY).id;
}

test(function(t)
{
    assert_equals(hitTestCenterOfElement("containTransform"), "containTransform");
    assert_equals(hitTestCenterOfElement("containAbsolute"), "containAbsolute");
    assert_equals(hitTestCenterOfElement("containFixed"), "containFixed");

    assert_equals(hitTestCenterOfElement("transform"), "body");
    assert_equals(hitTestCenterOfElement("absolute"), "body");
    assert_equals(hitTestCenterOfElement("fixed"), "body");
}, "Hit testing should respect clips established by contain: paint.");
</script>