Skip to content

Commit 74c214f

Browse files
committed
Setup Safari ci
1 parent 7c0e4b9 commit 74c214f

File tree

3 files changed

+25
-3
lines changed

3 files changed

+25
-3
lines changed

.github/workflows/ci.yml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,19 @@ jobs:
2525
name: Build and Test
2626
strategy:
2727
matrix:
28-
os: [ubuntu-latest]
28+
os: [ubuntu-latest, macos-latest]
2929
scala: [2.12.14, 2.13.6, 3.0.2]
3030
31-
ci: [ciNode, ciFirefox, ciChrome, ciJSDOMNodeJS]
31+
ci: [ciNode, ciFirefox, ciChrome, ciSafari, ciJSDOMNodeJS]
32+
exclude:
33+
- ci: ciNode
34+
os: macos-latest
35+
- ci: ciFirefox
36+
os: macos-latest
37+
- ci: ciChrome
38+
os: macos-latest
39+
- ci: ciJSDOMNodeJS
40+
os: macos-latest
3241
runs-on: ${{ matrix.os }}
3342
steps:
3443
- name: Checkout current branch (full)

build.sbt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.openqa.selenium.WebDriver
1818
import org.openqa.selenium.chrome.{ChromeDriver, ChromeOptions}
1919
import org.openqa.selenium.firefox.{FirefoxOptions, FirefoxProfile}
20+
import org.openqa.selenium.safari.{SafariOptions, SafariDriver}
2021
import org.openqa.selenium.remote.server.{DriverFactory, DriverProvider}
2122

2223
import org.scalajs.jsenv.jsdomnodejs.JSDOMNodeJSEnv
@@ -47,6 +48,10 @@ ThisBuild / scmInfo := Some(
4748

4849
ThisBuild / crossScalaVersions := Seq("2.12.14", "2.13.6", "3.0.2")
4950

51+
val PrimaryOS = "ubuntu-latest"
52+
val MacOS = "macos-latest"
53+
ThisBuild / githubWorkflowOSes := Seq(PrimaryOS, MacOS)
54+
5055
ThisBuild / githubWorkflowBuildPreamble ++= Seq(
5156
WorkflowStep.Use(
5257
UseRef.Public("actions", "setup-node", "v2.1.2"),
@@ -58,7 +63,10 @@ ThisBuild / githubWorkflowBuildPreamble ++= Seq(
5863
name = Some("Install jsdom"),
5964
cond = Some("matrix.ci == 'ciJSDOMNodeJS'")))
6065

61-
val ciVariants = List("ciNode", "ciFirefox", "ciChrome", "ciJSDOMNodeJS")
66+
val ciVariants = List("ciNode", "ciFirefox", "ciChrome", "ciSafari", "ciJSDOMNodeJS")
67+
68+
ThisBuild / githubWorkflowBuildMatrixExclusions ++= ciVariants.filter(_ != "ciSafari")
69+
.map(ci => MatrixExclude(Map("ci" -> ci, "os" -> MacOS)))
6270

6371
ThisBuild / githubWorkflowBuildMatrixAdditions += "ci" -> ciVariants
6472

@@ -69,6 +77,7 @@ replaceCommandAlias("ci", ciVariants.mkString("; ", "; ", ""))
6977
addCommandAlias("ciNode", "; set useJSEnv := JSEnv.NodeJS; core/test; core/doc")
7078
addCommandAlias("ciFirefox", "; set useJSEnv := JSEnv.Firefox; all core/test webworker/test; set useJSEnv := JSEnv.NodeJS")
7179
addCommandAlias("ciChrome", "; set useJSEnv := JSEnv.Chrome; all core/test webworker/test; set useJSEnv := JSEnv.NodeJS")
80+
addCommandAlias("ciSafari", "; set useJSEnv := JSEnv.Safari; all core/test; set useJSEnv := JSEnv.NodeJS")
7281
addCommandAlias("ciJSDOMNodeJS", "; set useJSEnv := JSEnv.JSDOMNodeJS; core/test; set useJSEnv := JSEnv.NodeJS")
7382

7483
// release configuration
@@ -130,6 +139,9 @@ ThisBuild / Test / jsEnv := {
130139
defaultFactory.registerDriverProvider(provider)
131140
}
132141
new SeleniumJSEnv(options, SeleniumJSEnv.Config().withDriverFactory(factory))
142+
case Safari =>
143+
val options = new SafariOptions()
144+
new SeleniumJSEnv(options)
133145
}
134146
}
135147

project/JSEnv.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ sealed abstract class JSEnv
22
object JSEnv {
33
case object Chrome extends JSEnv
44
case object Firefox extends JSEnv
5+
case object Safari extends JSEnv
56
case object JSDOMNodeJS extends JSEnv
67
case object NodeJS extends JSEnv
78
}

0 commit comments

Comments
 (0)