go-snaps icon indicating copy to clipboard operation
go-snaps copied to clipboard

experimenting with inline snapshot support

Open gkampitakis opened this issue 1 year ago • 0 comments

The api right now looks like

Calling the first time

t.Run("my test", func(t *testing.T) {
user := struct{ Name string }{
	Name: "george",
}

snaps.MatchInlineSnapshot(t, user, nil)
})

and then it will populate with the snapshot data

t.Run("my test", func(t *testing.T) {
user := struct{ Name string }{
	Name: "george",
}

snaps.MatchInlineSnapshot(t, user, snaps.Inline("struct { Name string }{Name:\"george\"}"))
})

Still haven't investigated all the edge cases that this can have and I can see being useful but not sure how much is it worth it.

Two issues that are not addressed

  • [x] Long line snapshots, haven't found a way to split text to multiples lines - I believe jest doesn't address it at all. I want to also have a look how it's handled by insta.
  • [ ] Comments ast parsing. - I have seen some weird behaviours, but nothing major. I want to test further.
  • [x] Currently there is an issue with the current approach. If a file has multiple InlineSnapshots and updated at the same time the file lines can be moved breaking the "write". I am investigating ways to fix this.
  • [ ] I want to run tests to make concurrent (t.Parallel) safe.

gkampitakis avatar Jul 08 '23 16:07 gkampitakis