You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

test.xml 9.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. <?xml version="1.0"?>
  2. <project name="Run Vaadin Testbench Tests" basedir="." default="run-and-clean-up">
  3. <!-- ================================================================== -->
  4. <!-- Configuration -->
  5. <!-- ================================================================== -->
  6. <!-- Browsers to use for testing -->
  7. <property name="browsers-windows" value="winxp-ie6,winxp-ie7,winxp-ie8,winxp-firefox36,winxp-safari4,winxp-safari5,winxp-googlechrome8,winxp-opera1060,winxp-opera11" />
  8. <property name="browsers-linux" value="linux-firefox3,linux-opera10,linux-googlechrome8" />
  9. <property name="browsers-mac" value="osx-firefox3,osx-opera10,osx-googlechrome8,osx-safari4,osx-safari5" />
  10. <property name="browsers" value="${browsers-windows}" />
  11. <!-- Screen shot base directory -->
  12. <fail unless="com.vaadin.testbench.screenshot.directory" message="The 'com.vaadin.testbench.screenshot.directory' property must be defined." />
  13. <!-- Screen shot resolution -->
  14. <property name="com.vaadin.testbench.screenshot.resolution" value="1500x850" />
  15. <!-- Host running Testbench Hub -->
  16. <property name="com.vaadin.testbench.tester.host" value="testbench-hub.intra.itmill.com" />
  17. <!-- Temporary output directory, created and removed by this script -->
  18. <!-- <property name="test-output-dir" value="../build/test-output" /> -->
  19. <fail unless="test-output-dir" message="The 'test-output-dir' property must be defined." />
  20. <property name="class-dir" value="${test-output-dir}/classes" />
  21. <taskdef resource="net/sf/antcontrib/antlib.xml">
  22. <classpath>
  23. <pathelement location="../build/lib/ant-contrib-1.0b3.jar" />
  24. </classpath>
  25. </taskdef>
  26. <!-- classpath must include test bench jar and its dependencies -->
  27. <path id="classpath">
  28. <fileset dir="${com.vaadin.testbench.lib.dir}" includes="**/*.jar" />
  29. </path>
  30. <!-- fileset containing all tests to run -->
  31. <fileset dir=".." id="html-test-files">
  32. <include name="tests/**/**.html" />
  33. <include name="src/com/vaadin/tests/**/**.html" />
  34. <exclude name="tests/integration-testscripts/**" />
  35. </fileset>
  36. <!-- fileset containing tests to retry -->
  37. <fileset dir=".." id="html-retry-files-ie6">
  38. <include name="tests/**/SubWindows**.html" />
  39. </fileset>
  40. <!-- This target converts HTML tests files to java junit tests. One test file for each browser is created. -->
  41. <target name="create-tests" depends="remove-temp-testclasses" if="server.start.succeeded">
  42. <pathconvert pathsep=" " property="testfiles" refid="html-test-files" />
  43. <java classname="com.vaadin.testbench.util.TestConverter" classpathref="classpath">
  44. <arg value="${test-output-dir}" />
  45. <arg value="${browsers}" />
  46. <arg line="${testfiles}" />
  47. </java>
  48. </target>
  49. <target name="create-retry-tests" if="create.retry.tests">
  50. <antcall target="convert-retry-test">
  51. <param name="browser" value="winxp-ie6" />
  52. <param name="testfile-name" value="html-retry-files-ie6" />
  53. </antcall>
  54. </target>
  55. <!-- Target converts test files so that the whole test can be re run 'retries' times -->
  56. <target name="convert-retry-test" if="retries">
  57. <pathconvert pathsep=" " property="testfile" refid="${testfile-name}" />
  58. <java classname="com.vaadin.testbench.util.TestConverter" classpathref="classpath">
  59. <sysproperty key="com.vaadin.testbench.test.retries" value="${retries}" />
  60. <arg value="${test-output-dir}" />
  61. <arg value="${browser}" />
  62. <arg line="${testfile}" />
  63. </java>
  64. </target>
  65. <!-- This target complies the generated java junit tests. -->
  66. <target name="compile-tests" depends="create-tests, create-retry-tests">
  67. <mkdir dir="${class-dir}" />
  68. <javac srcdir="${test-output-dir}" destdir="${class-dir}" debug="on" fork="yes" failonerror="false" encoding="UTF8">
  69. <classpath>
  70. <path refid="classpath" />
  71. </classpath>
  72. </javac>
  73. </target>
  74. <!-- ================================================================== -->
  75. <!-- Toolkit Server Management -->
  76. <!-- ================================================================== -->
  77. <target name="server-start">
  78. <fail unless="output-dir" message="The 'output-dir' (usually build/result/vaadin-xxx) should be given to test script." />
  79. <fail unless="package.name" message="The 'package.name' property must be defined." />
  80. <fail unless="package.filename" message="The 'package.filename' property must be defined." />
  81. <fail unless="testing.testarea" message="The 'testing.testarea' property must be defined." />
  82. <echo>Package name: ${package.name}</echo>
  83. <echo>Package filename: ${package.filename}</echo>
  84. <echo>Testing area: ${testing.testarea}</echo>
  85. <exec executable="python" searchpath="true" dir=".." resultproperty="server.start.result">
  86. <arg value="build/testing/toolkit-server.py" />
  87. <arg value="start" />
  88. <arg value="${package.name}" />
  89. <arg value="${package.filename}" />
  90. <arg value="${output-dir}" />
  91. <arg value="${testing.testarea}" />
  92. </exec>
  93. <condition property="server.start.succeeded">
  94. <equals arg1="${server.start.result}" arg2="0" />
  95. </condition>
  96. </target>
  97. <target name="server-stop">
  98. <exec executable="python" dir=".." searchpath="true" resultproperty="server.stop.result">
  99. <arg value="build/testing/toolkit-server.py" />
  100. <arg value="stop" />
  101. </exec>
  102. </target>
  103. <!-- ================================================================== -->
  104. <!-- Running Tests -->
  105. <!-- ================================================================== -->
  106. <target name="check-parameters">
  107. <fail unless="com.vaadin.testbench.lib.dir" message="The 'com.vaadin.testbench.lib.dir' property must be defined." />
  108. <fail unless="com.vaadin.testbench.tester.host" message="The 'com.vaadin.testbench.tester.host' property must be defined." />
  109. <fail unless="com.vaadin.testbench.deployment.url" message="The 'com.vaadin.testbench.deployment.url' property must be defined." />
  110. </target>
  111. <target name="run-tests" depends="compile-tests" if="server.start.succeeded">
  112. <!-- Long tests are prioritized to even out load at the end of the test run -->
  113. <!-- If you are interested in certain tests they can temporarily be added here -->
  114. <fileset dir="${test-output-dir}" id="priority-tests-fileset">
  115. <include name="**/sampler*.java" />
  116. <include name="**/reindeer*.java" />
  117. <include name="**/runo*.java" />
  118. <include name="**/demop*.java" />
  119. </fileset>
  120. <fileset dir="${test-output-dir}" id="other-tests-fileset">
  121. <include name="**/**.java" />
  122. </fileset>
  123. <for threadCount="50" parallel="true" keepgoing="true" param="target">
  124. <!-- A path element APPARENTLY removes duplicates and therefore this works. Could not find this documented anywhere... -->
  125. <path>
  126. <fileset refid="priority-tests-fileset" />
  127. <fileset refid="other-tests-fileset" />
  128. </path>
  129. <sequential>
  130. <antcall target="execute-tests">
  131. <param name="target" value="@{target}" />
  132. </antcall>
  133. </sequential>
  134. </for>
  135. </target>
  136. <!-- This target runs the generated and compiled junit tests -->
  137. <target name="execute-tests">
  138. <junit fork="yes" printsummary="withOutAndErr">
  139. <classpath>
  140. <path refid="classpath" />
  141. <pathelement path="${class-dir}" />
  142. </classpath>
  143. <jvmarg value="-Dcom.vaadin.testbench.tester.host=${com.vaadin.testbench.tester.host}" />
  144. <jvmarg value="-Dcom.vaadin.testbench.deployment.url=${com.vaadin.testbench.deployment.url}" />
  145. <!-- Define where the reference screenshots and diff files are saved -->
  146. <jvmarg value="-Dcom.vaadin.testbench.screenshot.directory=${com.vaadin.testbench.screenshot.directory}" />
  147. <!-- Resolution for screenshots -->
  148. <jvmarg value="-Dcom.vaadin.testbench.screenshot.resolution=${com.vaadin.testbench.screenshot.resolution}" />
  149. <jvmarg value="-Djava.awt.headless=true" />
  150. <!-- true/false system arguments -->
  151. <jvmarg value="-Dcom.vaadin.testbench.screenshot.softfail=${com.vaadin.testbench.screenshot.softfail}" />
  152. <jvmarg value="-Dcom.vaadin.testbench.screenshot.reference.debug=${com.vaadin.testbench.screenshot.reference.debug}" />
  153. <jvmarg value="-Dcom.vaadin.testbench.screenshot.cursor=${com.vaadin.testbench.screenshot.cursor}" />
  154. <batchtest>
  155. <filelist dir="${test-output-dir}" files="${target}" />
  156. </batchtest>
  157. </junit>
  158. </target>
  159. <!-- Remove temporary source and compiled java files -->
  160. <target name="remove-temp-testclasses">
  161. <delete failonerror="false">
  162. <fileset dir="${test-output-dir}">
  163. <include name="**/**.java" />
  164. <include name="**/**.class" />
  165. </fileset>
  166. </delete>
  167. </target>
  168. <!-- Remove old error screenshots -->
  169. <target name="remove-error-screens">
  170. <mkdir dir="${com.vaadin.testbench.screenshot.directory}/errors" />
  171. <delete>
  172. <fileset dir="${com.vaadin.testbench.screenshot.directory}/errors">
  173. <include name="**/**.*" />
  174. </fileset>
  175. </delete>
  176. </target>
  177. <!-- ================================================================== -->
  178. <!-- Main Targets -->
  179. <!-- ================================================================== -->
  180. <!-- The default target. -->
  181. <target name="run-and-clean-up" depends="check-parameters,remove-error-screens,run-tests" if="server.start.succeeded">
  182. </target>
  183. <!-- Also starts the server. -->
  184. <target name="test-package" depends="server-start, run-and-clean-up, server-stop">
  185. </target>
  186. </project>