Supported frameworks
snapshot4s
comes with out of the box integrations for:
- Weaver via
snapshot4s-weaver
- MUnit via
snapshot4s-munit
- ScalaTest via
snapshot4s-scalatest
All integrations support Scala.js.
If you use a different test framework, you can easily develop your own integration.
Weaver
Add the snapshot4s-weaver
dependency to your build.sbt
.
import snapshot4s.BuildInfo.snapshot4sVersion
libraryDependencies += "com.siriusxm" %% "snapshot4s-weaver" % snapshot4sVersion % Test
For Scala.js, use %%%
and emit a module.
import snapshot4s.BuildInfo.snapshot4sVersion
libraryDependencies += "com.siriusxm" %%% "snapshot4s-weaver" % snapshot4sVersion % Test
Test / scalaJSLinkerConfig ~= { _.withModuleKind(ModuleKind.CommonJSModule) }
Extend the SnapshotExpectations
trait and import snapshot4s.generated.*
.
import snapshot4s.weaver.SnapshotExpectations
import snapshot4s.generated.*
object MySuite extends weaver.SimpleIOSuite with SnapshotExpectations {
test("snapshot4s can fill in the blanks") {
val mySnapshotWorkflow = "snapshot4s"
assertInlineSnapshot(mySnapshotWorkflow, ???)
}
test("snapshot4s can update code") {
val mySnapshotCode = List(1, 2, 3)
assertInlineSnapshot(mySnapshotCode, Nil)
}
test("snapshot4s can work with files") {
val mySnapshotWorkflow = "snapshot4s"
assertFileSnapshot(mySnapshotWorkflow, "mySnapshotWorkflow")
}
}
Munit
Add the snapshot4s-munit
dependency to your build.sbt
.
import snapshot4s.BuildInfo.snapshot4sVersion
libraryDependencies += "com.siriusxm" %% "snapshot4s-munit" % snapshot4sVersion % Test
For Scala.js, use %%%
and emit a module.
import snapshot4s.BuildInfo.snapshot4sVersion
libraryDependencies += "com.siriusxm" %%% "snapshot4s-munit" % snapshot4sVersion % Test
Test / scalaJSLinkerConfig ~= { _.withModuleKind(ModuleKind.CommonJSModule) }
Extend the SnapshotAssertions
trait and import snapshot4s.generated.*
.
import snapshot4s.munit.SnapshotAssertions
import snapshot4s.generated.*
object MySuite extends munit.FunSuite with SnapshotAssertions {
test("snapshot4s can fill in the blanks") {
val mySnapshotWorkflow = "snapshot4s"
assertInlineSnapshot(mySnapshotWorkflow, ???)
}
test("snapshot4s can update code") {
val mySnapshotCode = List(1, 2, 3)
assertInlineSnapshot(mySnapshotCode, Nil)
}
test("snapshot4s can work with files") {
val mySnapshotWorkflow = "snapshot4s"
assertFileSnapshot(mySnapshotWorkflow, "mySnapshotWorkflow")
}
}
ScalaTest
Add the snapshot4s-scalatest
dependency to your build.sbt
.
import snapshot4s.BuildInfo.snapshot4sVersion
libraryDependencies += "com.siriusxm" %% "snapshot4s-scalatest" % snapshot4sVersion % Test
For Scala.js, use %%%
and emit a module.
import snapshot4s.BuildInfo.snapshot4sVersion
libraryDependencies += "com.siriusxm" %%% "snapshot4s-scalatest" % snapshot4sVersion % Test
Test / scalaJSLinkerConfig ~= { _.withModuleKind(ModuleKind.CommonJSModule) }
Extend the SnapshotAssertions
trait and import snapshot4s.generated.*
.
import org.scalatest.flatspec.AnyFlatSpec
import snapshot4s.scalatest.SnapshotAssertions
import snapshot4s.generated.*
class MySuite extends AnyFlatSpec with SnapshotAssertions {
"snapshot4s" should "fill in the blanks" in {
val mySnapshotWorkflow = "snapshot4s"
assertInlineSnapshot(mySnapshotWorkflow, ???)
}
it should "update code" in {
val mySnapshotCode = List(1, 2, 3)
assertInlineSnapshot(mySnapshotCode, Nil)
}
it should "work with files" in {
val mySnapshotWorkflow = "snapshot4s"
assertFileSnapshot(mySnapshotWorkflow, "mySnapshotWorkflow")
}
}