[Webtest] Re: OOM Error on some pages with JavaScript
Matt Raible
webtest@lists.canoo.com
Wed, 11 Jan 2006 10:58:10 -0700
Nevermind, got it figured out:
<script type=3D"text/javascript">
- var f =3D document.forms['userProfile'];
- f.elements['userProfile:_link_hidden_'].value=3D'userProfile:edit';
- f.submit();
+ function submitForm() {
+ var f =3D document.forms['userProfile'];
+ f.elements['userProfile:_link_hidden_'].value=3D'userProfile:edit'=
;
+ f.submit();
+ }
+ window.onload=3DsubmitForm;
</script>
</f:view>
On 1/11/06, Matt Raible <mraible@gmail.com> wrote:
> I've recently upgraded from build574 to build1108. I had to pull the
> latest CVS fro htmlunit to get Prototype (the JavaScript library)
> support. Now I'm experiencing a strange issue with some JSF pages I'm
> testing. Basically, webtest just hangs when it gets to the page, and
> then runs out of memory.
>
> EditUser:
> [webtest] 2006-01-11 10:00:12,867 ERROR com.canoo.webtest.steps.Step - =
Canno
> handle unexpected exception in step ClickLink at C:\Source\appfuse-jsf\te=
st\we
> web-tests.xml:74: with (label=3D"Edit Profile", description=3D"click Edi=
t Profile
> ink", stepType=3D"clicklink")
> [webtest] java.lang.OutOfMemoryError: Java heap space
>
> BUILD FAILED
> C:\Source\appfuse-jsf\build.xml:533: The following error occurred while e=
xecut
> g this line:
> C:\Source\appfuse-jsf\test\web\web-tests.xml:70: Test failed.
> Exception raised: com.canoo.webtest.engine.StepExecutionException: Unexpe=
cted
> ception caught: java.lang.OutOfMemoryError: Java heap space, Step: ClickL=
ink a
> C:\Source\appfuse-jsf\test\web\web-tests.xml:74: with (label=3D"Edit Pro=
file",
> scription=3D"click Edit Profile link", stepType=3D"clicklink")com.canoo.w=
ebtest.en
> ne.StepExecutionException: Unexpected exception caught: java.lang.OutOfMe=
moryE
> or: Java heap space, Step: ClickLink at C:\Source\appfuse-jsf\test\web\we=
b-tes
> .xml:74: with (label=3D"Edit Profile", description=3D"click Edit Profile=
link", s
> pType=3D"clicklink")
> at com.canoo.webtest.steps.Step.handleUnexpectedException(Step.ja=
va:56
>
> at com.canoo.webtest.steps.AbstractBrowserAction.handleUnexpected=
Excep
> on(AbstractBrowserAction.java:106)
> at com.canoo.webtest.steps.request.TargetHelper.protectedGoto(Tar=
getHe
> er.java:108)
> at com.canoo.webtest.steps.request.AbstractTargetAction.gotoTarge=
t(Abs
> actTargetAction.java:106)
> at com.canoo.webtest.steps.request.AbstractTargetAction.doExecute=
(Abst
> ctTargetAction.java:78)
> at com.canoo.webtest.steps.Step.execute(Step.java:143)
> at com.canoo.webtest.engine.Engine.executeSteps(Engine.java:28)
> at com.canoo.webtest.ant.WebtestTask.execute(WebtestTask.java:79)
> at org.apache.tools.ant.UnknownElement.execute(UnknownElement.jav=
a:275
> at org.apache.tools.ant.Task.perform(Task.java:364)
> at org.apache.tools.ant.Target.execute(Target.java:341)
> at org.apache.tools.ant.Target.performTasks(Target.java:369)
> at org.apache.tools.ant.Project.executeSortedTargets(Project.java=
:1216
> at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets=
(Sing
> CheckExecutor.java:37)
> at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
> at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:382)
> at org.apache.tools.ant.UnknownElement.execute(UnknownElement.jav=
a:275
> at org.apache.tools.ant.Task.perform(Task.java:364)
> at org.apache.tools.ant.Target.execute(Target.java:341)
> at org.apache.tools.ant.Target.performTasks(Target.java:369)
> at org.apache.tools.ant.Project.executeSortedTargets(Project.java=
:1216
> at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
> at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(Def=
aultE
> cutor.java:40)
> at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
> at org.apache.tools.ant.Main.runBuild(Main.java:668)
> at org.apache.tools.ant.Main.startAnt(Main.java:187)
> at org.apache.tools.ant.launch.Launcher.run(Launcher.java:246)
> at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67)
>
>
> Total time: 1 minute 1 second
> $
>
> Here's my test:
>
> <!-- Verify the edit user screen displays without errors -->
> <target name=3D"EditUser"
> description=3D"Tests selecting the 'Edit Profile' forward">
> <webtest name=3D"editUser">
> &config;
> <steps>
> &login;
> <clicklink description=3D"click Edit Profile link"
> label=3D"${menu.user}"/>
> <verifytitle description=3D"we should see the user profil=
e title"
> text=3D"${webapp.prefix}${userProfile.title}"/>
> </steps>
> </webtest>
> </target>
>
> Pretty simple stuff. If I remove verifyTitle, it still happens.
> Unfortunately, since I'm using JSF, I have no control over the
> JavaScript that's generated from the following:
>
> <h:commandLink value=3D"#{text['menu.user']}" action=3D"#{userForm.edit}"=
/>
>
> I noticed this error on another page too, but changing the JavaScript
> fixed the problem:
>
> <script type=3D"text/javascript">
> - var f =3D document.forms['passwordForm'];
> - f.elements['passwordForm:_link_hidden_'].value=3D'passwordForm:execu=
te';
> - f.elements['username'].value=3D'<c:out value=3D"${param.username}"/>=
';
> - f.submit();
> + function submitForm() {
> + var f =3D document.forms['passwordForm'];
> + f.elements['passwordForm:_link_hidden_'].value=3D'passwordForm:e=
xecute';
> + f.elements['username'].value=3D'<c:out value=3D"${param.username=
}"/>';
> + f.submit();
> + }
> + window.onload=3DsubmitForm;
> </script>
>
> Here's the generated JavaScript - which used to work fine with
> build574 and JavaScript enabled.
>
> <ul class=3D"glassList">
> <li>
>
> <a href=3D"#"
> onclick=3D"clear_editUser();document.forms['editUser'].elements['editUser=
:_link_hidden_'].value=3D'editUser:_id0';if(document.forms['editUser'].onsu=
bmit){document.forms['editUser'].onsubmit();}document.forms['editUser'].sub=
mit();return
> false;" id=3D"editUser:_id0">Edit Profile</a>
> </li>
> <li>
> <a href=3D"/appfuse-jsf/selectFile.html">Upload A File</a>
> </li>
> </ul>
>
> <input type=3D"hidden" name=3D"editUser_SUBMIT" value=3D"1"/><input
> type=3D"hidden" name=3D"editUser:_link_hidden_"/><script
> type=3D"text/javascript"><!--
> function clear_editUser() {
> var f =3D document.forms['editUser'];
> f.elements['editUser:_link_hidden_'].value=3D'';
> f.target=3D'';
> }
> clear_editUser();
> --></script>
>
> Thanks,
>
> Matt
>