GithubHelp home page GithubHelp logo

reddeer's Introduction

Eclipse RedDeer Testing Framework

Eclipse RedDeer project is an extensible framework used for development of automated SWT/Eclipse tests which interacts with application’s user interface. RedDeer provides the PageObjects API for comfortable testing of standard SWT (Buttons, Trees..), JFace (UIForms), Workbench (Views, Editors, ..) and Eclipse (Wizards, Preferences,...) components and also allows creating and extending your own components. RedDeer also provides capabilities to work with graphical editors based on GEF or Graphiti.

Eclipse RedDeer is extensively tested on Linux/CentOS platform. Examination of test results in CI environment is easier thanks to capturing screenshots on test failures and collecting Eclipse Platform log.

At this time RedDeer is not actively maintained

We are not currently actively developing and maintaining the framework, in case that you are interested in the maintaining the project, please contact the project leads.

Get the code

The easiest way to get started with the code is to create your own fork, then clone your fork and finally add upstream:

$ git clone [email protected]:<you>/reddeer.git
$ cd reddeer
$ git remote add upstream http://github.com/eclipse/reddeer.git

Build RedDeer locally

In case that you have the git repo cloned locally, you can build it using maven:

$ mvn clean install

If you just want to build the base and not to run tests, use this:

$ mvn clean install -DskipTests=true

Installation

Using RedDeer eclipse update site

Copy-Paste this URL to Eclipse Help -> Install New Software...:

http://download.eclipse.org/reddeer/releases/latest

Or latest nightly build:

http://download.eclipse.org/reddeer/snapshots

Finish the installation & restart IDE.

Using locally built artifacts

Search your repo for path-to-your-git/reddeer/site/repository and paste this path to Eclipse Help -> Install New Software...

Getting Started

Go through Getting Started guide.

Documentation

See RedDeer Documentation.

Contributing

See how to contribute to the project.

Contact us

reddeer's People

Contributors

apodhrad avatar dependabot[bot] avatar happz avatar jkopriva avatar jniederm avatar jpeterka avatar jrichter1 avatar ldimaggi avatar lgrossma avatar ljelinkova avatar luvalach avatar mailaender avatar mbooth101 avatar mlabuda avatar mmalina avatar nickboldt avatar odockal avatar olkornii avatar psrna avatar psuchy avatar rawagner avatar rhopp avatar robstryker avatar sbouchet avatar sbunciak avatar scabanovich avatar thejnovak avatar tsedmik avatar vpakan avatar zcervink avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

reddeer's Issues

Support for JFace Column viewer representation

protected List getItems(boolean shellItem) {
expand();
List items = new LinkedList();
for (SWTBotTreeItem childrenTreeItem : item.getItems()) {
String[] treeItemPath = new String[] {childrenTreeItem.getText()};
if (shellItem) {
items.add(new ShellTreeItem(treeIndex,joinTwoArrays(getPath(), treeItemPath)));
} else {
items.add(new ViewTreeItem(treeIndex,joinTwoArrays(getPath(), treeItemPath)));
}
}
return items;
}

Note line "items.add(new ShellTreeItem(treeIndex,joinTwoArrays(getPath(), treeItemPath)));"
This doesn't take into account the following situation:

Tree
-> Item A | Cell A // one node can consists of severeal cells!
-> Item A | Cell B // getCell(0) = 'Item A'; getCell(1) = 'Cell B'

These two different tree items have the same path which is "Tree > Item A".
That's why the method getItems() returns the following list
List = [Item A | Cell A ], [Item A | Cell A ]
instead of
List = [Item A | Cell A ], [Item A | Cell B ]

User Guide - Test execution of imported RedDeer examples

Add a chapter about Test execution of imported RedDeer examples into UserGuide (https://github.com/jboss-reddeer/reddeer/wiki/User-Guide)

currently there are some examples in org.jboss.reddeer.wiki (that will be renamed to org.jboss.reddeer.examples), see #123
It will be needed to create some examples there that may be created.

Please follow https://github.com/jboss-reddeer/reddeer/wiki/UserGuideTemplate for more information about User Guide

org.jboss.reddeer.swt.api.TreeItem - select() is not working as of March 16

org.jboss.reddeer.swt.api.TreeItem

TreeItem item;
item.select();

Failed waiting until: : Tree item 'Task Repositories' cannot be selected.
at org.eclipse.swtbot.swt.finder.SWTBotFactory.waitUntil(SWTBotFactory.java:398)
at org.eclipse.swtbot.swt.finder.SWTBotFactory.waitUntil(SWTBotFactory.java:372)
at org.jboss.reddeer.swt.wait.WaitUntil.wait(WaitUntil.java:24)
at org.jboss.reddeer.swt.wait.AbstractWait.(AbstractWait.java:28)
at org.jboss.reddeer.swt.wait.AbstractWait.(AbstractWait.java:23)
at org.jboss.reddeer.swt.wait.WaitUntil.(WaitUntil.java:15)
at org.jboss.reddeer.swt.impl.tree.AbstractTreeItem.select(AbstractTreeItem.java:115)

Cannot find CheckBox in group

Wrong parameter order

public CheckBox(String inGroup, String text){
checkBox = Bot.get().checkBoxInGroup(inGroup, text);
}

Support for test methods dependencies

Test should be able to define other tests as dependencies. This is useful for sequence test type that

@CleanWorkspace
class MyTest {
@Test   
public void test1() {   
}
@Test
@Dependency(test = "test1");    // when test1 fails, test2 will fail with message reffering that dependency test1 was not satisfied
public void test2() {
}
}

Optional Waits support

Waits should allow to pass if condition is not fulfilled (needed for Tree searching, etc.)

LabeledText doesn't always find a labeled text

Problem si in method WidgetHandler.getInstance().getLabel(). It only tries to retrieve children from direct parent, but if direct parent isn't the one containing both text and label SWTLayerException will be thrown.

Improve Workbench View Testing

Right now tests are not checking if view is really opened or closed.

Test testCloseNoninitializedView() should first close tested view because order of calling of tests within one class is not guaranteed and therefore it could happen that tested view is not closed and method will fail.

Children discovering returns the expected widgets

STEP: open import dialog (Import -> Import -> General -> Existing Projects into Workspace)
STEP: try to discover tree widget with swtbot new ControlFinder.findControls(activeControl, matcher, true)
ASSERT: only the expected tree was found
STEP: try to discover tree widget with our method findControls(activeControl, matcher, true)
FAIL: two trees are discovered (second one is the expected one)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.