1. Fragility

We changed a little bit of code and it blew off half of our tests.

Why? Because these snapshots are tightly coupled with your component DOM, so even a little change to the component DOM causes a test to fail.

2. Irrelevance (after time)

These tests became irrelevant because you are completely ignoring them.

Why? Because these tests are constantly failing because they are fragile. This has a massive implication to your daily work because after some time you will just update most of the snapshots automatically without even thinking about the changed component.

3. No TDD!

You are not able to write tests first.

4. Descriptiveness

What is the mysterious snapshot? Where it comes from? What actually happens when I click on the toggle preview?

I like my test to be explicit as possible in order to understand the problem.

5. False safety

It is so easy to rely on useless snapshot tests.

What is a useless snapshot test you asked?

The one who is not testing the component’s behavior but just component’s whole output.

Why is it a problem? Because your tests are green even if they are missing all business tests. And if they are green you are confident enough to deploy your code to the production without hesitation.

Read more about this topic

Why I stopped using snapshot testing with Jest