diff --git a/tests/org.eclipse.graphiti.bot.tests/src/org/eclipse/graphiti/bot/tests/GFInteractionComponentTests.java b/tests/org.eclipse.graphiti.bot.tests/src/org/eclipse/graphiti/bot/tests/GFInteractionComponentTests.java
index f27541d..92fd471 100644
--- a/tests/org.eclipse.graphiti.bot.tests/src/org/eclipse/graphiti/bot/tests/GFInteractionComponentTests.java
+++ b/tests/org.eclipse.graphiti.bot.tests/src/org/eclipse/graphiti/bot/tests/GFInteractionComponentTests.java
@@ -49,6 +49,7 @@
 import org.eclipse.graphiti.ui.internal.editor.DiagramEditorInternal;
 import org.eclipse.graphiti.ui.internal.editor.GFFigureCanvas;
 import org.eclipse.graphiti.ui.internal.policy.ShapeXYLayoutEditPolicy;
+import org.eclipse.graphiti.ui.internal.services.GraphitiUiInternal;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.widgets.Canvas;
@@ -285,14 +286,13 @@
 		syncExec(new VoidResult() {
 			@Override
 			public void run() {
-				Robot r;
-				try {
-					r = new Robot();
 					Point p = getOrigin(ed);
-					r.mouseMove(p.x + 35, p.y + 35);
-				} catch (AWTException e) {
-					e.printStackTrace();
-				}
+					Display display = GraphitiUiInternal.getWorkbenchService().getShell().getDisplay();
+					Event event = createMouseEvent(p.x + 35, p.y + 35, 0, 0, 0);
+					event.type = SWT.MouseMove;
+					event.widget = diagramEditor.getGraphicalViewer().getControl();
+					event.display = display;
+					display.post(event);
 			}
 		});
 		Thread.sleep(2000);
@@ -306,9 +306,7 @@
 				org.eclipse.draw2d.geometry.Point mouseLocation = diagramEditor
 						.calculateRealMouseLocation(diagramEditor.getMouseLocation());
 				boolean mouseIsInsideShape = rectangle.contains(mouseLocation);
-				// FIXME
-				// assertEquals(" Wrong mouse coordinates :  ", true,
-				// mouseIsInsideShape);
+				assertEquals(" Wrong mouse coordinates :  ", true, mouseIsInsideShape);
 				break;
 			}
 		}
@@ -1008,4 +1006,15 @@
 			}
 		});
 	}
+
+	protected Event createMouseEvent(int x, int y, int button, int stateMask, int count) {
+		Event event = new Event();
+		event.time = (int) System.currentTimeMillis();
+		event.x = x;
+		event.y = y;
+		event.button = button;
+		event.stateMask = stateMask;
+		event.count = count;
+		return event;
+	}
 }
