I'm seeking some community assistance for what is probably my most vexing testing problem at the moment. Hopefully this post finds someone out there who has dealt with a similar challenge in a more elegant/scalable manner than I have, or at very least some Telerik support staff input would be greatly helpful.
I aim to script a complete trip through a life insurance application wizard where one of many insurance carriers can be selected. The carrier selection is made from a DataGrid ASP.NET control which orders the carriers in ascending order based on quote price (see the first screenshot).
Furthermore, once the user is within a particular carrier's app wizard, they will eventually reach a forms selection page, where the minimum required forms for the application packet are automatically selected, along with any forms that become required based on answers to preceding questions about the applicant in the previous wizard pages. Furthermore, the user can select additional forms to include in the packet. All forms work is done within a Repeater ASP.NET control (see second screenshot).
The rub is this: due to frequent rate changes by our carriers, and necessary forms updates performed periodically for each carrier, these pages are very dynamic in nature. For instance, Transamerica will not always hold the same position in the DataGrid from one week to the next, and a forms update for a particular carrier may change where a particular form shows up in the Repeater. So the challenge lies in writing a script that, for example, will ALWAYS select Transamerica as the carrier, or will ALWAYS select a particular form in the Repeater, regardless of how those items move around on the page due to necessary updates.
This is made all the more difficult due to the fact that the names of the button/checkbox controls are not specific to the carriers or the forms. The "Add Lead" button that corresponds to Transamerica in the DataGrid will have an id of something like "StandardPlusDG_ctl06_SelectImage", a name that is specific to the position on the grid and could hence be used to select an entirely different carrier when the system is updated with the latest pricing schemes for our carriers. Similarly, a "Buyer's Guide" form's checkbox will have an id of something like "FormsRepeater_ctl01_FormCB", which again could be used to refer to an entirely different form after a system update.
One solution I've come up with and have had moderate success with has involved creating a sort of "decision matrix" for both the carrier selection page and the forms page, where, given a data-driven context, the buttons/checkboxes that need to be selected for each individual iteration are recorded into script and nested within if/else statements. See the third screenshot - note that buttons are set to be clicked only given certain conditions, so that the location of the "Transamerica" button is known for each iteration of the test.
Note the flaw here - my script is only as good as the latest system update! It gives me the power to have a fully automated process for testing our application wizard within a given week, but in order to keep this up I have to run the script every Monday and see how many test cases fail so I can know how many "fixes" I need to make so I can have a good automation script for another week. I have made this easier on myself by building if-else page verification steps into the script (essentially, the script knows immediately if it's not in the Transamerica application wizard, and the iteration fails immediately at that point and the browser closes, opens, and runs the next iteration). However, depending on the extent of the latest system update this can take 1-4 hours at the beginning of each week. And this is just for one carrier - my goal is to have an automation script for each carrier! So my need for a more scalable methodology is clear.
Has anybody out there faced a similar challenge? Any help would be greatly appreciated!
I aim to script a complete trip through a life insurance application wizard where one of many insurance carriers can be selected. The carrier selection is made from a DataGrid ASP.NET control which orders the carriers in ascending order based on quote price (see the first screenshot).
Furthermore, once the user is within a particular carrier's app wizard, they will eventually reach a forms selection page, where the minimum required forms for the application packet are automatically selected, along with any forms that become required based on answers to preceding questions about the applicant in the previous wizard pages. Furthermore, the user can select additional forms to include in the packet. All forms work is done within a Repeater ASP.NET control (see second screenshot).
The rub is this: due to frequent rate changes by our carriers, and necessary forms updates performed periodically for each carrier, these pages are very dynamic in nature. For instance, Transamerica will not always hold the same position in the DataGrid from one week to the next, and a forms update for a particular carrier may change where a particular form shows up in the Repeater. So the challenge lies in writing a script that, for example, will ALWAYS select Transamerica as the carrier, or will ALWAYS select a particular form in the Repeater, regardless of how those items move around on the page due to necessary updates.
This is made all the more difficult due to the fact that the names of the button/checkbox controls are not specific to the carriers or the forms. The "Add Lead" button that corresponds to Transamerica in the DataGrid will have an id of something like "StandardPlusDG_ctl06_SelectImage", a name that is specific to the position on the grid and could hence be used to select an entirely different carrier when the system is updated with the latest pricing schemes for our carriers. Similarly, a "Buyer's Guide" form's checkbox will have an id of something like "FormsRepeater_ctl01_FormCB", which again could be used to refer to an entirely different form after a system update.
One solution I've come up with and have had moderate success with has involved creating a sort of "decision matrix" for both the carrier selection page and the forms page, where, given a data-driven context, the buttons/checkboxes that need to be selected for each individual iteration are recorded into script and nested within if/else statements. See the third screenshot - note that buttons are set to be clicked only given certain conditions, so that the location of the "Transamerica" button is known for each iteration of the test.
Note the flaw here - my script is only as good as the latest system update! It gives me the power to have a fully automated process for testing our application wizard within a given week, but in order to keep this up I have to run the script every Monday and see how many test cases fail so I can know how many "fixes" I need to make so I can have a good automation script for another week. I have made this easier on myself by building if-else page verification steps into the script (essentially, the script knows immediately if it's not in the Transamerica application wizard, and the iteration fails immediately at that point and the browser closes, opens, and runs the next iteration). However, depending on the extent of the latest system update this can take 1-4 hours at the beginning of each week. And this is just for one carrier - my goal is to have an automation script for each carrier! So my need for a more scalable methodology is clear.
Has anybody out there faced a similar challenge? Any help would be greatly appreciated!