If you missed the previous day, you can find it here.
Morning of January 18
I start the day with something to bring my mood and energy up.
One cup of hot, strong coffee (no sugar, no milk) for the energy and Rammstein music for the mood.
Today, I need to focus on test stability issues.
I have around 20 Jenkins jobs that run daily automated tests related to various site features.
Some jobs pass consistently but a few fail from time to time.
The first one that I will look at is for the ChangePassword feature.
It runs all tests from the ChangePassword test class using a Maven command:
mvn clean -Dtest=automatedtests.changePassword.ChangePasswordTests test
Out of 5 job runs, there are 2 failures. The Jenkins console log says that assertions are failing. I will run the test class locally to see what is going on.
15 minutes later
From all change password tests, the one that changes the password successfully works. All other negative tests that verify that the password cannot be changed (if it is too short or if it includes special characters) fail. Each negative test attempts changing the password and then checks if an error message is displayed.
But the error message is all the time the same. It should say that the password is too short or that the password cannot include special characters. Instead, it always says that the passwords are not identical.
This seems like an application bug so I should speak to the developers. I will record a video with the tests execution and send it in an email asking for their opinion. Maybe there is a good explanation for it. I better get their opinion first and then, if they agree, log a bug to Jira.
10 minutes later
The email is out so I can look into the second failing Jenkins job. This one is about the user acount security questions.
The Jenkins console log points to timeout issues for different page elements.
There are a few possible reasons:
- The site is very slow.
- The test does not navigate from a page to the next one. Maybe the test executes the code for clicking a button and the button is not clicked.
- The ids of the elements changed again.
The html of the site is pretty bad with many elements having either no ids or dynamic ids.
I will have to run these tests locally as well, then confirm which elements cannot be found, get their ids and compare them to the page element ids from Chrome Inspector.
So booooriiiing, does anyone like to do this part?
Anyways, as Maximus’s servant said it in Gladiator (what a terrific movie! looking forward to watch it again) when asked if he likes what he does:
Maximus: Do you find it hard to do your duty?
Cicero: Sometimes I do what I want to do. The rest of the time, I do what I have to.
I will do as well what I have to.
Later in the day
I am really upset now. All elements from the security questions page have different ids. I need to modify all locators from the SecurityQuestions.java class and retest all tests that use it.
This is such a waste of effort, modifying page element locators over and over and over.
Starting from scratch 🙂
Too bad that the developers are so busy with the new features that no one has time to add the custom ids that I keep asking for.
I am so looking forward to the end of the sprint. Maybe after it, I will be able to pair with a developer and go through all pages and add custom ids to all elements.
Finally, the last failing Jenkins job.
This one is for the user registration tests.
The console log shows stale element exceptions for a few elements. This is weird since I am sure that these tests were running very well.
Maybe the developers enabled the auto postback setting for the page elements which makes the element regenerate every time it is interacted with. I solved this before for other pages by retrying a method on exception a few times so I can do the same here. But since it is later in the day, it will have to wait until tomorrow.
4 pm already?
Before I go home, someone mentioned on LinkedIn that page factory should not be used any longer.
It is the video of the keynote of a Selenium conference from 2016. I better watch it to get more details.
Yes, Simon Stewart says that no one is using Page Factory and that its design could have been better.
But apparently, no one uses it correctly either and many people try to generate page objects automatically while using page factory.
Wow, never crossed my mind to generate page objects automatically!
So Page Factory works if you use it as it is supposed to be used.
I should watch this video again.
I laughed so much during it, Simon has a great sense of humor 🙂