In this post, I want to show you the principles of the most useful pattern for end-to-end testing. I will use Selenium for all examples. I assume that you know this tool. It would be easier to explain some things.
Selenium WebDriver gives us powerful tools for writing end-to-end tests. We can imitate the user behavior on every aspect. However, it doesn’t come without some pain. It has several problems that testers must deal:
Some times ago I faced the problem with the low quality of the customer’s demonstration. When we try to present our application for the wider audience, we have problems with doing some basic scenarios again and again. We thought that we well tested this functionality. We were using it every day, and everybody in our team was checking it after each change. However, the application functionality still evolving. Moreover, any modification of the code may result in changing final functionality. Because of many changes before demo we can’t test it enough to be 100% sure that everything works fine.
ProtractorJs is an end-to-end framework written for AngularJS applications. It uses Selenium WebDriver features internally. The main advantage of the regular WebDriver test is an ability to cooperate well with SPA application. The main problem with this type of systems is asynchronization. Single Page Applications change their look without reloading the whole page. So it is very hard to determine when the application is ready for action. Fortunately, Protractor knows the Angular internal mechanisms, so he is aware when application finish all operations.
Many people think that testing is a subject that only testers should worry about them. I completely disagree with that statement. I can event say that developers can write better tests technically and faster. They know the application. They have technical knowledge about creating reusable code and good architecture. Nevertheless, they shouldn’t write an end to end acceptance tests. They are too focused on functionalists that write. So it is possible that they repeat the testing patterns from the development time, not on overall application image.
Beside of the normal usage, Selenium WebDriver has a lot of extra capabilities. The one of the most clever and not usual use of end-to-end testing is checking if web page fulfills accessibility rules.
Accessibility is a very broad topic, but there are some guidelines how to create the web application, that people with some disabilities (visual, hearing or manual) can use it. If we learn how to do this and on what elements we should focus to provide the accessible web site, it turns out to be very simple. There is few number of rules keep and that’s it. Screen readers or other software will take care of the rest.
Before we start testing, we should ask yourself some very important questions.
– Why do we want to test? – is helps us to answer the next question
– When do we need to start testing?
– What do we want to test?
Some time ago I faced a big dilemma. In our company, we have two teams: back-end and front-end. When we start thinking about end-to-end testing in our current project, the discussion begins. We were thinking about the best technology to do it. We are using AngularJs in this project, so we want to take advantage of Protractor library. It is the library for testing Angular Single Page Applications without waiting after each action.
We have two possibilities.
– write in TypeScript in JS environment,
– write in C# and .NET environment
In modern web development using such kind of interfaces is a very common activity. Our application can consume some public RESTful API or just specific to this one application. APIs is everywhere on the internet. It can be used be the people on the internet or by our developers. Regardless that, it is definitely worth to prepare clear documentation to save their time.
Some time ago I saw an information about new StackOverflow section named Documentation. At the very beginning, I was very excited about this new feature. It sounds great to structure and organizes all the knowledge contained into this portal. Every day thousands of developers contribute to growing this one of the world’s biggest knowledge base. It is a great goal to achieve. However, when I started to look carefully at the content and the form of the knowledge in this documentation I realized that I even don’t know what good documentation means.
For the last two months, I was taking a little break with writing a blog. I wanted to finish writing my book and close some other projects. I succeeded. I also have an idea to use this time to work a bit on my blog. I decided to move it to another hosting server. That my adventures begins. I installed it on the new server and migrate all the content. The deciding moment was changing in the domain configuration. The only things that I needed to do are: change DNS addresses and Wordpress address in its configuration.