Best testing library for me currently is avajs it doesn't get in your way, it's really simple conceptually and incentivates good practices (this is really basic, but I've had to deal with lots of code that the tests were a mess. IMHO it's really important to make your tests indepent and run them in parallel, because your test suite grows overtime).
For end-to-end testing: Cypress is pretty amazing too (check the code), really powerful and simple to use. Here's a real world project that uses it: Spectrum - Simple, powerful online communities
But if you want to do things by hand, you can always use puppeteer