<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>JadeLiquid Blog</title>
	
	<link>http://www.jadeliquid.com/blogs</link>
	<description>Blog by JadeLiquid covering everything including LiquidTest and WebRenderer</description>
	<lastBuildDate>Tue, 24 May 2011 03:57:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/jadeliquid" /><feedburner:info uri="jadeliquid" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>jadeliquid</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Selenium 2 / WebDriver support coming soon to LiquidTest..</title>
		<link>http://feedproxy.google.com/~r/jadeliquid/~3/xYkJe2Qsp08/coming-soon-to-liquidtest-selenium-2-webdriver-support.php</link>
		<comments>http://www.jadeliquid.com/blogs/2011/coming-soon-to-liquidtest-selenium-2-webdriver-support.php#comments</comments>
		<pubDate>Tue, 24 May 2011 03:51:11 +0000</pubDate>
		<dc:creator>dthomas</dc:creator>
				<category><![CDATA[JadeLiquid]]></category>
		<category><![CDATA[LiquidTest]]></category>
		<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://www.jadeliquid.com/blogs/?p=498</guid>
		<description><![CDATA[Coming soon to LiquidTest is a full featured Selenium 2 / WebDriver recording engine within the IDE, supporting both Internet Explorer and Firefox. Watch our sneak peek video..]]></description>
			<content:encoded><![CDATA[<p>Coming soon to LiquidTest is a full featured Selenium 2 / WebDriver recording engine within the IDE, supporting both Internet Explorer and Firefox. Watch our sneak peek video..<span id="more-498"></span><br />
<HTML><iframe width="640" height="498" src="http://www.jadeliquid.com/images/screencasts/comingsoon/comingsoon.swf" frameborder="0" allowfullscreen></iframe></HTML></p>
<img src="http://www.jadeliquid.com/blogs/?ak_action=api_record_view&id=498&type=feed" alt="" /><img src="http://feeds.feedburner.com/~r/jadeliquid/~4/xYkJe2Qsp08" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jadeliquid.com/blogs/2011/coming-soon-to-liquidtest-selenium-2-webdriver-support.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jadeliquid.com/blogs/2011/coming-soon-to-liquidtest-selenium-2-webdriver-support.php</feedburner:origLink></item>
		<item>
		<title>Running Selenium Tests from the Command Line</title>
		<link>http://feedproxy.google.com/~r/jadeliquid/~3/Cf7S3U2qcmA/running-selenium-tests-from-the-command-line.php</link>
		<comments>http://www.jadeliquid.com/blogs/2011/running-selenium-tests-from-the-command-line.php#comments</comments>
		<pubDate>Wed, 04 May 2011 00:06:36 +0000</pubDate>
		<dc:creator>Anthony Scotney</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[JadeLiquid]]></category>
		<category><![CDATA[LiquidTest]]></category>
		<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://www.jadeliquid.com/blogs/?p=487</guid>
		<description><![CDATA[Running Selenium tests from the command line on Windows 7 can be slightly challenging simply due to the permissions system. By default Windows 7 tends to be locked down and there is conflicting information out there on exactly what steps to take to get Selenium tests running. The intention is that this article will provide [...]]]></description>
			<content:encoded><![CDATA[<p>Running Selenium tests from the command line on Windows 7 can be slightly challenging simply due to the permissions system. By default Windows 7 tends to be locked down and there is conflicting information out there on exactly what steps to take to get Selenium tests running. The intention is that this article will provide some help for people trying to run Selenium Test Suites from the command line on Windows 7 (and other Windows versions).<span id="more-487"></span></p>
<h2>1) Create a Selenium HTML test</h2>
<p>Create a simple Selenium test (or ten) to add to your test suite. Creating a Selenium test is easy in LiquidTest. See our LiquidTest documentation on &#8220;<a href="http://www.jadeliquid.com/liquidtest/docs/doku.php?id=qa:selenium:recording_and_replaying_selenium_tests:home">how to record Selenium HTML tests</a>&#8220;.</p>
<h2>2) Create a Selenium Test Suite</h2>
<p>Because HTML is essentially a content formatting language it contains little scope to tell any executing program exactly what to do outside of basic presentation. With this in mind and given that Selenium supports the HTML test format, the Selenium team came up with Selenium Test Suites to tell the Selenium runner (Selenium RC/Server) what tests to execute and the order of execution. Selenium Test Suites are fairly straight forward. In their simplest form they contain an HTML Table (TABLE), with a Row (TR) and some Table Data (TD).</p>
<pre name="code" class="xhtml">
&lt;html&gt;
	&lt;head&gt;
		&lt;title&gt;My Application Test Suite&lt;/title&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;table&gt;
			&lt;tr&gt;&lt;td&gt;&lt;b&gt;Suite Of Tests&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
			&lt;tr&gt;&lt;td&gt;&lt;a href="./Test1.html"&gt;Test Example&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
		&lt;/table&gt;
	&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Notice that the tests can be grouped with the first Table Row, and then the preceding rows link to the actual test cases. This formatting helps with both execution ordering of test cases and to attach meaningful data to the results file output by the Selenium RC/Server.</p>
<h2>3) Executing Selenium Test Suites from the Command Line</h2>
<p><strong>Security and Internet Explorer:</strong> Due to Windows 7 security, running tests as anything but Administrator produces sketchy results at best. I had numerous problems with Internet Explorer. Firstly Internet Explorer was loading Selenium RC/Server with many script errors regardless of configuration. The tests never replayed in this state. Firefox fared better in that it ran and produced the necessary results file. To avoid security issues with Selenium RC/Server ensure that any tests you are executing from the Command Line are through an Administrator Command Prompt (right-click on the Command Prompt and select &#8220;Run as Administrator&#8221;.</p>
<p><img src="http://www.jadeliquid.com/images/blog/12_04_2011/run_command_prompt_administrator.png" alt="Administrator command line" /></p>
<p><strong>Creating a Windows Batch file to run your Selenium Test Suite</strong><br />
To make life a little easier we will create a simple batch file to save writing the command out by hand for each Selenium Test Suite execution. The batch file consists of Java&#8217;s JAR command (ensure Java is in your System PATH or use the full file location to your Java bin directory). We specify to Selenium RC/Server that we wish to run a Test Suite, targeting Internet Explorer with a default URL of google.com (for our test) and then we specify where our Selenium Test Suite is located, where we want our Results file written and finally the Port for executing the communication.</p>
<pre name="code" class="vb">
java -jar selenium-server-standalone-2.0b3.jar -htmlSuite "*iexplore" "http://www.google.com" "D:\selenium-2\TestSuite.html" "D:\selenium-2\results.html" -port 4445
pause
</pre>
<p><strong>The action..</strong><br />
When running a Selenium Test Suite, the browser you&#8217;re targeting will open and the test will replay.</p>
<p><img src="http://www.jadeliquid.com/images/blog/12_04_2011/selenium_command_line_execution.png" alt="Selenium Server / RC running on the command line" /></p>
<p><img src="http://www.jadeliquid.com/images/blog/12_04_2011/selenium_server_running_tests.png" alt="Selenium Server running test" /></p>
<h2>4) Selenium test execution Results File</h2>
<p>Selenium will start up and execute the Test Suite and write a Results file to the location you specified. The Results file looks like the following:</p>
<p><img src="http://www.jadeliquid.com/images/blog/12_04_2011/selenium_test_suite_results.png" alt="Selenium Server / RC - Test execution results" /></p>
<p><img src="http://www.jadeliquid.com/images/blog/12_04_2011/selenium_test_case_detailed_result.png" alt="Selenium individual test details" /></p>
<p>Hopefully this example will be enough to get you started with running your Selenium HTML tests from the command line. For information on how to run your Selenium JUnit tests against the Selenium Server from within the Eclipse IDE please view the tutorial <a href="http://www.jadeliquid.com/liquidtest/docs/doku.php?id=java:selenium:using_selenium_rc_server:home">here..</a></p>
<img src="http://www.jadeliquid.com/blogs/?ak_action=api_record_view&id=487&type=feed" alt="" /><img src="http://feeds.feedburner.com/~r/jadeliquid/~4/Cf7S3U2qcmA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jadeliquid.com/blogs/2011/running-selenium-tests-from-the-command-line.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jadeliquid.com/blogs/2011/running-selenium-tests-from-the-command-line.php</feedburner:origLink></item>
		<item>
		<title>LiquidTest 3.0 with Selenium support ships!</title>
		<link>http://feedproxy.google.com/~r/jadeliquid/~3/N_4CtEx8q0Q/liquidtest-30-with-selenium-support-ships.php</link>
		<comments>http://www.jadeliquid.com/blogs/2011/liquidtest-30-with-selenium-support-ships.php#comments</comments>
		<pubDate>Tue, 12 Apr 2011 03:51:38 +0000</pubDate>
		<dc:creator>dthomas</dc:creator>
				<category><![CDATA[JadeLiquid]]></category>
		<category><![CDATA[LiquidTest]]></category>
		<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://www.jadeliquid.com/blogs/?p=480</guid>
		<description><![CDATA[By now you have probably seen our press release about Selenium support in LiquidTest. If not you can see it here. No doubt you will have a few questions about this so I thought I would try and answer some for you: What do you mean Selenium is now supported? LiquidTest can now Record (in [...]]]></description>
			<content:encoded><![CDATA[<p>By now you have probably seen our press release about Selenium support in LiquidTest. If not  you can see it here. No doubt you will have a few questions about this so I thought I would try and answer some for you:<span id="more-480"></span></p>
<p><strong>What do you mean Selenium is now supported?</strong><br />
LiquidTest can now Record (in IE and Firefox) tests and write them in either Selenese (Selenium HTML) or Selenium JUnit.  These tests will work within either LiquidTest or the standard Selenium infrastructure.</p>
<p>LiquidTest can also replay Selenium tests. So if you have a lot of these already you can bring them into the LiquidTest environment.</p>
<p><strong>Why did you do it?</strong><br />
Selenium is a very popular testing framework. The Selenese language is almost a standard in the &#8220;developer tester&#8221; field.  So adding support for this wasn&#8217;t too much of a leap.  The problem Selenium has is that in order to test complex web applications, you need to have a developer&#8217;s understanding of both the application and of writing code for Selenium.  In other words, you need to be a Developer.</p>
<p>You could try using the Selenium IDE Recorder, but it has many limitations when it comes to recording complex applications.</p>
<p><strong>Selenium for the Masses!</strong><br />
By using LiquidTest, any user who has the ability to use a browser can start creating tests in Selenium! Point and click, and your Selenium test is created. Replay it and watch it work. And we aren&#8217;t just talking basic tests. Complex web applications making use of Ajax frameworks can now have tests created for Selenium using the LiquidTest recording engine.</p>
<p>By coupling LiquidTest&#8217;s robust record and replay engine with Selenium&#8217;s ubiquitous language, testing your application just got a lot easier. And hopefully we can bring more people into the Selenium testing world.</p>
<p>But LiquidTest is also great for experienced  Selenium developers. Being able to develop your Selenium Tests in the Eclipse environment, access DOM and XPath information as you create your tests, manipulate your tests using a Data-Driven approach as well as run your tests in a headless environment which  all combine to make this a powerful tool for developers as well.</p>
<p><strong>Anything else I need to know?</strong><br />
We have added a few features as well, not just the industry&#8217;s leading record and replay engine. How about a few of these goodies now supported in Selenium:</p>
<p>Record Selenium tests with Internet Explorer</p>
<ul>
<li> DataDriven tests in Selenium</li>
<li> Multi Domain support</li>
<li> Pop up windows supported</li>
<li>Supported Ajax Frameworks</li>
<li>Intelligent Object identification</li>
</ul>
<p>To name just a few..</p>
<p>If you would like to try it out venture over and visit the home of our Selenium support to download a free trail:<br />
<a href="http://www.jadeliquid.com/liquidtest/docs/doku.php?id=general:selenium:home">http://www.jadeliquid.com/liquidtest/docs/doku.php?id=general:selenium:home</a></p>
<img src="http://www.jadeliquid.com/blogs/?ak_action=api_record_view&id=480&type=feed" alt="" /><img src="http://feeds.feedburner.com/~r/jadeliquid/~4/N_4CtEx8q0Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jadeliquid.com/blogs/2011/liquidtest-30-with-selenium-support-ships.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jadeliquid.com/blogs/2011/liquidtest-30-with-selenium-support-ships.php</feedburner:origLink></item>
		<item>
		<title>Setting up Atlassian Bamboo to run automated Web 2.0 tests</title>
		<link>http://feedproxy.google.com/~r/jadeliquid/~3/9NXL-1NcP88/setting-up-atlassian-bamboo-to-run-automated-web-20-tests.php</link>
		<comments>http://www.jadeliquid.com/blogs/2010/setting-up-atlassian-bamboo-to-run-automated-web-20-tests.php#comments</comments>
		<pubDate>Tue, 16 Nov 2010 04:20:39 +0000</pubDate>
		<dc:creator>dthomas</dc:creator>
				<category><![CDATA[JadeLiquid]]></category>
		<category><![CDATA[LiquidTest]]></category>
		<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://www.jadeliquid.com/blogs/?p=407</guid>
		<description><![CDATA[One of our Developers put together the following document on how to get Atlassian&#8217;s Bamboo up and automating LiquidTest test suites. Here it is.. Bamboo™ is a Continuous Integration server by Atlassian™. Continuous Integration is a development practice where software developers integrate their work frequently.  Each integration is then verified by an automated build to [...]]]></description>
			<content:encoded><![CDATA[<p>One of our Developers put together the following document on how to get Atlassian&#8217;s Bamboo up and automating LiquidTest test suites. Here it is..<span id="more-407"></span></p>
<p>Bamboo™ is a Continuous Integration server by Atlassian™. Continuous Integration is a development practice where software developers integrate their work frequently.  Each integration is then verified by an automated build to detect errors as quickly as possible.</p>
<p>LiquidTest™ is an agile Web Application Testing tool with an integrated Record and Replay engine powered by Firefox™ and Internet Explorer™. LiquidTest supports industry standard languages (Java™, C#, Visual Basic .NET and Groovy) and integrates with IDE&#8217;s and Continuous Integration servers.</p>
<p>This document will walk you through downloading and configuring Bamboo and LiquidTest so that Bamboo will execute a LiquidTest build and verify recorded tests automatically.</p>
<p>I have cut out the setup of a Linux box or Subversion repository, so the following assumes you already have a working Subversion repository containing an example LiquidTest Project (Use the Hudson setup blog post as a starter guide available <a href="http://www.jadeliquid.com/liquidtest/docs/doku.php?id=java:developers:server:liquidtest_on_a_server_introduction:home">here</a>).</p>
<p>Bamboo is available for Windows/OSX/*nix, and can be downloaded from <a href="http://www.atlassian.com/software/bamboo/BambooDownloadCenter.jspa">Atlassian&#8217;s website</a>.</p>
<p><strong>Installing Bamboo</strong></p>
<p><em>- &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - -<br />
cd /opt<br />
- &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - -</em></p>
<p><strong>Get latest stable version of bamboo</strong>, as of this writing it&#8217;s 2.5.1</p>
<p><em>- &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - -<br />
wget</p>
<p>http://downloads.atlassian.com/software/bamboo/downloads/atlassian-bamboo-2.5.1-standalone.tar.gz</p>
<p>- &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - -</em><em><br />
</em></p>
<p><strong>Extract the distribution files</strong></p>
<p><em>- &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; -<br />
tar zxf atlassian-bamboo-2.5.1-standalone.tar.gz<br />
cd Bamboo<br />
- &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; -</em></p>
<p><strong>Edit the bamboo-init.properties file</strong> and set the bamboo.home variable to be /opt/Bamboo</p>
<p><em>- &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; -<br />
sudo nano webapp/WEB-INF/classes/bamboo-init.properties<br />
- &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; -</em></p>
<p>Now <strong>launch the server</strong> via the shell script:</p>
<p><em>- &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; -<br />
sudo ./bamboo.sh start<br />
- &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; - &#8211; -</em></p>
<p>Now you can browse to http://&lt;bamboo server ip&gt;:8085/ (if you need to discover the IP, just type ifconfig)<br />
You should be prompted for a license key:</p>
<p><img src="http://www.jadeliquid.com/images/screens/blogs/bamboo/atlassian_bamboo_license_key.gif" alt="Atlassian Bamboo configuration" /></p>
<p>Follow the &#8220;Contact Us&#8221; link which will take you to an Atlassian site to register for a trial key.</p>
<p><img src="http://www.jadeliquid.com/images/screens/blogs/bamboo/atlassian_bamboo_evaluate.gif" alt="Atlassian Bamboo evaluation" /></p>
<p>You will then be able to copy your trial key and paste it back into the Bamboo welcome screen.</p>
<p><img src="http://www.jadeliquid.com/images/screens/blogs/bamboo/atlassian_bamboo_welcome.gif" alt="Atlassian Bamboo welcome" /></p>
<p>Hit Express Installation&#8230;</p>
<p>You will be prompted to create an administration account;<br />
<img src="http://www.jadeliquid.com/images/screens/blogs/bamboo/atlassian_bamboo_root_user.gif" alt="Atlassian Bamboo root user" /></p>
<p>Click finish&#8230;</p>
<p>Now we need to create a plan.</p>
<p><strong>Create a new plan</strong></p>
<p><img src="http://www.jadeliquid.com/images/screens/blogs/bamboo/atlassian_bamboo_new_plan.gif" alt="Atlassian Bamboo new plan.." /><br />
<strong>Project Name:</strong> LiquidTestIntegrationExample<br />
<strong>Project Key:</strong> LTIE<br />
<strong>Build Plan Name:</strong> Default<br />
<strong>Build Plan Key:</strong> DEF</p>
<p>Hit next.</p>
<p><strong>Specify Source Repository </strong></p>
<p>In the Repository type drop-down, select Subversion.</p>
<p>The URL should be http://&lt;subversion server ip&gt;/svn/LiquidTestProject/</p>
<p>Set the Build Strategy to &#8220;Polling for changes.&#8221;<br />
Set the polling frequency to be 180 seconds.<br />
Hit next.<br />
<img src="http://www.jadeliquid.com/images/screens/blogs/bamboo/atlassian_bamboo_specify_repository.gif" alt="Atlassian Bamboo specify repository" /></p>
<p><strong>Choose a Builder</strong></p>
<p>Now we need to configure a builder.<br />
Hit add new builder.</p>
<p><strong>Add New Builder</strong></p>
<p>By default we won&#8217;t have any version of ant installed, so we need to configure it with the version we installed earlier.</p>
<p><img src="http://www.jadeliquid.com/images/screens/blogs/bamboo/atlassian_bamboo_add_new_builder.gif" alt="Atlassian Bamboo add new builder" /></p>
<p>Hit add.</p>
<p>Now we have some ant properties we can set:-</p>
<p>Build File should be &#8220;build.xml&#8221;<br />
Target should be &#8220;runtests&#8221;<br />
Build JDK: Just use the default JDK it detects.</p>
<p>In &#8220;Where should Bamboo look for the test result files&#8221;<br />
check &#8220;The build will produce test results&#8221;<br />
with a pattern of: */build/log/.xml</p>
<p>Hit save.</p>
<p>Bamboo should now build the project and execute the tests.</p>
<p><strong>Congratulations</strong>, you can now commit changes to the Subversion repository, and Bamboo will detect new revisions and automatically build and run your LiquidTest tests.<br />
<img src="http://www.jadeliquid.com/images/screens/blogs/bamboo/liquidtest_bamboo_integration_success.gif" alt="Atlassian Bamboo integration success" /></p>
<p><div class="note"><div class="notetip">To see more LiquidTest integrations visit our <a href="http://www.jadeliquid.com/liquidtest/docs/doku.php?id=java:developers:integrations:home">Itegrations home..</a></div></div></p>
<img src="http://www.jadeliquid.com/blogs/?ak_action=api_record_view&id=407&type=feed" alt="" /><img src="http://feeds.feedburner.com/~r/jadeliquid/~4/9NXL-1NcP88" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jadeliquid.com/blogs/2010/setting-up-atlassian-bamboo-to-run-automated-web-20-tests.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jadeliquid.com/blogs/2010/setting-up-atlassian-bamboo-to-run-automated-web-20-tests.php</feedburner:origLink></item>
		<item>
		<title>888 installer builds and 7469 code checkins later LiquidTest 2.0 ships!</title>
		<link>http://feedproxy.google.com/~r/jadeliquid/~3/lf-hTvfOpeU/888-installer-builds-and-7469-code-checkins-later-and-liquidtest-20-ships.php</link>
		<comments>http://www.jadeliquid.com/blogs/2010/888-installer-builds-and-7469-code-checkins-later-and-liquidtest-20-ships.php#comments</comments>
		<pubDate>Fri, 05 Nov 2010 00:18:10 +0000</pubDate>
		<dc:creator>Anthony Scotney</dc:creator>
				<category><![CDATA[JadeLiquid]]></category>
		<category><![CDATA[LiquidTest]]></category>
		<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://www.jadeliquid.com/blogs/?p=437</guid>
		<description><![CDATA[We have shipped! Sincere thanks to all those that have waited patiently for our LiquidTest 2.0 to ship. The official release information is as follows..]]></description>
			<content:encoded><![CDATA[<p>We have shipped! Sincere thanks to all those that have waited patiently for our <a href="http://www.jadeliquid.com/liquidtest/">LiquidTest 2.0</a> to ship. The official release information is as follows:<span id="more-437"></span></p>
<p><strong>Web Application Test Automation just got a whole lot easier</strong><br />
JadeLiquid Software, developers of <a href="http://www.jadeliquid.com/liquidtest/">LiquidTest</a>, the Web 2.0 application testing framework designed for developers, announced the release of LiquidTest 2.0. LiquidTest 2.0 is stacked with new features including new IDE integrations, languages and massive core engine improvements. LiquidTest now ships with specific support for Web 2.0 frameworks such as ExtJS, Dojo, GWT, ASP.NET and more.</p>
<p><strong>LiquidTest 2.0 &#8211; defined</strong><br />
    * The Industry&#8217;s leading Web Testing Engine<br />
    * Robust XPathing and object recognition for greater test stability<br />
    * Platform support including Java (Eclipse) and Microsoft Visual Studio .NET<br />
    * Multiple browser support (Internet Explorer and Firefox)<br />
    * Compatibility with Web 2.0 frameworks<br />
    * File Upload and Download support<br />
    * Support, support, support &#8211; you find it, we fix it right away!<br />
<BR><br />
<strong>Ready to turn the agile web testing world upside down</strong><br />
<a href="http://www.jadeliquid.com/liquidtest/">LiquidTest 2.0</a> is the accumulation of 2 years of closed-doors development with select LiquidTest clients with the aim of perfectly &#8220;tuning&#8221; the internal LiquidTest engine. Throughout this process the XPathing, Rule Matching and Framework Compliance engines have undergone ground-up rebuilds all in the name of making LiquidTest the best Web Application Test tool out there. With these major changes LiquidTest is a completely different animal to LiquidTest 1.0 or any other Web Application Testing tool ever developed.</p>
<p><strong>Less time fixing, more time running tests</strong><br />
Traditional testing frameworks struggle when it comes to the current generation of Web technologies. LiquidTest is ground-up engineered to support the most complex of Web 2.0. Under the hood, LiquidTest utilizes deep hooks into real browsers (Firefox and Internet Explorer). These deep hooks allow LiquidTest to record your actions, monitor page events and reactions and create succinct, robust test cases in languages you are already using.Check out our compliance with your framework of choice on our Supported Web 2.0 Frameworks page.</p>
<p><strong>Documented Integrations, Integrations, Integrations</strong><br />
LiquidTest is designed to fit into your development environment. The LiquidTest team has been continuously writing and releasing integrations with many popular tools and frameworks. </p>
<p><strong>Below are some of the LiquidTest integrations:</strong><br />
- Build Tools: <a href="http://www.jadeliquid.com/liquidtest/docs/doku.php?id=java:developers:integrations:build_tools:liquidtest_ant_example:home">ANT</a>, <a href="http://www.jadeliquid.com/liquidtest/docs/doku.php?id=java:developers:integrations:build_tools:liquidtest_and_maven:home">Maven</a>, <a href="http://www.jadeliquid.com/liquidtest/docs/doku.php?id=dotnet:developers:build_tools:liquidtest_nant_example:home">NAnt</a>, <a href="http://www.jadeliquid.com/liquidtest/docs/doku.php?id=dotnet:developers:build_tools:liquidtest_and_msbuild:home">MSBuild</a><br />
- Continuous Integration: <a href="http://www.jadeliquid.com/liquidtest/docs/doku.php?id=java:developers:server:liquidtest_on_a_server_introduction:home">Hudson</a>, <a href="http://www.jadeliquid.com/liquidtest/docs/doku.php?id=java:developers:integrations:continuous_integration:bamboo:home">Atlassian Bamboo</a>, <a href="http://www.jadeliquid.com/liquidtest/docs/doku.php?id=dotnet:developers:integrations:continuous_integration:cruisecontroldotnet:home">Cruise Control .NET</a><br />
- IDE&#8217;s: <a href="http://www.jadeliquid.com/liquidtest/docs/doku.php?id=java:home">Eclipse</a>, <a href="http://www.jadeliquid.com/liquidtest/docs/doku.php?id=dotnet:home">Visual Studio</a><br />
- Test framework support: JUnit, TestNG, NUnit<br />
- Language support: <a href="http://www.jadeliquid.com/liquidtest/docs/doku.php?id=java:home">Java</a>, Groovy, <a href="http://www.jadeliquid.com/liquidtest/docs/doku.php?id=dotnet:quick_start:home">C#</a>, <a href="http://www.jadeliquid.com/liquidtest/docs/doku.php?id=dotnet:quick_start:home">Visual Basic</a><br />
- Framework support: <a href="http://www.jadeliquid.com/liquidtest/docs/doku.php?id=general:frameworks:home">ExtJS</a>, <a href="http://www.jadeliquid.com/liquidtest/docs/doku.php?id=general:frameworks:home">Dojo</a>, <a href="http://www.jadeliquid.com/liquidtest/docs/doku.php?id=general:frameworks:home">GWT</a>, <a href="http://www.jadeliquid.com/liquidtest/docs/doku.php?id=general:frameworks:home">ASP .NET</a></p>
<img src="http://www.jadeliquid.com/blogs/?ak_action=api_record_view&id=437&type=feed" alt="" /><img src="http://feeds.feedburner.com/~r/jadeliquid/~4/lf-hTvfOpeU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jadeliquid.com/blogs/2010/888-installer-builds-and-7469-code-checkins-later-and-liquidtest-20-ships.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jadeliquid.com/blogs/2010/888-installer-builds-and-7469-code-checkins-later-and-liquidtest-20-ships.php</feedburner:origLink></item>
		<item>
		<title>Setting up LiquidTest with Maven</title>
		<link>http://feedproxy.google.com/~r/jadeliquid/~3/tlMcYyi-LE4/setting-up-liquidtest-with-maven.php</link>
		<comments>http://www.jadeliquid.com/blogs/2010/setting-up-liquidtest-with-maven.php#comments</comments>
		<pubDate>Thu, 04 Mar 2010 06:22:08 +0000</pubDate>
		<dc:creator>hirving</dc:creator>
				<category><![CDATA[LiquidTest]]></category>
		<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://www.jadeliquid.com/blogs/?p=333</guid>
		<description><![CDATA[One of our Developers put together a nice Maven Integration document that will go out with our website refresh later this month.  Given the popularity of Maven, I thought I would share it before the site-refresh goes live! Install Maven This guide assumes you already have Java and Maven 2 installed. If you don&#8217;t have [...]]]></description>
			<content:encoded><![CDATA[<p>One of our Developers put together a nice Maven Integration document that will go out with our website refresh later this month.  Given the popularity of Maven, I thought I would share it before the site-refresh goes live!<span id="more-333"></span></p>
<p><strong>Install Maven</strong></p>
<p>This guide assumes you already have Java and Maven 2 installed. If you don&#8217;t have Maven, you can follow the <a title="Maven Installation Instructions" href="http://maven.apache.org/download.html" target="_blank">installation instructions on the Maven website</a>.</p>
<p>Open a command prompt with access to Maven so that you can follow the rest of the instructions in this guide.</p>
<p><strong>Install LiquidTest into your local Maven repository</strong></p>
<p>Maven projects <a title="Maven POM Reference" href="http://maven.apache.org/pom.html#Dependencies" target="_blank">cannot depend on JARs that are not Maven artifacts</a>, which means that you can&#8217;t just drop LiquidTest into your classpath as you would with other build systems. Instead you&#8217;ll need to install LiquidTest into your local repository so that Maven can see it and your tests can depend on it.</p>
<p>Suppose you&#8217;ve obtained liquidtest-nodeps-1.0.17.jar and you&#8217;d like to tell Maven about it. Run the following command in the same directory as the JAR file:</p>
<pre name="code" class="xml">
$ mvn install:install-file \
      -Dfile=liquidtest-nodeps-1.0.17.jar \
      -DgroupId=local.jadeliquid.liquidtest \
      -DartifactId=liquidtest-nodeps \
      -Dversion=1.0.17 \
      -Dpackaging=jar
</pre>
<p><div class="note"><div class="notetip">If you <a title="Introduction to Maven Repositories" href="http://maven.apache.org/guides/introduction/introduction-to-repositories.html" target="_blank">understand how to use private Maven repositories</a>, you can manage your LiquidTest JARs centrally instead of installing them manually on each workstation/server.</div></div></p>
<p><strong>Package and install you LiquidTest license key</strong></p>
<p>LiquidTest looks for its license key and other configuration parameters in a liquidtest.properties file on its classpath. There are a few ways to achieve this, but one of the simplest is to add your configuration to its own JAR and install it into Maven&#8217;s local repository.</p>
<p>Start by creating your liquidtest.properties file. It should contain at least the following line:</p>
<pre name="code" class="xml">
licenseKey=&lt;INSERT YOUR LIQUIDTEST LICENSE KEY HERE&gt;
</pre>
<p>You can add other LiquidTest configuration properties if you like.</p>
<p><div class="note"><div class="notewarning">Be sure to use your actual license key instead of the placeholder, or LiquidTest won&#8217;t run! </div></div></p>
<p>Now, add your properties file to its own JAR archive with the following command:</p>
<pre name="code" class="xml">
$ jar -cvf liquidtest-properties.jar liquidtest.properties
</pre>
<p>The final step is to add this JAR to your repository as you did with LiquidTest itself:</p>
<pre name="code" class="xml">
$ mvn install:install-file \
      -Dfile=liquidtest-properties.jar \
      -DgroupId=local.jadeliquid.liquidtest \
      -DartifactId=liquidtest-properties \
      -Dversion=1.0-SNAPSHOT \
      -Dpackaging=jar
</pre>
<p><strong>Create a Maven project</strong></p>
<p>If you don&#8217;t already have a Maven project, you&#8217;ll need to create one by entering the following:</p>
<pre name="code" class="xml">
$ mvn archetype:create \
      -DgroupId=com.example.myproject \
      -DartifactId=my-project
</pre>
<p>This will create a skeleton project in the my-project/ directory. You can replace the group and artifact IDs with something more suitable for your project.</p>
<p><strong>Add the FailSafe plugin for integration testing</strong></p>
<p>The FailSafe plugin is used for integration testing in Maven. To use it, add the following to your project&#8217;s pom.xml:</p>
<pre name="code" class="xml">
&lt;project>
  [...]
  &lt;build>
    &lt;plugins>
      &lt;plugin>
        &lt;groupId>org.codehaus.mojo&lt;/groupId>
        &lt;artifactId>failsafe-maven-plugin&lt;/artifactId>
        &lt;version>2.4.3-alpha-1&lt;/version>
        &lt;executions>
          &lt;execution>
            &lt;id>integration-test&lt;/id>
            &lt;goals>
              &lt;goal>integration-test&lt;/goal>
            &lt;/goals>
          &lt;/execution>
          &lt;execution>
            &lt;id>verify&lt;/id>
            &lt;goals>
              &lt;goal>verify&lt;/goal>
            &lt;/goals>
          &lt;/execution>
        &lt;/executions>
      &lt;/plugin>
    &lt;/plugins>
  &lt;/build>
  [...]
&lt;/project>
</pre>
<p><div class="note"><div class="noteclassic">You can find more information on FailSafe at<a title="Failsafe Maven Plugin" href="http://mojo.codehaus.org/failsafe-maven-plugin/usage.html" target="_blank"> http://mojo.codehaus.org/failsafe-maven-plugin/usage.html</a>.</div></div></p>
<p><strong>Add LiquidTest dependencies</strong></p>
<p>Add these dependencies to your project&#8217;s pom.xml so that the integration-test phase can use LiquidTest to run your tests:</p>
<pre name="code" class="xml">
&lt;project>
  [...]
  &lt;dependencies>
    [...]
    &lt;dependency>
      &lt;groupId>local.jadeliquid.liquidtest&lt;/groupId>
      &lt;artifactId>liquidtest-nodeps&lt;/artifactId>
      &lt;version>1.0.17&lt;/version>
      &lt;scope>integration-test&lt;/scope>
    &lt;/dependency>
    &lt;dependency>
      &lt;groupId>local.jadeliquid.liquidtest&lt;/groupId>
      &lt;artifactId>liquidtest-properties&lt;/artifactId>
      &lt;version>1.0-SNAPSHOT&lt;/version>
      &lt;scope>integration-test&lt;/scope>
    &lt;/dependency>
    [...]
  &lt;/dependencies>
  [...]
&lt;/project>
</pre>
<p><strong>Update the JUnit dependency to JUnit 4</strong></p>
<p>Maven&#8217;s default project configuration uses JUnit 3, which is no good if you&#8217;re using LiquidTest to generate JUnit 4 test files. Luckily this is easy to fix: find the JUnit &lt;version&gt;3.8.1&lt;/version&gt; element in your pom.xml and replace the version number with a more suitable one. You can specify a particular version of JUnit with &lt;version&gt;4.3.1&lt;/version&gt;, or request any version of JUnit 4 with &lt;version&gt;[4.0,)&lt;/version&gt;.</p>
<p>You will also need to add JUnit to the integration-test lifecycle phase. To do this, replace &lt;scope&gt;test&lt;/scope&gt; with &lt;scope&gt;test integration-test&lt;/scope&gt;.</p>
<p>Here's how your project's &lt;dependencies&gt; configuration should appear after making these changes:</p>
<pre name="code" class="xml">
&lt;project>
  [...]
  &lt;dependencies>
    [...]
    &lt;dependency>
      &lt;groupId>junit&lt;/groupId>
      &lt;artifactId>junit&lt;/artifactId>
      &lt;version>[4.0,)&lt;/version> &lt;!-- version 4.0 or greater -->
      &lt;scope>test integration-test&lt;/scope> &lt;!-- needed by integration-test -->
    &lt;/dependency>
    [...]
  &lt;/dependencies>
  [...]
</pre>
<p><strong>Enable support for Java 5 constructs</strong></p>
<p>Maven uses Java 1.3 syntax by default, which is no good if you want to compile JUnit 4 tests with annotations. To remedy this, explicitly set the Java source and target versions in the compiler plugin's configuration using the following code: <strong></strong></p>
<pre name="code" class="xml">
&lt;project>
  [...]
  &lt;build>
    [...]
    &lt;plugins>
      [...]
      &lt;plugin>
        &lt;groupId>org.apache.maven.plugins&lt;/groupId>
        &lt;artifactId>maven-compiler-plugin&lt;/artifactId>
        &lt;configuration>
          &lt;source>1.5&lt;/source> &lt;!-- use Java 5 syntax -->
          &lt;target>1.5&lt;/target> &lt;!-- required for Java 5 syntax -->
        &lt;/configuration>
      &lt;/plugin>
      [...]
    &lt;/plugins>
    [...]
  &lt;/build>
  [...]
&lt;/project>
</pre>
<p><div class="note"><div class="notetip">If you want to use Java 6 language features, you'll need to write &lt;source&gt;1.6&lt;/source&gt; instead.</div></div></p>
<p><strong>Add LiquidTest tests to your Maven tree</strong></p>
<p>By default, FailSafe will look for test files using the pattern **/*IT.java. Create a test file with a name ending in IT and add it to your project's src/test/java/ tree at the appropriate package location. <strong></strong></p>
<p>For example, this test script would be placed at src/test/java/com/example/myproject/SampleIT.java:</p>
<pre name="code" class="java">
package com.example.myproject;

import static org.junit.Assert.assertEquals;

import org.junit.Test;
import org.junit.runner.RunWith;

import com.jadeliquid.liquidtest.Browsers;
import com.jadeliquid.liquidtest.TestBrowser;
import com.jadeliquid.liquidtest.plugin.junit4.BrowserRunner;

@RunWith(BrowserRunner.class)
public class SampleIT
{
	public TestBrowser browser;

	@Test
	@Browsers("Firefox2.0")
	public void rfcHref()
	{
		browser.load("example.com");
		assertEquals("http://www.rfc-editor.org/rfc/rfc2606.txt",browser.getNodeAttribute("//*[text()='RFC \n  2606']", "href"));
	}

}
</pre>
<p><strong>Run your tests in Maven</strong></p>
<p>Now that everything is set up, you should be able to invoke Maven to run your LiquidTest integration tests: <strong></strong></p>
<pre name="code" class="xml">
$ cd my-project
$ mvn verify
</pre>
<p>Once Maven has downloaded any needed dependencies it will use LiquidTest to execute your tests. You should see summary results in your terminal, and detailed results should appear in the target/failsafe-reports/ directory in your Maven project tree.<br />
<strong><br />
</strong></p>
<img src="http://www.jadeliquid.com/blogs/?ak_action=api_record_view&id=333&type=feed" alt="" /><img src="http://feeds.feedburner.com/~r/jadeliquid/~4/tlMcYyi-LE4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jadeliquid.com/blogs/2010/setting-up-liquidtest-with-maven.php/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.jadeliquid.com/blogs/2010/setting-up-liquidtest-with-maven.php</feedburner:origLink></item>
		<item>
		<title>Knowing your Enemy – Foundations of LiquidTest</title>
		<link>http://feedproxy.google.com/~r/jadeliquid/~3/dW54nVrSAFg/knowing-your-enemy-foundations-of-liquidtest.php</link>
		<comments>http://www.jadeliquid.com/blogs/2010/knowing-your-enemy-foundations-of-liquidtest.php#comments</comments>
		<pubDate>Thu, 25 Feb 2010 05:48:04 +0000</pubDate>
		<dc:creator>Anthony Scotney</dc:creator>
				<category><![CDATA[JadeLiquid]]></category>
		<category><![CDATA[LiquidTest]]></category>
		<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://www.jadeliquid.com/blogs/?p=312</guid>
		<description><![CDATA[There is a great article by 37signals called &#8220;Have an Enemy”.  By knowing your &#8220;enemy&#8221;, you know what you don’t want to be.  This is pretty much how LiquidTest was conceived. We knew there were problems in the Test Automation space and we knew there were a lot of questionable practices by some of the [...]]]></description>
			<content:encoded><![CDATA[<p>There is a great article by 37signals called &#8220;<a title="Have an Enemy" href="http://gettingreal.37signals.com/ch02_Have_an_Enemy.php">Have an Enemy</a>”.  By knowing your &#8220;enemy&#8221;, you know what you don’t want to be.  This is pretty much how LiquidTest was conceived. We knew there were problems in the Test Automation space and we knew there were a lot of questionable practices by some of the established players in the space. The following is a list of principles <a title="LiquidTest home page" href="http://www.jadeliquid.com/liquidtest/">LiquidTest</a> was founded upon:<span id="more-312"></span></p>
<p><strong>Built for Developers by Developers:</strong> From day one we focused on languages being used to write commercial grade products such as Java and C#, and on IDE integrations (Eclipse and Visual Studio).  We never wanted our product to suffer from the vendor training and lock-in traps seen with the larger vendors that utilize proprietary languages.  We also did not want to have a product developed for non-technical QA pitched at Developers.</p>
<p><strong>Record and Replay without the</strong> <strong>black eye</strong>: We are finding that Record and Replay has taken a beating over the years, thanks to some of the products produced by the &#8220;Senior Citizens&#8221; in this space.  Developers are rightly skeptical about how robust Record and Replay is but the simple fact is that when you get it right, it works!  We have LiquidTest pretty close to &#8220;right&#8221; (three years of work by two distinct teams) and it records and replays GWT, ExtJS, Dojo, IceFaces, ZK, Backbase, etc.</p>
<p><strong>Browsers, browsers, browsers:</strong> We wanted to use our skills with browsers (read <a title="WebRenderer home page" href="http://www.webrenderer.com/">WebRenderer</a>) and build upon them. WebRenderer, our browser SDK that embeds Internet Explorer and Firefox, is the foundation of LiquidTest. Using real browsers gives real tests, which produce real results as the user would see them.</p>
<p><strong>Easy to Integrate:</strong> Integrations are a key component of LiquidTest.  The power of using real languages with real unit test frameworks is that they integrate into all the great Developer tools!</p>
<p><strong>Controlling Cost:</strong> We do not want to make LiquidTest prohibitively expensive.  One of the key gripes in this space is price. We totally agree!  To say I was shocked when I saw the prices of the established products is an understatement.  Given the vast majority of commercial tools in this space do not support recording against the vast majority of Web 2.0 frameworks/applications, it is amazing these guys even exist in this day and age.</p>
<p><strong>Develop with Passion:</strong> We are passionate about getting LiquidTest perfect for our users.  The whole LiquidTest team at JadeLiquid is extremely dedicated to improving the product.  LiquidTest has been out in the wild for <strong>12 months</strong> and <strong>we have already released 17 updates! </strong>We want to make the best possible tool, and the key to this is listening to users (Developers) and responding to their feedback.  Passion is what drives us and the challenge is certainly set with automated testing in a Web 2.0 world.</p>
<img src="http://www.jadeliquid.com/blogs/?ak_action=api_record_view&id=312&type=feed" alt="" /><img src="http://feeds.feedburner.com/~r/jadeliquid/~4/dW54nVrSAFg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jadeliquid.com/blogs/2010/knowing-your-enemy-foundations-of-liquidtest.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jadeliquid.com/blogs/2010/knowing-your-enemy-foundations-of-liquidtest.php</feedburner:origLink></item>
		<item>
		<title>Eclipse and LiquidTest UI Introduction</title>
		<link>http://feedproxy.google.com/~r/jadeliquid/~3/EwQV-56Mdnw/eclipse-and-liquidtest-ui-introduction.php</link>
		<comments>http://www.jadeliquid.com/blogs/2009/eclipse-and-liquidtest-ui-introduction.php#comments</comments>
		<pubDate>Tue, 10 Nov 2009 22:37:25 +0000</pubDate>
		<dc:creator>mbayazit</dc:creator>
				<category><![CDATA[JadeLiquid]]></category>
		<category><![CDATA[LiquidTest]]></category>
		<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://www.jadeliquid.com/blogs/?p=154</guid>
		<description><![CDATA[LiquidTest is available as a plug-in for the two most popular Integrated Development Environments (IDE), Eclipse and Visual Studio.  This discussion (also available as a PDF here..) will focus on the Eclipse version and will provide Eclipse-specific tips for LiquidTest users. Testers and/or Developers will benefit from some of the features that are available in [...]]]></description>
			<content:encoded><![CDATA[<p>LiquidTest is available as a plug-in for the two most popular Integrated Development Environments (IDE), Eclipse and Visual Studio.  This discussion (also available as a PDF <a href="http://www.jadeliquid.com/liquidtest/datasheets/Eclipse_LT_UI_Features.pdf" target="_blank">here..</a>) will focus on the Eclipse version and will provide Eclipse-specific tips for LiquidTest users.<span id="more-154"></span></p>
<p>Testers and/or Developers will benefit from some of the features that are available in the IDE (Eclipse) itself, that are not part of the LiquidTest plug-in.  Additionally, this discussion will cover some features and functions that are available in the Eclipse UI due to the LiquidTest plug-in. <strong></strong></p>
<h2><strong><span style="color: #000080;">Eclipse-Specific Features:</span></strong></h2>
<h3><strong>Eclipse Package Explorer tab</strong></h3>
<p>Eclipse uses the Package Explorer tab to organize projects, JRE system library files, the LiquidTest plug-in jar files, the JUnit files and the source folder and the Eclipse packages that hold the LiquidTest scripts.</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/eclipse_package_explorer_tab.jpg" alt="" /></p>
<h3><strong>Eclipse Project creation</strong></h3>
<p>A user may want to create a new Eclipse project to hold LiquidTest scripts.  To do this, select the Eclipse Package Explorer tab and either select File-&gt;New-&gt;Project or right-click in the Eclipse Package Explorer tab and select New-&gt;Project.  For a project that will store Java/JUnit/Groovy (LiquidTest Script) test scripts, select Java-&gt;”Java Project”.  For a project that will store .NET test scripts, select .NET-&gt;”.NET Project”.   Provide a unique project name and click Finish.</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/eclipse_project_creation.jpg" alt="" /></p>
<h3><strong>Eclipse Package creation</strong></h3>
<p>Within an Eclipse project, you can further refine the location that LiquidTest uses to store scripts.  It is recommended that you create a new package to store scripts.  To do this, in the Eclipse Package Explorer tab, right-click the “src” folder in the Eclipse Project that you have just created and select New-&gt;Other. Next, select Package, provide a package name that is unique to this Eclipse Project and then click Finish.</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/eclipse_package_creation.jpg" alt="" /></p>
<h3><strong>Eclipse Perspective button</strong></h3>
<p>Eclipse Perspectives are used to customize the actions and views that are available to the user.  Various tabs, buttons, windows and areas are visible when a particular Perspective is selected via the “Perspective” button in the upper right-hand corner of the Eclipse UI.</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/eclipse_perspective_button.jpg" alt="" /></p>
<h3><strong>JUnit tab</strong></h3>
<p>The JUnit tab is used to track the status of a currently running LiquidTest test case, including iterations, errors and failures.</p>
<ul>
<li> Failure Trace area</li>
</ul>
<p>The Failure Trace area allows you to view the details of any failures that were detected in the test case run.</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/junit_tab.jpg" alt="" /></p>
<h3><strong>Break-points (for Java JUnit Test Scripts only)</strong></h3>
<p>Most LiquidTest users will not need to use break-points but if you need to (for example to pause the test execution to validate something), create your test script as usual, then in the LiquidTest Test code/script tab for the test of interest, select the line you want to set a breakpoint on, then in the area near the left-hand border of the test script tab, right-click and select “Toggle Breakpoint”.</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/breakpoint.jpg" alt="" /></p>
<p>To run the test case and use the breakpoint, you must use “Debug As” by right-clicking on the script and selecting “Debug As” and then selecting the appropriate test type (in this case, JUnit).  When the playback gets to the breakpoint, execution will pause.  To continue, use the Run-&gt;Resume menu item (or F8).</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/debug_as.jpg" alt="" /></p>
<h3><strong>Refactoring (for Java JUnit Test Scripts only)</strong></h3>
<p>It is common for software projects to be refactored frequently to reorganize their form, without changing the external functionality.  This involves activities such as renaming files, classes, methods, variables, etc.  If this had to be done manually, it would be very difficult to know all of the places where this update must be made.  Fortunately, Eclipse has a facility to do this automatically.  This can be done in more than one way.  In the Eclipse Package Explorer tab, you can rename a test script file (or other types as well) by right-clicking on that file and selecting Refactor-&gt;Rename.  There are also other types of refactoring that are available on this menu as well.   If you want to rename a class, method, variable, etc in a test script, simply select the item you want to rename, then right-click on it and select Refactor-&gt;Rename.</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/refactor.jpg" alt="" /></p>
<h3><strong>How to manage the areas of the Eclipse UI</strong></h3>
<p>The Eclipse UI is fairly flexible in how it presents information to the user.</p>
<ul>
<li> Maximizing /Minimizing/Restoring areas</li>
</ul>
<p>Individual areas can be maximized by clicking the Maximize button in the upper right-hand corner of the area.</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/maximize.jpg" alt="" /></p>
<p>Areas can be minimized by clicking the Minimize button in the upper right-hand corner of the area.</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/minimize.jpg" alt="" /></p>
<p>Areas can be restored by clicking on the Restore button for that area (which will be located to the far left and/or right sides of the screen).</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/restore.jpg" alt="" /></p>
<ul>
<li> Reset Perspective</li>
</ul>
<p>As the user works with LiquidTest, they can make changes to the Eclipse Perspective as desired to customize the way information is displayed.  To restore the default settings for a Perspective, make sure the Perspective is active (by using the Eclipse Perspective button) and then select Window-&gt;“Reset Perspective”.</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/reset_liquidtest_perspective.jpg" alt="" /></p>
<h3><strong>Console tab</strong></h3>
<p>The Console tab provides detailed information about warnings, errors and any other unexpected events that are experienced when the test is being recorded or replayed.</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/console_tab.jpg" alt="" /></p>
<h3><strong>Problems tab</strong></h3>
<p>This tab is only available in the Java perspective and provides detailed warnings about the test script code, such as code errors; methods, identifiers and asserts that are never used; type warnings, imported objects not used; etc.  For this example, I have manually edited the test script to insert intentional errors.</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/problems_tab.jpg" alt="" /></p>
<h2><span style="color: #000080;"><strong>LiquidTest Plug-In Features:</strong></span></h2>
<h3><strong>LiquidTest Perspective</strong></h3>
<p>LiquidTest takes advantage of Eclipse perspectives to customize the actions and views that are available to the user.  Various LiquidTest-specific tabs, buttons, windows and areas are visible when the LiquidTest Perspective is selected via the “Eclipse Perspective” button in the upper right-hand corner of the Eclipse UI.  You can verify that Eclipse is in the LiquidTest perspective by checking that LiquidTest is displayed in the upper right-hand corner.</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/liquidtest_perspective.jpg" alt="" /></p>
<p>Like other Eclipse Perspectives, if the LiquidTest Perspective has been modified, the user can restore the LiquidTest Perspective to its default configuration by first selecting the LiquidTest Perspective, then selecting Window-&gt;”Reset Perspective”.  For more information on Eclipse perspectives, see:  <a title="Eclipse Perspectives" href="http://www.eclipse.org/articles/using-perspectives/PerspectiveArticle.html" target="_blank">http://www.eclipse.org/articles/using-perspectives/PerspectiveArticle.html</a></p>
<h3><strong>LiquidTest button</strong></h3>
<p>The LiquidTest button is located directly below the Eclipse menus (File, Edit, Source, etc.) and allows the user to create a new LiquidTest test script, Start Recording, Set LiquidTest Preferences and access online LiquidTest documentation.</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/liquidtest_button.jpg" alt="" /></p>
<h3><strong>LiquidTest Browser window</strong></h3>
<p>This is the window the LiquidTest user interacts with to create test scripts and observe the replay of these scripts.</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/liquidtest_browser_windows_buttons.jpg" alt="" /></p>
<ul>
<li>”Finish Recording”</li>
</ul>
<p>This button is used to finish a recording session.</p>
<ul>
<li>“Lockdown and Inspect”/ “Unlock and Continue”</li>
</ul>
<p>This button is used to allow several test creation actions to be accomplished, such as setting up data-driven form fields, using the LiquidTest Inspector and creating assertions to validate content.  While the user is recording a test script, click “Lockdown and Inspect”.  Then use the Inspector, data-driven and input field and/or create an assertion, then click “Unlock and Continue”.</p>
<ul>
<li> Dynamic Element</li>
</ul>
<p>Allows a user to specify that this object’s identification will change on different iterations of the test, so simply identify and locate the object by the full XPath.</p>
<ul>
<li> Code Options</li>
</ul>
<p>Pick which Code Option to use from a list of established Code Options.  Code options allow the user to define how HTML objects are identified and are particularly useful for new web frameworks.  For more information on code options, see:  <a title="Code Options" href="http://www.jadeliquid.com/liquidtest/docs/doku.php?id=general:recording_options" target="_blank">http://www.jadeliquid.com/liquidtest/docs/doku.php?id=general:recording_options</a></p>
<ul>
<li> LiquidTest Actions</li>
</ul>
<p>Allows the user to attach an Excel spreadsheet for parameterization data and to insert or run methods from other files.</p>
<h3><strong>LiquidTest Inspector tab</strong></h3>
<p>This tab is used when recording scripts, using the “Lockdown and Inspect” feature and for selecting the desired object to create an assertion to validate that content is appearing correctly or to parameterize data.  To use this feature, start recording a script, navigate to the point where you want to use the Inspector and click “Lockdown and Inspect” and then click on the object of interest.</p>
<ul>
<li> Structured tab</li>
</ul>
<p>The Structured tab shows a lot of useful information about the HTML elements that appear on the page.</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/inspector_structured_tab.jpg" alt="" /></p>
<p>*XPath<br />
The XPath LiquidTest utilizes to identify the HTML element.</p>
<p>*DOM tree<br />
An orderly display of the HTML elements, including some information such as the name, id and value of the element.</p>
<p>*Properties of Selected Node<br />
This area allows you to observe and select all the available properties of the selected element and also allows you to assert on any selected property.</p>
<p>*Asserts added to current page<br />
Shows a listing of all the assertions that have been created for this page.</p>
<ul>
<li>HTML tab</li>
</ul>
<p>Shows the HTML code that has been downloaded to the browser.</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/inspector_html_tab.jpg" alt="" /></p>
<h3><strong>LiquidTest Test code/script tabs</strong></h3>
<p>LiquidTest uses one area to group one or more LiquidTest Test cases which are selectable by clicking their individual tabs.  Within these tabs, the user can observe the code, modify and save changes, run the test and more.</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/liquidtest_test_script_tabs.jpg" alt="" /></p>
<h3><strong>LiquidTest Event Viewer tab</strong></h3>
<p>This tab is located near the bottom of the Eclipse UI and allows the user to see what HTML events have occurred at any point during the recording process.  This is useful to ensure that an activity has been completed before the test case recording engine proceeds to the next step.</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/liquidtest_event_viewer_tab.jpg" alt="" /></p>
<h3><strong>LiquidTest Data Driven Fields tab</strong></h3>
<p>This tab is located near the bottom of the Eclipse UI and allows the user to see the properties of all the data-driven parameterization of fields, as well as the data-driven asserts that have been created for this test script.</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/data_driven_test_tab.jpg" alt="" /></p>
<p>The following information is displayed:</p>
<ul>
<li> Type – Either “Bound Field” or “Assertion”;</li>
<li>Column Header – Which column is being used in the spreadsheet for this item;</li>
<li>XPath Bound – What XPath or identifier is being used to identify the element being data-driven;</li>
<li>Page Title – What is the title of the HTML page;</li>
<li>URL –The URL of the HTML page.</li>
</ul>
<h3><strong>LiquidTest Assertion History tab</strong></h3>
<p>While the LiquidTest script is being recorded, this tab shows which assertions have been created and information about:</p>
<ul>
<li>Assertion Type – What type of assertion is being performed (text content, attribute, etc.);</li>
<li>Verifying Value – The value that is being asserted;</li>
<li>Verifying XPath – The XPath or other identifier being used to identify the object;</li>
<li>Page Title – Title of the HTML page.</li>
<li>Page URL – Full URL of the page being tested.</li>
</ul>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/assertion_history_tab.jpg" alt="" /></p>
<h3><strong>LiquidTest Script Runner tab</strong></h3>
<p>This tab only appears when you are running a LiquidTest Script (Groovy) test case and provides technical information about a LiquidTest Script as it is being run, such as warnings, diagnostic messages, pass/fail etc.  This is useful for script debugging.</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/liquidtest_script_runner_tab.jpg" alt="" /></p>
<h3><strong>LiquidTest Script Creation</strong></h3>
<p>To create a new LiquidTest test case &#8211; In the Eclipse Package Explorer tab, open the project that you want to store the test script in, then right-click the specific package you want to store this test script in and select New-&gt;”LiquidTest Test”.  Change the Test Case Writer selection if needed, provide a name for the test case, add a data-driven spreadsheet if desired, click “Start Recording Now” and then click Finish.</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/liquidtest_script_creation.jpg" alt="" /></p>
<h3><strong>Right-Click on Test Script menu-options (Run, Record, etc.)</strong></h3>
<p>Some actions can be invoked easily by right-clicking on the test script of interest and selecting:</p>
<ul>
<li>“Run As”-&gt;”JUnit Test” (or “Ruby Application” or “TestNG Test”).  This runs the test case;</li>
<li>“Record a Test Method” to start recording a new test method;</li>
<li>“Record Test Method After Selected Test Method” to replay the script to this point and start recording a new test method;</li>
<li>“Additional LiquidTest Recording Actions”-&gt;”Record Test Method from Current Page” to just start recording on the page that is currently loaded into the LiquidTest Browser tab;</li>
<li>“Additional LiquidTest Recording Actions”-&gt;”Record Test Method After Selected Methods from Files” to replay a test method from a different file and then start recording;</li>
<li>“Additional LiquidTest Recording Actions”-&gt;”Record Test in Current Method” to replay the test method back and then start recording in the same test method.</li>
</ul>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/right-click_testscript_menu-options.jpg" alt="" /></p>
<h3><strong>LiquidTest Preferences</strong></h3>
<p>This can be accessed via the LiquidTest button drop-down menu or the Eclipse menus via Window-&gt;Preferences-&gt;LiquidTest.  Some basic preferences can be set at this level (such as default browser, cookie handling, mouse event handling, timeouts/delays and showing running tests).</p>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/liquidtest_preferences.jpg" alt="" /></p>
<p>More preferences can be set by selecting the LiquidTest sub-preferences:</p>
<ul>
<li>Inspector – Set the border color, width and style for highlighting objects in the Inspector.</li>
</ul>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/liquidtest_preferences_inspector.jpg" alt="" /></p>
<ul>
<li> License – View license details and update the license key.</li>
</ul>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/liquidtest_preferences_license.jpg" alt="" /></p>
<ul>
<li>Recording – Set default test case type, code options, event tracking, default URL and lockdown options.</li>
</ul>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/liquidtest_preferences_recording.jpg" alt="" /></p>
<ul>
<li>Screen Capture – Set preferences for where to store screen captures when test cases fail.</li>
</ul>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/liquidtest_preferences_screen_capture.jpg" alt="" /></p>
<ul>
<li>URL Configuration – Set URL replacement preferences to allow you to create scripts on one website and then play them back against another (for example, scripting against a test environment and running them against a production environment).</li>
</ul>
<p><img src="http://www.jadeliquid.com/images/blog/10_11_2009/liquidtest_preferences_url_configuration.jpg" alt="" /></p>
<p>This document is available in PDF format from <a href="http://www.jadeliquid.com/liquidtest/datasheets/Eclipse_LT_UI_Features.pdf" target="_blank">here..</a></p>
<img src="http://www.jadeliquid.com/blogs/?ak_action=api_record_view&id=154&type=feed" alt="" /><img src="http://feeds.feedburner.com/~r/jadeliquid/~4/EwQV-56Mdnw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jadeliquid.com/blogs/2009/eclipse-and-liquidtest-ui-introduction.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jadeliquid.com/blogs/2009/eclipse-and-liquidtest-ui-introduction.php</feedburner:origLink></item>
		<item>
		<title>Testing Dynamic Elements – Having a Plan B</title>
		<link>http://feedproxy.google.com/~r/jadeliquid/~3/9asR5GVYzho/testing-dynamic-elements-having-a-plan-b.php</link>
		<comments>http://www.jadeliquid.com/blogs/2009/testing-dynamic-elements-having-a-plan-b.php#comments</comments>
		<pubDate>Tue, 13 Oct 2009 04:49:52 +0000</pubDate>
		<dc:creator>dthomas</dc:creator>
				<category><![CDATA[JadeLiquid]]></category>
		<category><![CDATA[LiquidTest]]></category>
		<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://www.jadeliquid.com/blogs/?p=120</guid>
		<description><![CDATA[LiquidTest has many varied features and functions. In this blog post I will explain a small but important feature with an example. This feature is a small check box you see at the bottom of your browser when recording a test with LiquidTest, called Dynamic Element. In this test, I am going to go to [...]]]></description>
			<content:encoded><![CDATA[<p>LiquidTest has many varied features and functions. In this blog post I will explain a small but important feature with an example. This feature is a small check box you see at the bottom of your browser when recording a test with LiquidTest, called <strong>Dynamic Element</strong>.<span id="more-120"></span></p>
<p>In this test, I am going to go to Ebay.com.au and I am going to search for a golf driver. After navigating to the site and entering into the search field &#8220;golf driver&#8221;, eBay does its magic and comes back with a list of results.</p>
<p>However, I want to test an eBay feature and that is the ability to sort the search results and in particular I want to test against the option &#8220;Distance: nearest first&#8221; (see below).</p>
<p><img src="http://www.jadeliquid.com/images/blog/13_10_2009/liquidtest_best_match.gif" alt="" /></p>
<p>When you select this option, eBay will load up an internal frame requesting your postal code:</p>
<p><img src="http://www.jadeliquid.com/images/blog/13_10_2009/liquidtest_enter_location.gif" alt="" /></p>
<p>We enter our postal code (in our case, 7000) and then click the &#8220;Save&#8221; button. eBay then presents our search results in order (closest to furthest). Next, we press the LiquidTest &#8220;Finish record&#8221; button and LiquidTest writes the following test script:</p>
<p><img src="http://www.jadeliquid.com/images/blog/13_10_2009/liquidtest_test_case_1.gif" alt="" /></p>
<p>Although LiquidTest produced a nice and simple to follow test script, there is a problem when I replay the test:</p>
<p><img src="http://www.jadeliquid.com/images/blog/13_10_2009/liquidtest_script_error.gif" alt="" /></p>
<p>This failure is due to a dynamic element created by the &#8220;Distance : nearest to me&#8221; option. The elements ID is randomly generated, in this case we can see elements ID in the test script as “v4-1254714420097”. Some frameworks use Dynamic elements as a matter of necessity. With some tools, this can present a headache and a lot of extra work to code the test to allow for this.</p>
<p>However with LiquidTest, we have addressed this issue with a simple to use feature.  Take the above test, this time when I am recording the test and I get to the internal pop up screen with the dynamic element. I will click on the LiquidTest &#8220;dynamic element&#8221; button before I input our postal code like so:</p>
<p><img src="http://www.jadeliquid.com/images/blog/13_10_2009/liquidtest_dynamic_element.gif" alt="" /></p>
<p><img src="http://www.jadeliquid.com/images/blog/13_10_2009/liquidtest_enter_location.gif" alt="" /></p>
<p>Selecting the <strong>Dynamic Element</strong> option in LiquidTest tells LiquidTest that the objects we are testing on this page have either dynamic content or IDs. When selected LiquidTest does not to use the object names or IDs but instead utilizes the full XPath for this element.</p>
<p>The newly recorded test will then be created like this:</p>
<p><img src="http://www.jadeliquid.com/images/blog/13_10_2009/liquidtest_test_case_2.gif" alt="" /></p>
<p>The resulting test case uses a full XPath to reference the dynamic element. Because this does not reference specific ID&#8217;s or text content, this test will replay without issue.</p>
<p>Whilst we generally prefer to use the IDs for elements on a page as it creates a more robust test, sometimes it is not possible.  When it isn&#8217;t possible, it is good to have a backup plan. So that&#8217;s why we added the <strong>Dynamic Element</strong> button, consider it &#8220;Plan B&#8221;. And best of all, as in this case, you don&#8217;t have to use XPaths for every element, just the elements that are dynamic.</p>
<img src="http://www.jadeliquid.com/blogs/?ak_action=api_record_view&id=120&type=feed" alt="" /><img src="http://feeds.feedburner.com/~r/jadeliquid/~4/9asR5GVYzho" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jadeliquid.com/blogs/2009/testing-dynamic-elements-having-a-plan-b.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jadeliquid.com/blogs/2009/testing-dynamic-elements-having-a-plan-b.php</feedburner:origLink></item>
		<item>
		<title>Setting up LiquidTest with Subversion and Hudson (Continuous Integration) part 2</title>
		<link>http://feedproxy.google.com/~r/jadeliquid/~3/nC_i05p94zA/setting-up-liquidtest-with-subversion-and-hudson-continuous-integration-part-2.php</link>
		<comments>http://www.jadeliquid.com/blogs/2009/setting-up-liquidtest-with-subversion-and-hudson-continuous-integration-part-2.php#comments</comments>
		<pubDate>Wed, 09 Sep 2009 04:47:56 +0000</pubDate>
		<dc:creator>Anthony Scotney</dc:creator>
				<category><![CDATA[JadeLiquid]]></category>
		<category><![CDATA[LiquidTest]]></category>
		<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://www.jadeliquid.com/blogs/?p=109</guid>
		<description><![CDATA[This post follows on from part 1 where we walked through the Ubuntu, Subversion and LiquidTest (Eclipse) setup. Assuming that your project is now in your subversion repository we walk through the Continuous Integration setup with the popular (and Open Source) Hudson CI server. Contents of this blog Setting up Hudson Configure Hudson from the [...]]]></description>
			<content:encoded><![CDATA[<p>This post follows on from <a href="http://www.jadeliquid.com/blogs/2009/setting-up-liquidtest-with-subversion-and-hudson-continuous-integration-part-1">part 1</a> where we walked through the <a title="Ubuntu" href="http://www.ubuntu.com/" target="_blank">Ubuntu</a>, <a title="Subversion - Version Control System" href="http://subversion.tigris.org/" target="_blank">Subversion</a> and <a title="LiquidTest - Agile Web Application Testing" href="http://www.jadeliquid.com/liquidtest/" target="_blank">LiquidTest</a> (Eclipse) setup. Assuming that your project is now in your subversion repository we walk through the Continuous Integration setup with the popular (and Open Source) <a title="Hudson Continuous Integration Server" href="https://hudson.dev.java.net/" target="_blank">Hudson CI server</a>.<span id="more-109"></span></p>
<h2>Contents of this blog</h2>
<ul>
<li>Setting up Hudson</li>
<li>Configure Hudson from the Hudson web interface</li>
<li>The liquidtest.properties file</li>
<li>The Build File (build.xml)</li>
</ul>
<h2>Setting up Hudson:</h2>
<p><strong><span style="color: #888888;"> </span></strong><span style="color: #888888;"><span style="color: #000000;">1) Create the necessary directory and download <a title="Hudson Continuous Integration Server" href="https://hudson.dev.java.net/">Hudson</a>:<br />
<strong> mkdir /home/hudson<br />
cd /home/hudson<br />
wget &#8211;no-check-certificate http://hudson.gotdns.com/latest/hudson.war</strong></span></span></p>
<p>2) Start up Hudson (note Hudson has an internal server that runs on port 8080 by default):<br />
<strong> java -jar hudson.war</strong></p>
<p>3) Navigate your Browser to the IP where your server resides and specify port 8080. eg:</p>
<p>http://192.168.161.128:8080/</p>
<p><img src="http://www.jadeliquid.com/images/blog/08_09_2009/view_of_hudson.gif"></p>
<h2>Configure Hudson from the Hudson web interface</h2>
<p>Assuming that you successfully started Hudson and that you have not &#8220;firewalled&#8221; any ports, you should see the Hudson welcome screen when navigating to http://192.168.161.128:8080 (or your Servers IP address &#8211; remember in <a href="http://www.jadeliquid.com/blogs/2009/setting-up-liquidtest-with-subversion-and-hudson-continuous-integration-part-1">part 1</a> we setup VMWare and used NAT).</p>
<p><strong><span style="color: #888888;">Setup ANT (the Java build tool)</span></strong><br />
1) Configure <a title="Apache ANT" href="http://ant.apache.org/" target="_blank">ANT</a> in Hudson: &#8220;Manage Hudson&#8221; -&gt; &#8220;Configure System&#8221; -&gt; &#8220;Add Ant&#8221; (under the Ant heading), give Ant a &#8220;name&#8221; and point it to your ANT install directory (then Save &#8211; the button is at the bottom of page), which in this case (set in <a href="http://www.jadeliquid.com/blogs/2009/setting-up-liquidtest-with-subversion-and-hudson-continuous-integration-part-1">part 1</a>) is: <strong>/home/apache-ant-1.7.1/</strong></p>
<p><strong><span style="color: #888888;">Building your Hudson &#8220;New Job&#8221;:</span></strong><br />
1) On the Hudson welcome screen, click on the &#8220;New Job&#8221; option (on the left-hand menu &#8211; see screenshot above).<br />
2) Give your Job an appropriate name and select &#8220;Build free-style software project&#8221;<br />
3) Click on the &#8220;LiquidTestAutomation&#8221; (or whatever you called your job) and then click the &#8220;Configure&#8221; option.<br />
<img src="http://www.jadeliquid.com/images/blog/08_09_2009/hudson_liquidtest_automation_setup.gif"></p>
<p>Here we are met with lots of configuration options. To keep things simple I will run through the basic sections and selections pertinent to this setup.</p>
<p><strong>Source Code Management:<br />
</strong>1) Select &#8220;Subversion&#8221;<br />
<img src="http://www.jadeliquid.com/images/blog/08_09_2009/hudson_svn_setup.gif"><br />
2) Enter the URL to your subversion server (if you followed the setup above you will need to &#8220;enter credentials&#8221; aka username:password) eg: http://192.168.161.128/svn/LiquidTestProject/<br />
3) Enter your username and password (when prompted) and Save the project and re-open the Configuration screen (click project, then &#8220;Configure&#8221;). Note: If you did not save the project you will need to re-enter the SVN location URL (step 2 above).</p>
<p><strong>Build Triggers: </strong>&#8220;Poll SCM&#8221; and add &#8220;* * * * *&#8221; to poll subversion every minute for changes to your Tests</p>
<p><strong>Add build step: Invoke Ant<br />
</strong>Select your &#8220;Ant Version&#8221; that you configured above<br />
In the &#8220;Targets&#8221; field, put &#8220;runtests&#8221; (for more information on &#8220;runtests&#8221; see below in the build.xml file), and click &#8220;Advanced..&#8221; and add build.xml as your &#8220;Build File&#8221;</p>
<p><strong>Post-build Actions:<br />
</strong>Check the &#8220;Publish JUnit test result report&#8221; and add &#8220;**/*.xml&#8221; to the field.</p>
<p><strong>Save..</strong></p>
<p>Now click on &#8220;LiquidTestAutomation&#8221; and then &#8220;Build Now&#8221;. Your project should build and fail..</p>
<h2>The liquidtest.properties file</h2>
<p>The LiquidTest Server Edition (liquidtest-nodeps-x.x.x.jar) requires a properties file to set the license key. This properties file is named &#8220;liquidtest.properties&#8221;. Without the liquidtest.properties file <strong>LiquidTest will not run</strong>. If you do not have a liquidtest.properties file, create one with notepad (or nano!) and add the following line:</p>
<p><strong>licenseKey=&lt;YOUR LiquidTest Server LICENSE KEY&gt;</strong></p>
<p>After entering the license key you should submit this file to subversion, in the root directory of your project (see <a href="http://www.jadeliquid.com/blogs/2009/setting-up-liquidtest-with-subversion-and-hudson-continuous-integration-part-1">Part 1</a> of this blog if you are in doubt). <strong><br />
</strong></p>
<h2>The Build file (build.xml)</h2>
<p>In this tutorial we are using ANT to provide direction to <a title="Hudson Continuous Integration Server" href="https://hudson.dev.java.net/" target="_blank">Hudson</a> on what to compile, run and how to report the results. Given that we are using <a title="Apache ANT" href="http://ant.apache.org/" target="_blank">ANT</a> we need to populate our <strong>build.xml</strong> (download from <a title="LiquidTest build.xml file" href="http://www.jadeliquid.com/images/blog/08_09_2009/build.xml" target="_blank">here..</a>) file with the following and check the file into Subversion in the root project directory (In LiquidTest, click on the file, right-click and select &#8220;Team..&#8221; and then &#8220;Commit..&#8221;):</p>
<pre name="code" class="xml">
&lt;project name="LiquidTestProject-02-08-09" default="runtests">

	&lt;property name="src" value="src" />
	&lt;property name="build" value="build" />
	&lt;property name="bin" value="${build}/bin" />
	&lt;property name="junit.log.dir" value="${build}/log" />

	&lt;!-- NOTE: Set the versions of LiquidTest Server and JUnit to the versions you are using -->
	&lt;property name="junit.version" value="4.5" />
	&lt;property name="liquidtest.server.version" value="1.0.11" />

	&lt;!-- Creating a target to remove the old compiled code -->
	&lt;target name="clean">
		&lt;delete dir="${build}"/>
	&lt;/target>

	&lt;!-- The compile step for the tests -->
	&lt;target name="compile">
		&lt;mkdir dir="${bin}"/>
		&lt;javac srcdir="${src}"
	         destdir="${bin}"
	        debug="off"
	         source="1.5">
			&lt;classpath>
				&lt;path location="liquidtest-nodeps-${liquidtest.server.version}.jar" />
				&lt;path location="junit-${junit.version}.jar" />
			&lt;/classpath>
		&lt;/javac>
		&lt;copy file="liquidtest.properties" todir="${bin}" />
	&lt;/target>

	&lt;!-- The run step of the build file -->
	&lt;target name="runtests" depends="clean, compile">
		&lt;mkdir dir="${junit.log.dir}"/>
		&lt;junit showoutput="true" failureproperty="test.failed" printsummary="true" fork="true">
			&lt;!-- Setting up our Java classpath -->
			&lt;classpath>
				&lt;pathelement path="${bin}"/>
				&lt;pathelement path="liquidtest-nodeps-${liquidtest.server.version}.jar"/>
				&lt;pathelement path="junit-${junit.version}.jar"/>
			&lt;/classpath>
			&lt;formatter type="xml"/>

			&lt;!-- building a task for all .java files -->
			&lt;batchtest todir="${junit.log.dir}">
				&lt;fileset dir="${src}">
		            &lt;!-- Add includes and excludes to select which tests to run ** means any directory -->
					&lt;include name="**/*.java" />
				&lt;/fileset>
			&lt;/batchtest>
		&lt;/junit>

		&lt;!-- Specifying a task for LiquidTest Script (Groovy) tests -->
		&lt;runliquidtest todir="${junit.log.dir}">
		    &lt;fileset dir="." includes="**/*.lqt"/>
	        &lt;classpath>
	        	&lt;pathelement path="${bin}"/> &lt;!-- NOTE CHANGED THIS FROM bin -->
				&lt;pathelement path="liquidtest-nodeps-${liquidtest.server.version}.jar"/>
	        &lt;/classpath>
		&lt;/runliquidtest>
	&lt;/target>

	&lt;taskdef name="runliquidtest" classname="com.jadeliquid.liquidtest.ant.scripting.RunLiquidTestsTask">
	    &lt;classpath>
	    	&lt;pathelement path="${bin}"/>
			&lt;pathelement path="liquidtest-nodeps-${liquidtest.server.version}.jar"/>
	    &lt;/classpath>
	&lt;/taskdef>

&lt;/project>
</pre>
<img src="http://www.jadeliquid.com/blogs/?ak_action=api_record_view&id=109&type=feed" alt="" /><img src="http://feeds.feedburner.com/~r/jadeliquid/~4/nC_i05p94zA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jadeliquid.com/blogs/2009/setting-up-liquidtest-with-subversion-and-hudson-continuous-integration-part-2.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jadeliquid.com/blogs/2009/setting-up-liquidtest-with-subversion-and-hudson-continuous-integration-part-2.php</feedburner:origLink></item>
	</channel>
</rss>

