Using Apache Wicket 1.4:
I have a panel that calls some setup Javascript in its renderHead() ajax callback:
public SimplePanel(String id) {
super(id);
add(JavascriptPackageResource.getHeaderContribution(SimplePanel.class, "SimplePanel.js"));
AbstractDefaultAjaxBehavior b = new AbstractDefaultAjaxBehavior() {
private static final long serialVersionUID = 1L;
@Override public void renderHead(IHeaderResponse response) {
super.renderHead(response);
response.renderOnDomReadyJavascript("init()");
}
@Override protected void respond(AjaxRequestTarget target) {
}
};
add(b);
}
Javascript:
function init() {
var div = document.getElementById("data");
div.innerHTML = "XXXuniqueXXX";
}
I’m trying to test this using WicketTester:
Panel panel = tester.startPanel(new TestPanelSource() {
public Panel getTestPanel(String panelId) {
return new SimplePanel(panelId);
}
});
tester.assertNoErrorMessage();
tester.assertContains("XXXuniqueXXX");
The renderOnDomReadyJavascript("init()") method is called fine, but init() itself never seems to trigger.
What do I need to call in order to get this DomReady conditional to trigger?
WicketTester just emulates a client (a browser). It doesn’t execute any JavaScript. All you can do with WicketTester is to assert that the content is generated. If you need to execute the JavaScript then you need to use something like http://wicketpagetest.sourceforge.net/ or http://seleniumhq.org/