Contributing to RCP Testing Tool
================================

Thanks for your interest in this project.

Project description:
--------------------

RCP Testing Tool allows create and execute test cases for Eclipse-based applications with minimal effort. The minimal required configuration of applications under test is as simple as browsing for a folder for binary AUTs or choosing a PDE launch configuration for AUTs from sources. A typical workflow to create a test case which should work in most cases looks like this: capture an application state, record test actions, add assertions. More complex activities including test parameterization, extracting common pieces of functionality into reusable actions, writing test cases manually before UI, and test case debugging are also available. Developers can extend the tool&#39;s functionality to add record/replay support of custom widgets and capture/apply support of custom aspects of an application state.
For more details on RCPTT visit http://eclipse.org/rcptt.

- https://projects.eclipse.org/projects/technology.rcptt

Developer resources:
--------------------

Information regarding source code management, builds, coding standards, and more.

- https://projects.eclipse.org/projects/technology.rcptt/developer

Contributor License Agreement:
------------------------------

Before your contribution can be accepted by the project, you need to create and electronically sign the Eclipse Contributor Agreement (ECA).

- http://www.eclipse.org/legal/ECA.php

Contact:
--------

Contact the project developers via the project's "dev" list.

- https://dev.eclipse.org/mailman/listinfo/rcptt-dev

Search for bugs:
----------------

This project uses Bugzilla to track ongoing development and issues.

- https://bugs.eclipse.org/bugs/buglist.cgi?product=RCPTT

Create a new bug:
-----------------

Be sure to search for existing bugs before you create another one. Remember that contributions are always welcome!

- https://bugs.eclipse.org/bugs/enter_bug.cgi?product=RCPTT

Build RCPTT localy:
-------------------

Run the script build.sh for a local RCPTT IDE build. The build result will be in repository/full/target/products.
Additionally run the script build_runner.sh for a local RCPTT Runner build. The build result will be in runner/product/target.
