Hello friends! I'm pleased to announce the recent updates to the testing-library family of tools! As always, we're committed to giving you the best tools to enable you to have confidence in shipping your applications. That's why the guiding principle for everything we do is:
The more your tests resemble the way your software is used, the more confidence they can give you.
This guiding principle has given us direction and we've been able to accomplish a lot in the testing space. To further our mission, I'd like to make a few announcements about changes going on in the testing-library world.
dom-testing-library v4 released!
This is actually a pretty small release, but I think it's worth mentioning anyway. We try to keep breaking changes to a minimum. This release only has two breaking changes. One is removal of deprecated methods you probably weren't using anyway, and the other reveals potential bugs in your tests. So you should be able to upgrade to this version with little-to-no effort.
If you do experience breakages, it's probably due to something like this:
We hope that this helps you catch bugs better!
react-testing-library and cypress-testing-library have already been updated and released major version bumps of their own to account for this upgrade. Other wrappers will hopefully follow shortly based on their respective matinainers' schedules.
Testing Library on GitHub
We've created a new org on GitHub to manage the family of testing library projects. The best part of the "Testing Library" isn't the code, but the philosophy behind it. So we're using the organization as a way to group all the projects that share the same philosophy and general utilities so whether you're using Vue, Cypress, or React (Native), you'll have a super testing tool that you're familiar with.
Here are the current (or soon to be) members of the org:
- dom-testing-library
- react-testing-library
- cypress-testing-library
- vue-testing-library
- native-testing-library (React Native)
- pptr-testing-library (Puppeteer)
- bs-react-testing-library (ReasonReact)
- testcafe-testing-library
- user-event
- jest-dom
- jest-native
(Hopefully we'll have angular on there eventually as well as ember).
What's cool is that building wrappers for your JavaScript framework of choice is often quite simple (as I demonstrate on TestingJavaScript.com). And as mentioned below, you can carry these same principles to non-DOM platforms as well!
Testing Library on Open Collective
If the Testing Library family of tools has provided you any value at all, we'd encourage you (or your employer) to contribute to our new Open Collective.
It is intended that funds raised by this open collective be used to:
- Donate to charities and other good causes
- Purchase testing-library related merchandise (stickers, T-Shirts, etc).
- Pay for hosting/domains/etc.
There are currently no plans to pay people who work on the project, but we reserve the right to do so if it makes sense in the future.
Testing Library on Twitter
A lot of chatter is going on in the Testing Library world on Twitter, so we've created a twitter account you can follow and keep up with what's going on.
Testing Library on Spectrum
We've had a pretty active spectrum community for react-testing-library. We're in the process of moving that to a more general Testing Library spectrum so we can have all discussion around the different wrappers in one place. There are over 600 members of our spectrum community (special shout-out to Giorgio who has been SUPER helpful to people there.) Please join us!
Testing Library on React Native
I'm really happy to announce a super solution to the React Native testing space. The DOM is quite different from native, as I mentioned before, it's not the code but the concepts that really make the Testing Library great. I'm happy to say that Brandon Carroll has successfully ported those concepts to a solution for React Native and I'm really happy with it. Give it a look if you're building React Native applications and want confidence that they continue to work as you make changes!
Learn Testing Library
There's been a LOT of activity around the Testing Library principles and tools in the content space. We do have a page that lists learning materials, and more gets added to it daily. If you know of blog posts, YouTube videos, courses, or anything else about the Testing Library family of tools, please contribute to the list!
Other Exciting news
As of a few months ago, the React team officially recommends you use react-testing-library to test your react applications. That's kinda neat :)
At the React Amsterdam Open Source awards ceremony, react-testing-library won the award for the Most impactful contribution to the community!
react-testing-library also received recognition on the ThoughtWorks Technology Radar as technology they believe is "Worth exploring with the goal of understanding how it will affect your enterprise." We think so too :)
Special Thank You
Each of the projects has had many contributors and on most projects in the org, you'll find a table of contributors. We're super grateful for all the contributions people have made to the projects. I'd like to also give a special shout-out to people who have made an especially significant impact on the Testing Library family of tools and community.
Myself 👋, Alex Krolick, Brandon Carroll, Giorgio, Ernesto García, and Daniel Cook.
As I said, there have been many who have contributed a great deal to the community, but these people stand out to me as individuals who have done especially great work. Thank you!
Conclusion
No matter what platform you're working with, the guiding principles of the Testing Library family can be applied to the tests for that platform. Take a step back and consider how closely your tests are resembling the way your software is used. If you can, consider what lightweight but powerful utilities would enable others to test their software in that way as well and create a library for that! Maybe it can join the Testing Library family of tools!