<div id="bigbuttons">
	<h3>Primary Links</h3>
	<ul>
		<li><a id="buttonDownload" href="http://wiki.eclipse.org/SWTBot#Latest_snapshot_build" title="Download">Eclipse
		Distribution, Update Site, Dropins</a></li>
		<li><a id="buttonDocumentation" href="http://wiki.eclipse.org/SWTBot"
			title="Documentation">Tutorials, Examples, Videos, Reference Documentation</a></li>
		<li><a id="buttonSupport" href="http://wiki.eclipse.org/SWTBot/Support" title="Support">Bug
		Tracker, Newsgroup, Support</a></li>
		<li><a id="buttonInvolved" href="http://wiki.eclipse.org/SWTBot/Contributing" title="Getting Involved">Contributor Guide, Mailing Lists, Wiki</a></li>
	</ul>
</div>

<div id="midcolumn">
	<h1>What is SWTBot?</h1>
	<p>SWTBot is an open-source Java based UI/functional testing tool for testing <a href="/swt">SWT</a>, <a href="/">Eclipse</a> and <a href="/gef">GEF</a> based applications.</p>

	<p>SWTBot provides APIs that are simple to read and write. The APIs also hide the complexities involved with SWT and Eclipse. This makes it suitable for UI/functional testing by everyone, not just developers. SWTBot also provides its own set of assertions that are useful for SWT. You can also use your own assertion framework with SWTBot.</p>

	<p>SWTBot integrates with Eclipse PDE, Eclipse headless testing framework, Ant and <a href="http://eclipse.org/tycho">Tycho</a>, so it's easy to use in your IDE and Headless Builds (as part of a CI job for example).</p>

	<p>SWTBot can run on all platforms that SWT runs on. Very few other testing tools provide such a wide variety of platforms.</p>

	<p>Starting from version 2.1.0, SWTBot also provide a <a href="http://wiki.eclipse.org/SWTBot/Generator">Test Recorder and Generator</a> that you can use to generate your test case simply by recording the UI actions as an end-user would perform them. This is really helpful to get quickly a first sketch of your SWTBot scenario and reduce costs of writing tests.</p>

</div>

<div id="rightcolumn">

<p>
<a class="twitter-timeline"  href="https://twitter.com/search?q=%23SWTBot"  data-widget-id="387570714603053056">Tweets about "#SWTBot"</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
</p>

<script type="text/javascript" src="http://www.ohloh.net/p/34990/widgets/project_factoids_stats.js"></script>

</div>



<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-910670-2']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>
<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-414875-5']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>