Protocols can't be extended to conform to other protocols, sadly.
So this duplicates the haveValidSnapshot/recordSnapshot matchers with ones that take in a SwiftUI View. Then, inside of that, the SwiftUI View is converted to a Snapshotable, and we delegate to the appropriate matcher for snapshotable.
(The Danger failure isn't due to your change, it's a permissions issue. I'm thinking of removing it entirely to prevent me from responding to every PR from a fork with "the failure isn't your fault!")
Protocols can't be extended to conform to other protocols, sadly. So this duplicates the haveValidSnapshot/recordSnapshot matchers with ones that take in a SwiftUI View. Then, inside of that, the SwiftUI View is converted to a Snapshotable, and we delegate to the appropriate matcher for snapshotable.
Fixes #252