Sometimes you might be running automation on more than one branch on code. For example, it’s pretty common to be running some smoke tests on the ‘Development’ or ‘Integration’ branch and also be running tests on ‘Master’. So how do you cope when an object’s id is set to one thing on one branch and another thing on another branch. Well it’s easy – here’s an example using calabash and also one using watir
If I have an input field with an id of “important_x01” and my tests reference the field in a method as follows:
//calabash example def important_info_input query("* marked: 'important_x01'") end //watir example def important_info_input @browser.text_field(id: 'important_x01') end
Then let’s say that there is a change to that object id on the integration/development branch and it is now called “i_info”. So, until this change is promoted to Master this object will be known on different branches as two different things. Well the easy way to handle this is to allow the code to return whichever of these objects exists:
//calabash example def import_info_input if element_exists("* marked: 'important_x01'") query("* marked: 'important_x01'") else query("* marked:' i_info'") end end // watir example def important_info_input if @browser.text_field(id: 'important_x01').exist? @browser.text_field(id: 'important_x01') else @browser.text_field(id: 'i_info') end end