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
+
1
9
scalaVersion := " 2.13.6"
2
10
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
+ )
4
28
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
+ )
9
51
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
+ )
11
57
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
+ )
0 commit comments