Skip to content

Commit b2328fd

Browse files
committed
Not static anymore
1 parent 880e4eb commit b2328fd

3 files changed

Lines changed: 73 additions & 16 deletions

File tree

‎testkit/play-specs2/src/main/scala/play/api/test/Specs.scala‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,9 +194,9 @@ abstract class WithBrowser[WEBDRIVER <: WebDriver](
194194

195195
implicit def implicitApp: Application = app
196196
implicit def implicitPort: Port = port
197+
var browser: TestBrowser = null // TODO not var! just temporary now. either def or private[test] setBaseUrl
197198

198199
override def wrap[T: AsResult](t: => T): Result = {
199-
var browser: TestBrowser = null
200200
try {
201201
val currentPort = port
202202
val result = Helpers.runningWithPort(TestServer(port, app)) { assignedPort =>

‎testkit/play-test/src/main/java/play/test/TestBrowser.java‎

Lines changed: 43 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44

55
package play.test;
66

7-
import com.codeborne.selenide.Configuration;
8-
import com.codeborne.selenide.WebDriverRunner;
7+
import com.codeborne.selenide.SelenideConfig;
8+
import com.codeborne.selenide.SelenideDriver;
9+
import com.codeborne.selenide.SelenideElement;
910
import java.time.Duration;
1011
import java.util.function.Function;
1112
import org.openqa.selenium.WebDriver;
@@ -17,6 +18,8 @@
1718
*/
1819
public class TestBrowser {
1920

21+
private SelenideDriver driver;
22+
2023
/**
2124
* A test browser (Using Selenium WebDriver) with the Selenide API
2225
* (https://github.com/selenide/selenide).
@@ -37,8 +40,38 @@ public TestBrowser(Class<? extends WebDriver> webDriver, String baseUrl) throws
3740
* @param baseUrl The base url to use for relative requests.
3841
*/
3942
public TestBrowser(WebDriver webDriver, String baseUrl) {
40-
WebDriverRunner.setWebDriver(webDriver); // super.initFluent(webDriver);
41-
Configuration.baseUrl = baseUrl; // super.getConfiguration().setBaseUrl(baseUrl);
43+
SelenideConfig config = new SelenideConfig();
44+
config.baseUrl(baseUrl);
45+
driver = new SelenideDriver(config, webDriver, null);
46+
}
47+
48+
public void open(String relativeOrAbsoluteUrl) {
49+
driver.open(relativeOrAbsoluteUrl);
50+
}
51+
52+
public void goTo(String relativeOrAbsoluteUrl) {
53+
open(relativeOrAbsoluteUrl);
54+
}
55+
56+
public String source() {
57+
return driver.source();
58+
}
59+
60+
public String pageSource() {
61+
return source();
62+
}
63+
64+
public SelenideElement el(String cssSelector) {
65+
return driver.find(cssSelector);
66+
}
67+
68+
public SelenideElement $(String cssSelector) {
69+
return el(cssSelector);
70+
}
71+
72+
public String url() {
73+
// return the relative url
74+
return driver.url().substring(driver.config().baseUrl().length() + 1);
4275
}
4376

4477
/**
@@ -47,7 +80,7 @@ public TestBrowser(WebDriver webDriver, String baseUrl) {
4780
* @return the webdriver contained in a fluent wait.
4881
*/
4982
public FluentWait<WebDriver> fluentWait() {
50-
return new FluentWait<>(WebDriverRunner.getWebDriver());
83+
return new FluentWait<>(driver.getWebDriver());
5184
}
5285

5386
/**
@@ -90,14 +123,15 @@ public <T> T waitUntil(Function<WebDriver, T> f) {
90123
* @return the web driver options.
91124
*/
92125
public WebDriver.Options manage() {
93-
return WebDriverRunner.getWebDriver().manage();
126+
return driver.getWebDriver().manage();
94127
}
95128

96129
/** Quits and releases the {@link WebDriver} */
97130
void quit() {
98-
final WebDriver driver = WebDriverRunner.getWebDriver();
99-
if (driver != null) {
100-
driver.quit();
131+
// TODO siehe dprecation comment in WebDriverRunner.closeWebDriver
132+
final WebDriver webDriver = driver.getWebDriver();
133+
if (webDriver != null) {
134+
webDriver.quit();
101135
}
102136
// releaseFluent();
103137
}

‎testkit/play-test/src/main/scala/play/api/test/Selenium.scala‎

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ import java.util.concurrent.TimeUnit
88

99
import scala.jdk.FunctionConverters._
1010

11-
import com.codeborne.selenide.Configuration
12-
import com.codeborne.selenide.WebDriverRunner
11+
import com.codeborne.selenide.SelenideConfig
12+
import com.codeborne.selenide.SelenideDriver
13+
import com.codeborne.selenide.SelenideElement
1314
import org.openqa.selenium._
1415
import org.openqa.selenium.firefox._
1516
import org.openqa.selenium.htmlunit._
@@ -21,8 +22,30 @@ import org.openqa.selenium.support.ui.FluentWait
2122
* @param webDriver The WebDriver instance to use.
2223
*/
2324
case class TestBrowser(webDriver: WebDriver, baseUrl: Option[String]) {
24-
WebDriverRunner.setWebDriver(webDriver); // super.initFluent(webDriver)
25-
baseUrl.foreach(baseUrl => Configuration.baseUrl = baseUrl) // super.getConfiguration.setBaseUrl(baseUrl))
25+
private val config = new SelenideConfig()
26+
baseUrl.foreach(baseUrl => config.baseUrl(baseUrl))
27+
private val driver = new SelenideDriver(config, webDriver, null)
28+
29+
def open(relativeOrAbsoluteUrl: String): Unit = {
30+
driver.open(relativeOrAbsoluteUrl)
31+
}
32+
33+
def goTo(relativeOrAbsoluteUrl: String): Unit = {
34+
open(relativeOrAbsoluteUrl)
35+
}
36+
37+
def source: String = driver.source
38+
39+
def pageSource: String = source
40+
41+
def el(cssSelector: String): SelenideElement = driver.find(cssSelector)
42+
43+
def $(cssSelector: String): SelenideElement = el(cssSelector)
44+
45+
def url: String = {
46+
// return the relative url
47+
driver.url().substring(driver.config().baseUrl().length + 1)
48+
}
2649

2750
/**
2851
* Repeatedly applies this instance's input value to the given block until one of the following occurs:
@@ -69,10 +92,10 @@ case class TestBrowser(webDriver: WebDriver, baseUrl: Option[String]) {
6992
* retrieves the underlying option interface that can be used
7093
* to set cookies, manage timeouts among other things
7194
*/
72-
def manage: WebDriver.Options = WebDriverRunner.getWebDriver().manage
95+
def manage: WebDriver.Options = driver.getWebDriver().manage
7396

7497
def quit(): Unit = {
75-
Option(WebDriverRunner.getWebDriver()).foreach(_.quit())
98+
Option(driver.getWebDriver()).foreach(_.quit())
7699
// releaseFluent()
77100
}
78101
}

0 commit comments

Comments
 (0)