Skip to content

Commit 17ba6a1

Browse files
authored
Merge pull request #2 from japgolly/topic/testSelenium
Test Selenium
2 parents 008784c + a841b92 commit 17ba6a1

File tree

6 files changed

+85
-8
lines changed

6 files changed

+85
-8
lines changed

test/build.sbt

Lines changed: 65 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,70 @@
1+
import java.util.concurrent.TimeUnit
2+
import org.openqa.selenium.{Capabilities, WebDriver}
3+
import org.openqa.selenium.chrome.{ChromeDriver, ChromeOptions}
4+
import org.openqa.selenium.firefox.{FirefoxOptions, FirefoxProfile}
5+
import org.openqa.selenium.remote.server.{DriverFactory, DriverProvider}
6+
import org.scalajs.jsenv.jsdomnodejs.JSDOMNodeJSEnv
7+
import org.scalajs.jsenv.selenium.SeleniumJSEnv
8+
19
scalaVersion := "2.13.6"
210

3-
enablePlugins(ScalaJSPlugin)
11+
def testProject: Project => Project = _
12+
.enablePlugins(ScalaJSPlugin)
13+
.settings(
14+
libraryDependencies ++= Seq(
15+
"org.scala-js" %%% "scalajs-dom" % "1.2.0",
16+
"com.lihaoyi" %%% "utest" % "0.7.10" % Test,
17+
),
18+
testFrameworks := new TestFramework("utest.runner.Framework") :: Nil,
19+
)
20+
21+
lazy val root = project
22+
.in(file("."))
23+
.aggregate(
24+
chrome,
25+
firefox,
26+
nodeJsdom,
27+
)
428

5-
libraryDependencies ++= Seq(
6-
"org.scala-js" %%% "scalajs-dom" % "1.1.0",
7-
"com.lihaoyi" %%% "utest" % "0.7.10" % Test,
8-
)
29+
lazy val chrome = project
30+
.configure(testProject)
31+
.settings(
32+
jsEnv := {
33+
System.setProperty("webdriver.chrome.silentOutput", "true")
34+
val o = new ChromeOptions()
35+
o.setHeadless(true)
36+
o.addArguments("--allow-file-access-from-files")
37+
val df = new DriverFactory {
38+
private[this] val default = SeleniumJSEnv.Config().driverFactory
39+
override def newInstance(c: Capabilities): WebDriver = {
40+
val d = default.newInstance(c).asInstanceOf[ChromeDriver]
41+
d.manage.timeouts.pageLoadTimeout(1, TimeUnit.MINUTES)
42+
d.manage.timeouts.setScriptTimeout(1, TimeUnit.MINUTES)
43+
d
44+
}
45+
override def registerDriverProvider(p: DriverProvider): Unit =
46+
default.registerDriverProvider(p)
47+
}
48+
new SeleniumJSEnv(o, SeleniumJSEnv.Config().withDriverFactory(df))
49+
},
50+
)
951

10-
testFrameworks := new TestFramework("utest.runner.Framework") :: Nil
52+
lazy val firefox = project
53+
.configure(testProject)
54+
.settings(
55+
jsEnv := new org.scalajs.jsenv.jsdomnodejs.JSDOMNodeJSEnv,
56+
)
1157

12-
jsEnv := new org.scalajs.jsenv.jsdomnodejs.JSDOMNodeJSEnv
58+
lazy val nodeJsdom = project
59+
.in(file("node-jsdom"))
60+
.configure(testProject)
61+
.settings(
62+
jsEnv := {
63+
val p = new FirefoxProfile()
64+
p.setPreference("privacy.file_unique_origin", false)
65+
val o = new FirefoxOptions()
66+
o.setProfile(p)
67+
o.setHeadless(true)
68+
new SeleniumJSEnv(o)
69+
},
70+
)
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import scala.scalajs.js
2+
import utest._
3+
4+
object ChromeTest extends TestSuite {
5+
6+
override def tests = Tests {
7+
"document" - org.scalajs.dom.document
8+
}
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import scala.scalajs.js
2+
import utest._
3+
4+
object FirefoxTest extends TestSuite {
5+
6+
override def tests = Tests {
7+
"document" - org.scalajs.dom.document
8+
}
9+
}

test/project/build.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
sbt.version=1.5.4
1+
sbt.version=1.5.5

test/project/plugins.sbt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
libraryDependencies += "org.scala-js" %% "scalajs-env-jsdom-nodejs" % "1.1.0"
2+
libraryDependencies += "org.scala-js" %% "scalajs-env-selenium" % "1.1.1"
23

34
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.5.1")

0 commit comments

Comments
 (0)