While jasmine's core support is bit and miss (minimal new development, lots of unresolved issues / pull requests on their github), Jasmine is a really good tool for checking client code, mainly because of jasmine-jquery .
Jasmine's overall approach is pretty solid, and Jasmine-Jquery has many great helpers for testing the DOM, as well as a great DOM sandbox.
I found client-side testing a problem, mainly because I had to stop being so tough and prescriptive in my tests.
As a rule, you should approach testing on the client side as something "fuzzy", testing the DOM hierarchy too specifically is the way to hell. Check things like "Does the page contain these words" over the div id # my-div contains ul with 3 with content that matches this regular expression "
The last is how I started making tests, but I found it incredibly time-consuming and fragile; if the designer (s) wants to tinker with the structure, he could unnecessarily break many tests. The only way around this is to create “widgets” for each component, which would be ideal, but, as I said, a lot of time, actually it was a joke in my office: “How many tests did you do this week Tim "2? 3? Wow 3 tests. Good job."
Anyway...
You can get 90% of the benefits of testing on the client side by testing freely and focus on what is important, for example, at the workplace and the presence of data on certain content in a certain place in the hierarchy on the page.
edit: Also, make sure that you break the business logic into units that are not DOM-dependent as humanly possible as possible. It makes your life a lot easier and usually leads to better architecture, which is a plus.
edit 2: You can see how the Rails world does this with Capybara / Cucumber or Selenium.