[Ovirt-devel] [PATCH] Fixes to broken tests (1/2)
Mohammed Morsi
mmorsi at redhat.com
Tue Sep 2 01:18:17 UTC 2008
Alan Pevec wrote:
>> @@ -114,12 +114,14 @@ if File.exists? File.dirname(__FILE__) +
>> '/../selenium.rb'
>>
>> "selenium.isElementPresent(\"//div[@id='vm_action_results']/div[3]/div/div[2]/a\")",
>>
>> 10000)
>> @browser.click
>> "//div[@id='vm_action_results']/div[3]/div/div[2]/a"
>> + sleep 5 # give vm time to start
>
> Why is sleep needed here at all if wait_for_condition below is
> expecting 'running' to show up?
> In general, using sleep for synchronization is wrong, although it
> might seem to work.
As far as I can tell the vm tab doesn't get automatically updated via
javascript when the state of a vm changes, thus I need to wait a little
time and manually refresh the page before I check for the status. I
could do an assertion on the backend, and check the actual vm table
entry itself, but these are interface tests, thus assertions should be
on interface components.
>
>> @browser.click "//div[@id='side']/ul/li/ul/li[1]/span/a"
>> @browser.wait_for_condition(
>> -
>> "selenium.isElementPresent(\"//table[@id='vms_grid']/tbody/tr[" +
>> (num_vms.to_i + 1).to_s + "]/td[7]/div\")",
>> +
>> "selenium.isElementPresent(\"//table[@id='vms_grid']/tbody/tr[" +
>> (num_vms.to_i + 1).to_s + "]/td[7]/div\") && " +
>> + "selenium.getText(\"//table[@id='vms_grid']/tbody/tr["
>> + (num_vms.to_i + 1).to_s + "]/td[7]/div\") == \"running\"",
>> 20000)
>> - assert_equal("running",
>> - @browser.get_text("//table[@id='vms_grid']/tbody/tr[" +
>> (num_vms.to_i + 1).to_s + "]/td[7]/div"))
>> + #assert_equal("running",
>> + #@browser.get_text("//table[@id='vms_grid']/tbody/tr[" +
>> (num_vms.to_i + 1).to_s + "]/td[7]/div"))
>
> What happens if wait_for_condition times out? Will selenium raise an
> exception, failing the test or it just continues? If latter, you need
> to keep the assert.
> In general, if removing lines, just delete them instead of commenting,
> we have git to keep the history.
Selenium raises an exception when wait_for_condition times out and the
test fails so the assertion can be safely removed. My bad on the
commenting, just code I forgot to remove, will keep it in mind in the
future.
>
>> # stop / destroy vm
>> @browser.click "//table[@id='vms_grid']/tbody/tr[" +
>> (num_vms.to_i + 1).to_s + "]/td[1]/div/input"
>> @@ -128,12 +130,14 @@ if File.exists? File.dirname(__FILE__) +
>> '/../selenium.rb'
>>
>> "selenium.isElementPresent(\"//div[@id='vm_action_results']/div[3]/div/div[2]/a\")",
>>
>> 10000)
>> @browser.click
>> "//div[@id='vm_action_results']/div[3]/div/div[2]/a"
>> + sleep 5 # give vm time to stop
>
> same questions as above
>
>> @browser.click "//div[@id='side']/ul/li/ul/li[1]/span/a"
>> @browser.wait_for_condition(
>> -
>> "selenium.isElementPresent(\"//table[@id='vms_grid']/tbody/tr[" +
>> (num_vms.to_i + 1).to_s + "]/td[7]/div\")",
>> +
>> "selenium.isElementPresent(\"//table[@id='vms_grid']/tbody/tr[" +
>> (num_vms.to_i + 1).to_s + "]/td[7]/div\") && " +
>> + "selenium.getText(\"//table[@id='vms_grid']/tbody/tr["
>> + (num_vms.to_i + 1).to_s + "]/td[7]/div\") == \"stopped\"",
>> 20000)
>> - assert_equal("stopped",
>> - @browser.get_text("//table[@id='vms_grid']/tbody/tr[" +
>> (num_vms.to_i + 1).to_s + "]/td[7]/div"))
>> + #assert_equal("stopped",
>> + #@browser.get_text("//table[@id='vms_grid']/tbody/tr[" +
>> (num_vms.to_i + 1).to_s + "]/td[7]/div"))
>
More information about the ovirt-devel
mailing list