We proudly introduced the version 2.0.0 of Leankoala last week. It was a major update. But for the user, nothing really changed. At least it looked like there was no big thing.
When somebody built a website some years ago there was an Apache server with PHP (or something similar) that was generating HTML content. Everybody did it like that. For us testers it was very easy to test those websites. We only had to download the HTML file and analyze it. In most cases, cURL was used for downloading and some regular expression magic was applied to test the pages. That best thing about those tests was, that they were quite fast. There was no browser that had to be started.
Those new Javascript frameworks changed that. Google introduced Angular some years ago and Facebook did the same with React. But what is different? In many cases there is no HTML code that is generated by a backend. When looking at the HTML code that is interpreted by the browser there often only is a line of javascript code that includes a library. And that is the problem. When there is no HTML code within the request there is nothing we can check via regular expression or xpaths. We can only check if the javascript include is present but that is all.
Those easy checks are not that easy anymore and also not fast. What you now have to do is open a browser, request an URL, execute the js code, render the DOM tree and then apply the “old” checks on that tree. Unfortunately, browsers are slower and error-prone than the handy curl library we used before. So testing this new kind of website is more challenging. It can be done via Selenium and Webdriver and most programming languages are supporting those tests.
At Leankoala we launched the new feature last week. Our customers are now able to configure their system as javascript-aware. That means all tests are run on a real browser (Chrome) so the can check if some text is present, a CSS element exists or a given XPath can be found even if the website runs on Angular or React.