Canoo Webtest bietet seit einiger Zeit auch (begrenzte) Unterstützung für JavaScript. Das ist gerade zum Testen von Web 2.0 Anwendungen interessant, kann jedoch auch zu sehr merkwürdigen Fehlern führen.

In meinem Fall quittierte Webtest die Arbeit mit der hilfreichen Meldung
com.gargoylesoftware.htmlunit.ScriptException: Wrapped java.lang.NullPointerException
Der Grund für die NullPointerException im Webtest war dann auch (relativ) schnell identifiziert:
In der zu testenden Anwendung war ein wenig JavaScript eingebaut, genau genommen in einem Formularfeld, dass ich per Webtest ausfülle. Dabei wird per JavaScript der Blur Event abgefangen und dann „this.blur()“ augerufen:
<input type="text" name="mail" onblur="this.blur();" size="25" />

Mir ist der Sinn davon zwar schleierhaft – jedoch bringt es Webtest dazu die Arbeit zu verweigern. (Oder HTMLUnit, ich habe das nicht weiter analysiert.)

Eine Lösung wäre nun das JavaScript Fragment aus der zu testenden Anwendung zu entfernen – doch die wollte ich nicht ändern. Somit bleibt nur den standardmäßig aktivierten JavaScript Support in Webtest für diesen Step zu deaktivieren. (Zum Glück handelt es sich um eine Web 0.9 Anwendung die kein JavaScript benötigt.)

Dafür bietet Webtest einen  „Extension Step“ an: enableJavaScript. Damit könnte die Konfiguration so aussehen:


<webtest name="test without javascript">

<!-- import global config -->
&hostConfig;
<steps>
<!-- crashes with javascript -->
<enableJavaScript description="Disable javascript to avoid bugs" enable="false"/>

Wenn ich den Fehler genauer eingrenzen kann, wäre eine Fehlermeldung an Webtest oder HTTPUnit wohl angebracht.