Skip to content
Snippets Groups Projects
  • Daniel Calviño Sánchez's avatar
    9313c979
    Add automatic handling of common command failures of Mink elements · 9313c979
    Daniel Calviño Sánchez authored
    
    Commands executed on Mink elements may fail for several reasons.
    ElementWrapper is introduced to automatically handle some of those
    situations, like StaleElementReference exceptions and ElementNotVisible
    exceptions.
    
    StaleElementReference exceptions are thrown when the command is executed
    on an element that is no longer attached to the DOM. When that happens
    the ElementWrapper finds again the element and executes the command
    again on the new element.
    
    ElementNotVisible exceptions are thrown when the command requires the
    element to be visible but the element is not. When that happens the
    ElementWrapper waits for the element to be visible before executing the
    command again.
    
    These changes are totally compatible with the current acceptance tests.
    They just make the tests more robust, but they do not change their
    behaviour. In fact, this should minimize some of the sporadic failures
    in the acceptance tests caused by their concurrent nature with respect
    to the web browser executing the commands.
    
    However, the ElementWrapper is not a silver bullet; it handles the most
    common situations, but it does not handle every possible scenario. For
    example, the acceptance tests would still fail sporadically if an
    element can become staled several times in a row (uncommon) or if it
    does not become visible before the timeout expires (which could still
    happen in a loaded system even if the components under test work right,
    but obviously it is not possible to wait indefinitely for them).
    
    Signed-off-by: default avatarDaniel Calviño Sánchez <danxuliu@gmail.com>
    9313c979
    History
    Add automatic handling of common command failures of Mink elements
    Daniel Calviño Sánchez authored
    
    Commands executed on Mink elements may fail for several reasons.
    ElementWrapper is introduced to automatically handle some of those
    situations, like StaleElementReference exceptions and ElementNotVisible
    exceptions.
    
    StaleElementReference exceptions are thrown when the command is executed
    on an element that is no longer attached to the DOM. When that happens
    the ElementWrapper finds again the element and executes the command
    again on the new element.
    
    ElementNotVisible exceptions are thrown when the command requires the
    element to be visible but the element is not. When that happens the
    ElementWrapper waits for the element to be visible before executing the
    command again.
    
    These changes are totally compatible with the current acceptance tests.
    They just make the tests more robust, but they do not change their
    behaviour. In fact, this should minimize some of the sporadic failures
    in the acceptance tests caused by their concurrent nature with respect
    to the web browser executing the commands.
    
    However, the ElementWrapper is not a silver bullet; it handles the most
    common situations, but it does not handle every possible scenario. For
    example, the acceptance tests would still fail sporadically if an
    element can become staled several times in a row (uncommon) or if it
    does not become visible before the timeout expires (which could still
    happen in a loaded system even if the components under test work right,
    but obviously it is not possible to wait indefinitely for them).
    
    Signed-off-by: default avatarDaniel Calviño Sánchez <danxuliu@gmail.com>