assert_last_visit_matches and check_snapshot should probably be merged somehow:
it would make sense to show the (full) diff between the branches of the expected snapshot and the actual snapshot added to the storage (regardless of id), rather than just having what is essentially a boolean "yes, the snapshot matches" (which is essentially what happens when the ids are checked for equality).
Overall I think your logic is sound, I just think it should go one step further.
(maybe making the diff recursive, i.e. "these branches are different, and here are the objects they point to" would make sense as well, but I don't think we have a lot of deep structure for the objects that we expect to have archived in these tests)