<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test.js"></script>
</head>
<body>

<h1 class="output" id="h1">original text</h1>
<h2 class="output" id="h2">original text</h2>
<h3 class="output" id="h3">original text</h3>
<div role="heading" class="output" id="divheading">original text</div>

<script>
    description("This tests that changing the text in headings by four different DOM methods, results on the corresponding text being retrieved via the accessibility property.");

    var ids = [ "h1", "h2", "h3", "divheading" ];

    function setValue(value) {
        [...document.querySelectorAll('.output')].forEach((node) => {
            node[value] = `${value}`;
        });
    }

    function setFirstChildData(value) {
        [...document.querySelectorAll('.output')].forEach((node) => {
            node.firstChild.data = `${value}`;
        });
    }

    function checkAXLabels() {
        ids.forEach((id) => {
            debug(id);
            axElement = accessibilityController.accessibleElementById(id);
            debug(axElement.stringValue);
            debug(axElement.childAtIndex(0).stringValue);
        });
    }

    if (window.accessibilityController) {
        // Log original text.
        checkAXLabels();

        setValue("innerHTML");
        checkAXLabels();

        setValue("innerText");
        checkAXLabels();

        setValue("textContent");
        checkAXLabels();

        setFirstChildData("firstChild.data");
        checkAXLabels();
    }
</script>
</body>
</html>
