IDEMPIERE-92 - Integrate Selenium. Moved project 'idempiere.zk.selenium'
This commit is contained in:
parent
a5adac4806
commit
748ed726b4
|
@ -1,4 +1,4 @@
|
|||
!1 Welcome to !-GlobalQSS-! !-ADempiere-! [[FitNesse][FitNesse.FitNesse]]!
|
||||
!1 Welcome to !-iDempiere-! [[FitNesse][FitNesse.FitNesse]]!
|
||||
!3 ''The fully integrated stand-alone acceptance testing framework and wiki.''
|
||||
|
||||
# Here is a good place to add your first page (WikiWord). For example, MyTopLevelApplicationPage
|
||||
|
@ -7,6 +7,10 @@ Suites:
|
|||
IdempiereSuite
|
||||
AvgCostSuite
|
||||
|
||||
Zk Examples:
|
||||
ZkSingleClientLogin
|
||||
ZkMultiClientLogin
|
||||
|
||||
|
||||
| '''To Learn More...'''|
|
||||
| [[A One-Minute Description][FitNesse.UserGuide.OneMinuteDescription]]|''What is [[FitNesse][FitNesse.FitNesse]]? Start here.''|
|
||||
|
|
|
@ -1,4 +1,10 @@
|
|||
|||01:35:08 mié, nov 28, 2012|
|
||||
|FitLibraryWeb||01:41:13 Thu, Dec 13, 2012|
|
||||
|FitLibrary||01:40:51 Thu, Dec 13, 2012|
|
||||
|FrontPage||01:40:10 Thu, Dec 13, 2012|
|
||||
|FrontPage.ZkMultiClientLogin||01:36:38 Thu, Dec 13, 2012|
|
||||
|FrontPage.ZkSingleClientLogin||01:32:27 Thu, Dec 13, 2012|
|
||||
|FrontPage.ZkLogin||24:39:17 Thu, Dec 13, 2012|
|
||||
|||14:45:31 Wed, Dec 12, 2012|
|
||||
|CommonTests.CreateMaterialReceipt||01:36:56 mar, abr 03, 2012|
|
||||
|CommonTests.CreateProductPrice||01:29:57 mar, abr 03, 2012|
|
||||
|AvgCostSuite.BasicTest||01:18:34 mar, abr 03, 2012|
|
||||
|
@ -18,7 +24,6 @@
|
|||
|CommonTests.SetRandomName||24:14:15 mar, abr 03, 2012|
|
||||
|CommonTests.ValidateClientSetOnAvgInv||24:14:09 mar, abr 03, 2012|
|
||||
|CommonTests.LoginGardenAdmin||24:14:01 mar, abr 03, 2012|
|
||||
|FrontPage||24:12:35 mar, abr 03, 2012|
|
||||
|CommonTests||23:24:23 lun, abr 02, 2012|
|
||||
|AvgCostSuite.CreateProduct||23:14:23 lun, abr 02, 2012|
|
||||
|AvgCostSuite.ValidateClientSetOnAvgInv||23:10:02 lun, abr 02, 2012|
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
Define the global path:
|
||||
|
||||
Where to find the fixtures classes: ( i.e. /home/hengsin/workspace/idempiere/fitnesse/bin )
|
||||
Where to find the fixtures classes: ( i.e. /home/hengsin/workspace/idempiere-trekglobal/fitnesse/bin )
|
||||
|
||||
!define fitnesse_home {/home/carlos/hgAdempiere/localosgi/fitnesse}
|
||||
!define fitnesse_home {/home/hengsin/workspace/idempiere-trekglobal/fitnesse}
|
||||
|
||||
!path ${fitnesse_home}/fitnesse.jar:${fitnesse_home}/lib/*.jar:${fitnesse_home}/bin
|
||||
|
||||
|
@ -16,7 +16,7 @@ There are some important variables here:
|
|||
This variables can be redefined specifically at page level.
|
||||
|
||||
!define TEST_RUNNER {fitnesse.client.FitServerServletInvoker}
|
||||
!define COMMAND_PATTERN {java -Xms32m -Xmx512m -DLOG4J_LEVEL=CONFIG -cp %p %m http://localhost:8082/fitnesse/FitServlet}
|
||||
!define COMMAND_PATTERN {java -Xms32m -Xmx512m -DLOG4J_LEVEL=CONFIG -cp %p %m http://localhost:8080/fitnesse/FitServlet}
|
||||
|
||||
To enable remote debugging the tests will stop until you connect remotely via eclipse using RemoteADempiereFitnesse.launch
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.fitnesse.fixture.factory">
|
||||
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.fitnesse.fixture.fit.factory">
|
||||
<implementation class="org.idempiere.fitnesse.fixture.FitFixtureFactory"/>
|
||||
<service>
|
||||
<provide interface="org.idempiere.fitnesse.server.fit.IFitFixtureFactory"/>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.fitnesse.fixture">
|
||||
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.fitnesse.fixture.slim.factory">
|
||||
<implementation class="org.idempiere.fitnesse.fixture.SlimFixtureFactory"/>
|
||||
<service>
|
||||
<provide interface="org.idempiere.fitnesse.server.slim.ISlimFixtureFactory"/>
|
||||
|
|
|
@ -15,7 +15,6 @@ package org.idempiere.fitnesse.fixture;
|
|||
|
||||
import org.idempiere.fitnesse.server.fit.IFitFixtureFactory;
|
||||
|
||||
import fit.Fixture;
|
||||
import fit.FixtureName;
|
||||
|
||||
/**
|
||||
|
@ -37,10 +36,10 @@ public class FitFixtureFactory implements IFitFixtureFactory {
|
|||
* @see org.idempiere.fitnesse.server.fit.IFixtureFactory#getFixture(FixtureName)
|
||||
*/
|
||||
@Override
|
||||
public Fixture getFixture(FixtureName fixtureName) {
|
||||
public Object getFixture(FixtureName fixtureName) {
|
||||
String className = fixtureName.toString();
|
||||
try {
|
||||
Class<Fixture> clazz = (Class<Fixture>) getClass().getClassLoader().loadClass(className);
|
||||
Class<?> clazz = getClass().getClassLoader().loadClass(className);
|
||||
return clazz.newInstance();
|
||||
} catch (ClassNotFoundException e) {
|
||||
} catch (InstantiationException e) {
|
||||
|
@ -50,7 +49,7 @@ public class FitFixtureFactory implements IFitFixtureFactory {
|
|||
if (!fixtureName.isFullyQualified()) {
|
||||
className = DEFAULT_PACKAGE + "." + fixtureName.toString();
|
||||
try {
|
||||
Class<Fixture> clazz = (Class<Fixture>) getClass().getClassLoader().loadClass(className);
|
||||
Class<?> clazz = getClass().getClassLoader().loadClass(className);
|
||||
return clazz.newInstance();
|
||||
} catch (ClassNotFoundException e) {
|
||||
} catch (InstantiationException e) {
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry exported="true" kind="lib" path="selenium-server-standalone-2.27.0.jar"/>
|
||||
<classpathentry exported="true" kind="lib" path="fitlibraryweb-2.0.jar" sourcepath="fitlibrarywebSrc-2.0.zip"/>
|
||||
<classpathentry exported="true" kind="lib" path="log4j-1.2.16.jar"/>
|
||||
<classpathentry exported="true" kind="lib" path="fitlibrary-2.0.jar" sourcepath="fitlibrarySrc-2.0.zip"/>
|
||||
<classpathentry exported="true" kind="lib" path="fitnesse.jar" sourcepath="fitnesse-sources.jar"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
|
|
|
@ -11,15 +11,192 @@ Import-Package: javax.servlet;version="3.0.0",
|
|||
org.adempiere.base,
|
||||
org.osgi.framework;version="1.3.0"
|
||||
Bundle-ClassPath: .,
|
||||
fitnesse.jar
|
||||
fitlibrary-2.0.jar,
|
||||
fitnesse.jar,
|
||||
log4j-1.2.16.jar,
|
||||
fitlibraryweb-2.0.jar,
|
||||
selenium-server-standalone-2.27.0.jar
|
||||
Web-ContextPath: fitnesse
|
||||
Export-Package: fit,
|
||||
fit.decorator,
|
||||
fit.decorator.exceptions,
|
||||
fit.decorator.performance,
|
||||
fit.decorator.util,
|
||||
fit.eg,
|
||||
fit.eg.bowling,
|
||||
fit.eg.bowling.fixtures,
|
||||
fit.exception,
|
||||
fit.specify,
|
||||
fit.testFxtr,
|
||||
fitbook,
|
||||
fitbook.accounts,
|
||||
fitbook.chat,
|
||||
fitbook.items,
|
||||
fitbook.money,
|
||||
fitbook.sokoban,
|
||||
fitlibrary,
|
||||
fitlibrary.aboutToBeRemoved,
|
||||
fitlibrary.annotation,
|
||||
fitlibrary.batch,
|
||||
fitlibrary.batch.fitnesseIn,
|
||||
fitlibrary.batch.resultsOut,
|
||||
fitlibrary.batch.testRun,
|
||||
fitlibrary.batch.trinidad,
|
||||
fitlibrary.clean,
|
||||
fitlibrary.closure,
|
||||
fitlibrary.collection,
|
||||
fitlibrary.collection.array,
|
||||
fitlibrary.collection.list,
|
||||
fitlibrary.collection.map,
|
||||
fitlibrary.collection.set,
|
||||
fitlibrary.config,
|
||||
fitlibrary.database,
|
||||
fitlibrary.date,
|
||||
fitlibrary.debug,
|
||||
fitlibrary.definedAction,
|
||||
fitlibrary.definedactions,
|
||||
fitlibrary.diff,
|
||||
fitlibrary.differences,
|
||||
fitlibrary.domainAdapter,
|
||||
fitlibrary.dynamicVariable,
|
||||
fitlibrary.eg,
|
||||
fitlibrary.eg.chat,
|
||||
fitlibrary.email,
|
||||
fitlibrary.exception,
|
||||
fitlibrary.exception.classes,
|
||||
fitlibrary.exception.method,
|
||||
fitlibrary.exception.parse,
|
||||
fitlibrary.exception.table,
|
||||
fitlibrary.flex,
|
||||
fitlibrary.flow,
|
||||
fitlibrary.flow.actor,
|
||||
fitlibrary.ftp,
|
||||
fitlibrary.global,
|
||||
fitlibrary.http,
|
||||
fitlibrary.listener,
|
||||
fitlibrary.log,
|
||||
fitlibrary.matcher,
|
||||
fitlibrary.mockWebServices,
|
||||
fitlibrary.mockWebServices.clock,
|
||||
fitlibrary.mockWebServices.logger,
|
||||
fitlibrary.mockWebServices.requestMatcher,
|
||||
fitlibrary.mockWebServices.responder,
|
||||
fitlibrary.mockWebServices.specify,
|
||||
fitlibrary.mockWebServices.term,
|
||||
fitlibrary.mockWebServices.transactionFixture,
|
||||
fitlibrary.object,
|
||||
fitlibrary.parser,
|
||||
fitlibrary.parser.collection,
|
||||
fitlibrary.parser.graphic,
|
||||
fitlibrary.parser.lookup,
|
||||
fitlibrary.parser.self,
|
||||
fitlibrary.parser.table,
|
||||
fitlibrary.parser.tagged,
|
||||
fitlibrary.parser.tree,
|
||||
fitlibrary.pdf,
|
||||
fitlibrary.polling,
|
||||
fitlibrary.ref,
|
||||
fitlibrary.runResults,
|
||||
fitlibrary.runner,
|
||||
fitlibrary.runtime,
|
||||
fitlibrary.selenium,
|
||||
fitlibrary.server,
|
||||
fitlibrary.service,
|
||||
fitlibrary.sh,
|
||||
fitlibrary.sh.utility,
|
||||
fitlibrary.spec,
|
||||
fitlibrary.spec.filter,
|
||||
fitlibrary.spec.matcher,
|
||||
fitlibrary.special,
|
||||
fitlibrary.speciallyNamedPackage,
|
||||
fitlibrary.specify,
|
||||
fitlibrary.specify.access,
|
||||
fitlibrary.specify.arrayParser,
|
||||
fitlibrary.specify.autowrap,
|
||||
fitlibrary.specify.calculate,
|
||||
fitlibrary.specify.collection,
|
||||
fitlibrary.specify.collectionSetUp,
|
||||
fitlibrary.specify.constraint,
|
||||
fitlibrary.specify.definedAction,
|
||||
fitlibrary.specify.domain,
|
||||
fitlibrary.specify.dynamicVariable,
|
||||
fitlibrary.specify.eg,
|
||||
fitlibrary.specify.entityParser,
|
||||
fitlibrary.specify.exception,
|
||||
fitlibrary.specify.global,
|
||||
fitlibrary.specify.initialClass,
|
||||
fitlibrary.specify.listParser,
|
||||
fitlibrary.specify.log,
|
||||
fitlibrary.specify.mapParser,
|
||||
fitlibrary.specify.mapTraverse,
|
||||
fitlibrary.specify.missingMethod,
|
||||
fitlibrary.specify.missingProperty,
|
||||
fitlibrary.specify.parser,
|
||||
fitlibrary.specify.plugin,
|
||||
fitlibrary.specify.select,
|
||||
fitlibrary.specify.set,
|
||||
fitlibrary.specify.setParser,
|
||||
fitlibrary.specify.specialAction,
|
||||
fitlibrary.specify.specialisedTables,
|
||||
fitlibrary.specify.suite,
|
||||
fitlibrary.specify.utility,
|
||||
fitlibrary.specify.valueObject,
|
||||
fitlibrary.specify.workflow,
|
||||
fitlibrary.spider,
|
||||
fitlibrary.spider.component,
|
||||
fitlibrary.spider.driver,
|
||||
fitlibrary.spider.element,
|
||||
fitlibrary.spider.polling,
|
||||
fitlibrary.spider.specify,
|
||||
fitlibrary.spider.utility,
|
||||
fitlibrary.suite,
|
||||
fitlibrary.table,
|
||||
fitlibrary.tableOnParse,
|
||||
fitlibrary.tableProxy,
|
||||
fitlibrary.template,
|
||||
fitlibrary.template.specify,
|
||||
fitlibrary.traverse,
|
||||
fitlibrary.traverse.function,
|
||||
fitlibrary.traverse.workflow,
|
||||
fitlibrary.traverse.workflow.caller,
|
||||
fitlibrary.traverse.workflow.definedAction,
|
||||
fitlibrary.traverse.workflow.special,
|
||||
fitlibrary.tutorial,
|
||||
fitlibrary.tutorial.chat,
|
||||
fitlibrary.typed,
|
||||
fitlibrary.utility,
|
||||
fitlibrary.utility.option,
|
||||
fitlibrary.ws,
|
||||
fitlibrary.ws.client,
|
||||
fitlibrary.ws.clock,
|
||||
fitlibrary.ws.logger,
|
||||
fitlibrary.ws.message,
|
||||
fitlibrary.ws.mock.logger,
|
||||
fitlibrary.ws.mock.requestMatcher,
|
||||
fitlibrary.ws.mock.responder,
|
||||
fitlibrary.ws.mock.term,
|
||||
fitlibrary.ws.recorder,
|
||||
fitlibrary.ws.soap,
|
||||
fitlibrary.xml,
|
||||
fitlibrary.xml.specify,
|
||||
fitlibrary.xref,
|
||||
fitlibraryGeneric,
|
||||
fitlibraryGeneric.eg.rentEz,
|
||||
fitlibraryGeneric.generic,
|
||||
fitlibraryGeneric.list,
|
||||
fitlibraryGeneric.map,
|
||||
fitlibraryGeneric.object,
|
||||
fitlibraryGeneric.set,
|
||||
fitlibraryGeneric.specify,
|
||||
fitlibraryGeneric.specify.calculate,
|
||||
fitlibraryGeneric.specify.collections,
|
||||
fitlibraryGeneric.specify.enumerator,
|
||||
fitlibraryGeneric.specify.genericFinder,
|
||||
fitlibraryGeneric.specify.object,
|
||||
fitlibraryGeneric.specify.unbound,
|
||||
fitlibraryGeneric.specify.workflow,
|
||||
fitlibraryGeneric.traverse,
|
||||
fitlibraryGeneric.typed,
|
||||
fitnesse,
|
||||
fitnesse.authentication,
|
||||
fitnesse.components,
|
||||
|
@ -60,4 +237,91 @@ Export-Package: fit,
|
|||
fitnesseMain,
|
||||
fitnesseMain.ant,
|
||||
org.idempiere.fitnesse.server.fit,
|
||||
org.idempiere.fitnesse.server.slim
|
||||
org.idempiere.fitnesse.server.slim,
|
||||
org.openqa.grid.common,
|
||||
org.openqa.grid.common.exception,
|
||||
org.openqa.grid.internal,
|
||||
org.openqa.grid.internal.exception,
|
||||
org.openqa.grid.internal.listeners,
|
||||
org.openqa.grid.internal.utils,
|
||||
org.openqa.grid.selenium,
|
||||
org.openqa.grid.selenium.proxy,
|
||||
org.openqa.grid.selenium.utils,
|
||||
org.openqa.grid.web,
|
||||
org.openqa.grid.web.servlet,
|
||||
org.openqa.grid.web.servlet.beta,
|
||||
org.openqa.grid.web.servlet.handler,
|
||||
org.openqa.grid.web.utils,
|
||||
org.openqa.jetty.html,
|
||||
org.openqa.jetty.http,
|
||||
org.openqa.jetty.http.ajp,
|
||||
org.openqa.jetty.http.ajp.jmx,
|
||||
org.openqa.jetty.http.handler,
|
||||
org.openqa.jetty.http.handler.jmx,
|
||||
org.openqa.jetty.http.jmx,
|
||||
org.openqa.jetty.http.nio,
|
||||
org.openqa.jetty.jetty,
|
||||
org.openqa.jetty.jetty.jmx,
|
||||
org.openqa.jetty.jetty.servlet,
|
||||
org.openqa.jetty.jetty.servlet.jmx,
|
||||
org.openqa.jetty.jetty.win32,
|
||||
org.openqa.jetty.log,
|
||||
org.openqa.jetty.servlet,
|
||||
org.openqa.jetty.start,
|
||||
org.openqa.jetty.stop,
|
||||
org.openqa.jetty.util,
|
||||
org.openqa.jetty.util.jmx,
|
||||
org.openqa.jetty.xml,
|
||||
org.openqa.selenium,
|
||||
org.openqa.selenium.android,
|
||||
org.openqa.selenium.browserlaunchers,
|
||||
org.openqa.selenium.browserlaunchers.locators,
|
||||
org.openqa.selenium.chrome,
|
||||
org.openqa.selenium.firefox,
|
||||
org.openqa.selenium.firefox.internal,
|
||||
org.openqa.selenium.html5,
|
||||
org.openqa.selenium.htmlunit,
|
||||
org.openqa.selenium.ie,
|
||||
org.openqa.selenium.interactions,
|
||||
org.openqa.selenium.interactions.internal,
|
||||
org.openqa.selenium.interactions.touch,
|
||||
org.openqa.selenium.internal,
|
||||
org.openqa.selenium.internal.selenesedriver,
|
||||
org.openqa.selenium.internal.seleniumemulation,
|
||||
org.openqa.selenium.io,
|
||||
org.openqa.selenium.iphone,
|
||||
org.openqa.selenium.lift,
|
||||
org.openqa.selenium.lift.find,
|
||||
org.openqa.selenium.lift.match,
|
||||
org.openqa.selenium.logging,
|
||||
org.openqa.selenium.logging.profiler,
|
||||
org.openqa.selenium.net,
|
||||
org.openqa.selenium.os,
|
||||
org.openqa.selenium.remote,
|
||||
org.openqa.selenium.remote.html5,
|
||||
org.openqa.selenium.remote.internal,
|
||||
org.openqa.selenium.remote.server,
|
||||
org.openqa.selenium.remote.server.handler,
|
||||
org.openqa.selenium.remote.server.handler.html5,
|
||||
org.openqa.selenium.remote.server.handler.interactions,
|
||||
org.openqa.selenium.remote.server.handler.interactions.touch,
|
||||
org.openqa.selenium.remote.server.handler.internal,
|
||||
org.openqa.selenium.remote.server.renderer,
|
||||
org.openqa.selenium.remote.server.resource,
|
||||
org.openqa.selenium.remote.server.rest,
|
||||
org.openqa.selenium.remote.server.xdrpc,
|
||||
org.openqa.selenium.remote.service,
|
||||
org.openqa.selenium.safari,
|
||||
org.openqa.selenium.security,
|
||||
org.openqa.selenium.server,
|
||||
org.openqa.selenium.server.browserlaunchers,
|
||||
org.openqa.selenium.server.cli,
|
||||
org.openqa.selenium.server.commands,
|
||||
org.openqa.selenium.server.htmlrunner,
|
||||
org.openqa.selenium.server.log,
|
||||
org.openqa.selenium.support,
|
||||
org.openqa.selenium.support.events,
|
||||
org.openqa.selenium.support.events.internal,
|
||||
org.openqa.selenium.support.pagefactory,
|
||||
org.openqa.selenium.support.pagefactory.internal,
|
||||
org.openqa.selenium.support.ui
|
||||
|
|
|
@ -2,4 +2,8 @@ source.. = src/
|
|||
output.. = bin/
|
||||
bin.includes = META-INF/,\
|
||||
.,\
|
||||
fitnesse.jar
|
||||
fitnesse.jar,\
|
||||
fitlibrary-2.0.jar,\
|
||||
log4j-1.2.16.jar,\
|
||||
fitlibraryweb-2.0.jar,\
|
||||
selenium-server-standalone-2.27.0.jar
|
||||
|
|
|
@ -7,6 +7,7 @@ import fitnesse.slim.converters.*;
|
|||
import java.beans.PropertyEditorManager;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.util.*;
|
||||
|
||||
import org.adempiere.base.Service;
|
||||
|
@ -141,9 +142,52 @@ public class StatementExecutor implements StatementExecutorInterface {
|
|||
}
|
||||
}
|
||||
|
||||
Class<?> k = searchPathsForClass(className);
|
||||
Constructor<?> constructor = getConstructor(k.getConstructors(), args);
|
||||
if (constructor == null)
|
||||
throw new SlimError(String.format("message:<<NO_CONSTRUCTOR %s>>", className));
|
||||
|
||||
Object newInstance = constructor.newInstance(ConverterSupport.convertArgs(args, constructor
|
||||
.getParameterTypes()));
|
||||
|
||||
if (newInstance instanceof StatementExecutorConsumer) {
|
||||
((StatementExecutorConsumer) newInstance).setStatementExecutor(this);
|
||||
}
|
||||
|
||||
return newInstance;
|
||||
}
|
||||
|
||||
private Class<?> searchPathsForClass(String className) {
|
||||
Class<?> k = getClass(className);
|
||||
if (k != null)
|
||||
return k;
|
||||
List<String> reversedPaths = new ArrayList<String>(paths);
|
||||
Collections.reverse(reversedPaths);
|
||||
for (String path : reversedPaths) {
|
||||
k = getClass(path + "." + className);
|
||||
if (k != null)
|
||||
return k;
|
||||
}
|
||||
throw new SlimError(String.format("message:<<NO_CLASS %s>>", className));
|
||||
}
|
||||
|
||||
private Class<?> getClass(String className) {
|
||||
try {
|
||||
return getClass().getClassLoader().loadClass(className);
|
||||
} catch (ClassNotFoundException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private Constructor<?> getConstructor(Constructor<?>[] constructors, Object[] args) {
|
||||
for (Constructor<?> constructor : constructors) {
|
||||
Class<?> arguments[] = constructor.getParameterTypes();
|
||||
if (arguments.length == args.length)
|
||||
return constructor;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Object call(String instanceName, String methodName, Object... args) {
|
||||
try {
|
||||
return getMethodExecutionResult(instanceName, methodName, args).returnValue();
|
||||
|
|
|
@ -5,6 +5,7 @@ import org.idempiere.fitnesse.server.Runner;
|
|||
|
||||
import fit.Counts;
|
||||
import fit.FitServer;
|
||||
import fitlibrary.suite.FitLibraryServer;
|
||||
|
||||
/**
|
||||
* Adapted from http://sourceforge.net/projects/patang/
|
||||
|
@ -19,8 +20,16 @@ class FitServerRunner extends Runner {
|
|||
|
||||
@Override
|
||||
protected Counts run(String[] params) throws Exception {
|
||||
FitServer fitServer = new FitServer();
|
||||
// FitServer fitServer = new FitServer();
|
||||
MyFitLibraryServer fitServer = new MyFitLibraryServer();
|
||||
fitServer.run(params);
|
||||
// fitServer.run(params);
|
||||
return fitServer.getCounts();
|
||||
}
|
||||
|
||||
class MyFitLibraryServer extends FitLibraryServer {
|
||||
public Counts getCounts() {
|
||||
return suiteTestResults.getCounts();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,6 @@
|
|||
*****************************************************************************/
|
||||
package org.idempiere.fitnesse.server.fit;
|
||||
|
||||
import fit.Fixture;
|
||||
import fit.FixtureName;
|
||||
|
||||
/**
|
||||
|
@ -28,5 +27,5 @@ public interface IFitFixtureFactory {
|
|||
* @param fixtureName
|
||||
* @return Fixture
|
||||
*/
|
||||
public Fixture getFixture(FixtureName fixtureName);
|
||||
public Object getFixture(FixtureName fixtureName);
|
||||
}
|
||||
|
|
|
@ -13,13 +13,16 @@
|
|||
*****************************************************************************/
|
||||
package org.idempiere.fitnesse.server.fit;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.adempiere.base.Service;
|
||||
|
||||
import fit.Fixture;
|
||||
import fit.FixtureClass;
|
||||
import fit.FixtureLoader;
|
||||
import fit.FixtureName;
|
||||
import fit.exception.CouldNotLoadComponentFitFailureException;
|
||||
import fit.exception.NoSuchFixtureException;
|
||||
|
||||
/**
|
||||
|
@ -38,10 +41,43 @@ public class OSGiFixtureLoader extends FixtureLoader {
|
|||
FixtureName fixtureName = new FixtureName(className);
|
||||
List<IFitFixtureFactory> factories = Service.locator().list(IFitFixtureFactory.class).getServices();
|
||||
for(IFitFixtureFactory factory : factories) {
|
||||
Fixture fixture = factory.getFixture(fixtureName);
|
||||
if (fixture != null)
|
||||
return fixture;
|
||||
Object fixture = factory.getFixture(fixtureName);
|
||||
if (fixture != null && fixture instanceof Fixture)
|
||||
return (Fixture) fixture;
|
||||
}
|
||||
Fixture fixture = instantiateFirstValidFixtureClass(fixtureName);
|
||||
return fixture;
|
||||
}
|
||||
|
||||
private Fixture instantiateFixture(String fixtureName) throws Throwable {
|
||||
Class<?> classForFixture = loadFixtureClass(fixtureName);
|
||||
FixtureClass fixtureClass = new FixtureClass(classForFixture);
|
||||
return fixtureClass.newInstance();
|
||||
}
|
||||
|
||||
private Class<?> loadFixtureClass(String fixtureName) {
|
||||
try {
|
||||
return getClass().getClassLoader().loadClass(fixtureName);
|
||||
} catch (ClassNotFoundException deadEnd) {
|
||||
if (deadEnd.getMessage().equals(fixtureName))
|
||||
throw new NoSuchFixtureException(fixtureName);
|
||||
throw new CouldNotLoadComponentFitFailureException(
|
||||
deadEnd.getMessage(), fixtureName);
|
||||
}
|
||||
}
|
||||
|
||||
private Fixture instantiateFirstValidFixtureClass(FixtureName fixtureName)
|
||||
throws Throwable {
|
||||
for (Iterator<String> i = fixtureName.getPotentialFixtureClassNames(
|
||||
fixturePathElements).iterator(); i.hasNext();) {
|
||||
String each = i.next();
|
||||
try {
|
||||
return instantiateFixture(each);
|
||||
} catch (NoSuchFixtureException ignoreAndTryTheNextCandidate) {
|
||||
//
|
||||
}
|
||||
}
|
||||
|
||||
throw new NoSuchFixtureException(fixtureName.toString());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,6 @@
|
|||
<classpath>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||
<classpathentry kind="lib" path="lib/selenium-server-standalone-2.27.0.jar" sourcepath="lib/selenium-server-2.27.0-srcs.jar"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
|
@ -5,13 +5,24 @@
|
|||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.wst.common.project.facet.core.builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ds.core.builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -7,7 +7,7 @@ import org.openqa.selenium.JavascriptExecutor;
|
|||
import org.openqa.selenium.SearchContext;
|
||||
import org.openqa.selenium.WebDriver;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.remote.RemoteWebElement;
|
||||
import org.openqa.selenium.internal.WrapsDriver;
|
||||
|
||||
/**
|
||||
* utility class to find elements using zk jq selector
|
||||
|
@ -37,10 +37,10 @@ public class Zk {
|
|||
if (context instanceof WebDriver) {
|
||||
executor = (JavascriptExecutor) context;
|
||||
} else {
|
||||
RemoteWebElement element = (RemoteWebElement) context;
|
||||
WebElement element = (WebElement) context;
|
||||
String id = element.getAttribute("id");
|
||||
selector = "#"+id+" "+selector;
|
||||
executor = (JavascriptExecutor) element.getWrappedDriver();
|
||||
executor = (JavascriptExecutor) ((WrapsDriver)element).getWrappedDriver();
|
||||
}
|
||||
List<WebElement> list = (List<WebElement>) executor.executeScript("return jq('" + selector + "').get();");
|
||||
return list;
|
|
@ -2,6 +2,6 @@
|
|||
<classpath>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||
<classpathentry kind="lib" path="/idempiere.zk.selenium/lib/selenium-server-standalone-2.27.0.jar" sourcepath="/idempiere.zk.selenium/lib/selenium-server-2.27.0-srcs.jar"/>
|
||||
<classpathentry kind="lib" path="/org.idempiere.fitnesse.server/selenium-server-standalone-2.27.0.jar" sourcepath="/idempiere.zk.selenium/lib/selenium-server-2.27.0-srcs.jar"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<classpath>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||
<classpathentry kind="lib" path="/idempiere.zk.selenium/lib/selenium-server-standalone-2.27.0.jar" sourcepath="/idempiere.zk.selenium/lib/selenium-server-2.27.0-srcs.jar"/>
|
||||
<classpathentry kind="lib" path="lib/ztl-2.0.0-SNAPSHOT.jar"/>
|
||||
<classpathentry kind="lib" path="/org.idempiere.fitnesse.server/selenium-server-standalone-2.27.0.jar" sourcepath="/idempiere.zk.selenium/lib/selenium-server-2.27.0-srcs.jar"/>
|
||||
<classpathentry kind="lib" path="lib/ztl-2.0.0-SNAPSHOT.jar" sourcepath="lib/ztl-2.0.0-sources.jar"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
|
Loading…
Reference in New Issue