#30974: Selenium asserts should be wait statements
---------------------------------------------+--------------------------
               Reporter:  Johannes Hoppe     |          Owner:  nobody
                   Type:  Bug                |         Status:  assigned
              Component:  Testing framework  |        Version:  master
               Severity:  Normal             |       Keywords:
           Triage Stage:  Unreviewed         |      Has patch:  1
    Needs documentation:  0                  |    Needs tests:  0
Patch needs improvement:  0                  |  Easy pickings:  0
                  UI/UX:  0                  |
---------------------------------------------+--------------------------
 I just took a deep dive into our selenium tests, because ... well... they
 are "not deterministic sometimes" ;)

 I realized that we use a lot of assertions in our tests, where I believe
 we should be using wait statements. Mainly because selenium tests are
 asynchronous and don't really when an assertion is true. It seems more
 reasonable to be, to simply say, what we expect and give it a reasonable
 amount of time before we fail.

 So instead of:

 {{{
 self.assertEqual(
     self.selenium.switch_to.active_element,
     self.selenium.find_element_by_id('id_name')
 )
 }}}

 We do:

 {{{
 self.wait_until(
     lambda selenium:
         selenium.switch_to.active_element ==
 selenium.find_element_by_id('id_name')
 )
 }}}

 I know this is not a foreign concept if you have been doing a lot of
 Selenium testing. Still, there are many cases where we do it "wrong" and
 the test suite fails "sometimes".

 I believe the main difference is that in one case you raise an
 `AssertionError` in the other a `TimeoutError`. However, we could cast
 those to have the tests fail not error.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/30974>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/052.31b767d5df58c6b04e79769129a116e8%40djangoproject.com.

Reply via email to