<br></br>

<html>
<head>
<style type="text/css" title="text/css" media="screen">
td  {
	border-top: 1px solid #D4D4DD;
	text-align: left;
	vertical-align: top;
	font-weight: normal;
	padding: 5pt;
	width: 425px;
}

td.entry_cell {
	font-weight: bold;
	width: 30%
}

td.change {
	font-style: italic;
	color: red;
}

table {
    border-top-style: none;
 	border-collapse: collapse;
}

h2 {
	border-bottom: none;
}

img {
	max-width: 425px;
}

</style>
</head>
<body>


<div id="topmain">

<div id="right">
<h2>
Were you looking for:</h2>
<ul>
<li><a href="../../Luna/Main/new_luna.php">What's New for the Luna Release?</a>
<li><a href="../../Kepler/Main/new_kepler.php">What's New for the Kepler Release?</a>
<li><a href="../../Juno/Main/new_juno.php">What's New for the Juno Release?</a>
<li><a href="../SR1/new_indigosr1.php">What's New for the Indigo SR1 Release?</a></li>
<li><a href="../SR2/new_indigosr2.php">What's New for the Indigo SR2 Release?</a>
</ul>
</div>
<div id="left">
<br>

<h1>What's new in Jubula Indigo</h1>

<h2>What's "old"</h2>
<p>
The Indigo release for Jubula consists for the most part of the features released with 
the pre-release version, which in turn is almost the same feature-set 
as was in GUI<i>dancer</i> 4.3.
<br>
Because of this, everything is new for this first release of Jubula! 
</p>

<h3>A really quick overview of what was in already:</h3>

<ul>
<li>You can create (automate) tests by dragging and dropping modules from libraries of actions
installed with Jubula.</li>
<li>Tests can be automated for AUT's (Applications Under Test) written with Swing, SWT/RCP/GEF and HTML.</li>
<li>Tests can be executed interactively or via the test executor (e.g. for continuous integration).</li>
<li>Test results can be viewed directly in the Integrated Test Environment after execution and 
can also be reopened for later analysis, as they are stored in the database.</li>
<li>Errors in the test are recorded automatically as screenshots and can be dealt with using "Event Handlers".</li>
<li>There are various options for searching, categorizing and filtering to make working with Jubula more 
comfortable.</li>
</ul>
<p>
The best thing to do to find out more is to read the documentation and do the cheat sheets 
to see what you can do with the tool.

Look at the <a href="../../../documentation.php">documentation</a> page for more details. 
</p>

<h2>What's new</h2>

<table>
<tr>
		<td class="entry_cell">
		Interactive test analysis:<br>
		Continue without Event Handler
		</td>
		<td>
		<p>
		When running tests from the Integrated Test Environment (ITE), you could
		already globally opt to pause the test execution if any errors occur. Using 
		the new "continue without Event Handler" button on the toolbar, 
		you can specify on an error-for-error basis
		whether to execute an Event Handler for the error or whether to continue the test 
		<i>as if</i> no error had occured. 
		<br>
		This lets you get a quick overview of the status of the whole test without having to 
		restart the execution / reset the application after each error. 
		</p>
		<img alt="Continue without Event Handler" src="../images/ContinueWithoutEH.png">
		</td>	
	</tr>
	<tr>
		<td class="entry_cell">
		Copy ID to clipboard and Open Test Case from ID
		</td>
		<td>
		<p>
		To allow a light integration with external systems, the unique ID for a Test Case
		can now be copied to the clipboard. An ID already in the clipboard can be used to open a Test 
		Case using the key combination Shift+F9.
		</p>
		<img alt="Copy ID to clipboard" src="../images/CopyID.png">
		</td>	
	</tr>
	<tr>
		<td class="entry_cell">Database configuration</td>
		<td>
		<p>     
		Database configuration is now a part of the preferences. The default database
		is the embedded (H2) database. Other databases can be added via the database preference
		page.
		</p>
		</td>	
	</tr>
	<tr>
		<td class="entry_cell">Test execution speed</td>
		<td>
		<p>
		We have significantly increased the speed at which tests are executed. 
		Use the <i>Step Delay</i> field in the Properties View for a Test Suite 
		to set a global delay between executed steps to make watching a test easier.
		</p> 
		</td>	
	</tr>
	<tr>
		<td class="entry_cell">Added support for components</td>
		<td>
		<p>
		Div containers and lists in HTML applications are now supported. <br>
		The SWT components <i>slider, date and time, spinner</i> and <i>scale</i>
		are now supported as <i>Graphics Components</i> (i.e. they can be mapped, clicked and 
		checked for existence, focus and various properties).
		</p>
		</td>
	</tr>
		<tr>
		<td class="entry_cell">HTML ID Attribute Name</td>
		<td>
		<p>
		In the AUT configuration, you can now specify an attribute name which will be 
		use to identify components in the HTML AUT.
		</p>
		</td>
	</tr>
		<tr>
		<td class="entry_cell">Renaming and restructuring</td>
		<td>
		<p>
		The perspective names and some names for components have changed. The options to 
		open, import, export and delete projects are now in the "Test" menu <i>not in the "File" menu</i>, 
		and the preferences are now under the topic "Test".
		</p>
		</td>
	</tr>
		<tr>
		<td class="entry_cell">Migrating from GUI<i>dancer</i> 4.3 to Jubula</td>
		<td>
		<p>
		Read the Installation Manual for information on migrating from a 4.3 database to 
		the new database scheme. Any existing extensions must also be migrated:
		</p>
		<ul>
		<li>The package names have changed from <i>com.bredexsw.guidancer</i> to 
		<i>org.eclipse.jubula</i></li>
		<li>The class prefix name GD has been replaced by JB</li>
		<li>Client and server (RC) files must be adapted and recompiled with the new Jar files.</li>
		</ul>
		</td>
	</tr>

</table>

<h2><a href="https://bugs.eclipse.org/bugs/buglist.cgi?chfieldto=2011-06-10;query_format=advanced;chfield=bug_status;bug_status=RESOLVED;bug_status=CLOSED;classification=Technology;product=Jubula">Fixed Bugs for Indigo</a></h2>

</div>

</div>