Автоматическое тестирование браузерных dart-приложений с помощью DumpRenderTree

В статье Headless Browser Testing: Dart, DumpRenderTree, drone.io автор Kevin Moore приводит пример того, как можно выполнять браузерное тестирование веб-приложений полностью автоматически, только с помощью консольных инструментов. Для этих целей он предлагает использовать специальную утилиту DumpRenderTree.

Эта утилита входит в состав WebKit, и присутствует в последних сборках среды разработки "Dart Editor". Она позволяет получать в текстовом виде результат обработки html-страницы и задействованных на ней скриптов. В качестве результата, по умолчанию, выдается дамп dom-иерархии элементов документа.

Например, для простой странички, где после загрузки содержимое элемента h1 меняется на с "TEST" на "OK":

<html>
<script>
window.onload = function() {
	var element = document.getElementById('TEST');
	element.innerHTML = 'OK';
};
</script>
<body>
<h1 id="TEST">TEST</h1>
</body>
</html>

Результат выполнения команды DumpRenderTree.exe test.html будет примерно следующим:

Content-Type: text/plain
layer at (0,0) size 800x600
  RenderView at (0,0) size 800x600
layer at (0,0) size 800x600
  RenderBlock {HTML} at (0,0) size 800x600
    RenderBody {BODY} at (8,8) size 784x571
      RenderBlock {H1} at (0,0) size 784x37
        RenderText {#text} at (0,0) size 51x36
          text run at (0,0) width 51: "OK"
#EOF
#EOF

Кроме этого, при выполнении страницы с помощью DumpRenderTree.exe определяется дополнительный объект window.testRunner с помощью которого можно управлять некоторыми настройками выполнения. Так с помощью метода testRunner.dumpAsText() можно установить вывод только текста html-страницы:

<html>
<script>
window.onload = function() {
	var element = document.getElementById('TEST');
	element.innerHTML = 'OK';
};
// если выполняем скрипт в среде DumpRenderTree
if (window.testRunner) {
    // установим вывод только текста
    testRunner.dumpAsText();
}
</script>
<body>
<h1 id="TEST">TEST</h1>
</body>
</html>

Результат выполнения команды DumpRenderTree.exe test.html будет следующим:

Content-Type: text/plain
OK
#EOF
#EOF

Подробнее о свойствах и методах window.testRunner можно прочитать на сайте WebKit - http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree.