Rafael N. answered 03/04/20
Software engineer focused on front-end web technologies.
Hello there!
This is a great question and one that comes up fairly frequently.
Think of karma as your test runner. This is the tool that will actually execute your source code against a series of test cases that you define. You can configure it to run on several browsers (Chrome, Firefox), and, even run tests on specific platforms (tablets, phones, desktops).
jasmine is a testing framework which provides for easy to read test specifications. Using basic language such as describe and it, paired with a wide array of matchers (toBe, toEqual, toBeDefined), you can write comprehensive test suites to catch all edge cases.
Finally, the coolest tool I believe, is protractor. Protractor allows for you to run end to end tests against your application and simulate what a real user would do during using of your app. You essentially tell it what to do and then you watch the browser do whatever it is you told it to. Think of something like, "navigate to my page, login, click on this button, make sure this header is here, click logout, make sure I am logged out." Protractor also offers a rich set of configuration for all of your needs.
Thanks for asking! Reach out if you have any other questions.