<html>
<head>
<script>
var doMutation = function() {
  var text_only_region = document.getElementById("text_only");
  var to_remove = document.getElementById("text_only_to_remove");
  text_only_region.removeChild(to_remove);
  text_only_region.appendChild(document.createTextNode("Irrelevant"))

  var additions_only_region = document.getElementById("additions_only");
  to_remove = document.getElementById("additions_only_to_remove");
  additions_only_region.removeChild(to_remove);

  var to_mutate = document.getElementById("additions_only_to_mutate");
  to_mutate.firstChild.textContent = "New Content";

  window.setTimeout(function() { window.close(); } );
}
window.addEventListener("load", doMutation);
</script>
</head>
<body>
<div id="text_only" aria-live="polite" aria-relevant="text" aria-atomic="false">
  Some contents
  <div id="text_only_to_remove">
    Contents to be removed
  </div>
<div>
<div id="additions_only" aria-live="polite" aria-relevant="additions" aria-atomic="false">
  Some contents
  <div id="additions_only_to_remove">
    Contents to be removed
  </div>
  <div id="additions_only_to_mutate">
    Old text contents
  </div>
<div>
</body>
</html>
