Skip to content

PSSelenium - Google Inject #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 33 additions & 28 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,36 +38,41 @@
</scm>

<dependencies>

<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.26.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.31.0</version>
</dependency>

<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>2.31.0</version>
</dependency>

<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>3.0</version>
</dependency>

<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1</version>
</dependency>

<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>2.26.0</version>
</dependency>

<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1</version>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
</dependency>

<dependency>
<groupId>net.jsourcerer.webdriver</groupId>
<artifactId>JSErrorCollector</artifactId>
<version>0.4</version>
</dependency>
<dependency>
<groupId>net.jsourcerer.webdriver</groupId>
<artifactId>JSErrorCollector</artifactId>
<version>0.4</version>
</dependency>
</dependencies>

</project>
38 changes: 38 additions & 0 deletions src/main/java/com/polopoly/ps/psselenium/SeleniumTestModule.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.polopoly.ps.psselenium;

import org.openqa.selenium.firefox.FirefoxDriver;

import com.google.inject.AbstractModule;
import com.polopoly.ps.psselenium.framework.WebDriverTestSetup;

public class SeleniumTestModule extends AbstractModule {

private boolean instantiateNow;

public SeleniumTestModule() {
this(false);
}

public SeleniumTestModule(boolean instantiateNow) {
setInstantiateNow(instantiateNow);
}

@Override
public void configure() {
if (isInstantiateNow()) {
WebDriverTestSetup driverSetup = new WebDriverTestSetup(new FirefoxDriver());
bind(SimpleGUIAgentInterface.class).toInstance(new SimpleGUIAgent(driverSetup));
} else {
// lazy binding
bind(SimpleGUIAgentInterface.class).toProvider(new SimpleGUIAgentProvider());
}
}

private boolean isInstantiateNow() {
return instantiateNow;
}

private void setInstantiateNow(boolean instantiateNow) {
this.instantiateNow = instantiateNow;
}
}
33 changes: 33 additions & 0 deletions src/main/java/com/polopoly/ps/psselenium/SeleniumTestRunner.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.polopoly.ps.psselenium;

import org.junit.runners.BlockJUnit4ClassRunner;
import org.junit.runners.model.InitializationError;

import com.google.inject.Guice;
import com.google.inject.Injector;

public class SeleniumTestRunner extends BlockJUnit4ClassRunner {

private static Injector injector;
private static Object initLock = new Object();

public SeleniumTestRunner(Class<?> klass) throws InitializationError {
super(klass);
initInjectorIfNecessary();
}

private void initInjectorIfNecessary() {
synchronized (initLock) {
if (injector == null) {
injector = Guice.createInjector(new SeleniumTestModule(true));
}
}
}

@Override
protected Object createTest() throws Exception {
Object obj = super.createTest();
injector.injectMembers(obj);
return obj;
}
}
44 changes: 30 additions & 14 deletions src/main/java/com/polopoly/ps/psselenium/SimpleGUIAgent.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,34 @@
import com.polopoly.ps.psselenium.agent.GUIAgentBase;
import com.polopoly.ps.psselenium.framework.WebDriverTestSetup;

public class SimpleGUIAgent extends GUIAgentBase {

private Agent007 agent007;

public SimpleGUIAgent(WebDriverTestSetup webDriverTestSetup) {
super(webDriverTestSetup);

// Create your agents here
agent007 = new Agent007(this);
}

public Agent007 agent007() {
return agent007;
}
public class SimpleGUIAgent extends GUIAgentBase implements SimpleGUIAgentInterface {

private Agent007 agent007;

public static SimpleGUIAgent agent;

public SimpleGUIAgent() {
super();
agent = this;
// Create your agents here
agent007 = new Agent007(this);
}

public SimpleGUIAgent(WebDriverTestSetup webDriverTestSetup) {
super(webDriverTestSetup);
// Create your agents here
agent007 = new Agent007(this);
}

public Agent007 agent007() {
return agent007;
}

public static SimpleGUIAgent getAgent() {
if (agent == null) {
new SimpleGUIAgent();
}
return agent;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.polopoly.ps.psselenium;

import com.polopoly.ps.psselenium.agent.GUIAgent;

public interface SimpleGUIAgentInterface extends GUIAgent {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.polopoly.ps.psselenium;

import com.google.inject.Provider;
import com.google.inject.Singleton;

@Singleton
public class SimpleGUIAgentProvider implements Provider<SimpleGUIAgent> {

@Override
public SimpleGUIAgent get() {
return SimpleGUIAgent.getAgent();
}

}
Loading