<script>

var createNewElement = function (tag, id, text) {
    var result = document.createElement(tag);
    result.setAttribute('id',id);
    result.innerHTML = text;
    return result;
};

var runTests = function () {
    document.getElementById("dt1").appendChild(createNewElement("summary", "new1", "new 1"));
    document.getElementById("dt1").appendChild(createNewElement("summary", "new2", "new 2"));

    if (!window.testRunner || !window.eventSender)
        return;
    eventSender.mouseMoveTo(2, 2);
    eventSender.mouseDown();
    eventSender.mouseUp();
};

</script>

<body style="margin: 0px" onload="runTests()">
    <details id="dt1"></details>
</body>

