-
211 Remove waiting from ElementProxy methods
This change updates the signature and behavior of the
visible?
/hidden?
/present?
/absent?
methods on theElementProxy
class.These methods no longer take any arguments and do not wait. To wait for any of the above conditions, users should instead call the
wait_until_*
methods.
- 209 Remove warning for Rails 5.x and 6.x
- 207 Prevent AePageObjects::Collection#size from waiting
- 206 Retry Document#visit on Net::ReadTimeout
- 205 Fix typo in Document#reload
- 203 Fixed deprecation warning when using
exact: true
withoutXPath.is
- 203 Gracefully handle
Selenium::WebDriver::Error::StaleElementReferenceError
after page reload
- 203 Update minimum Capybara version to 3.0.0
- 203 Added
Document#reload
- 203 Require ruby >= 2.2.5 (required by Capybara 3.0.0)
-
194 Changed AePageObjects.wait_until semantics and changed ensure loaded interface.
This change improves
browser.find_document
,window.change_to
, and all the method likeabsent?
/wait_until_absent
onElementProxy
by not relaying onCapybara.using_wait_time(0)
. This results in three backward incompatible changes,Previously,
AePageObjects.wait_until
was not aware of nested invocations. So that:AePageObjects.wait_until(5) do AePageObjects.wait_until(60) do false end end
resulting in the outer invocation waiting 5 seconds and the inner invocation waiting 60 seconds.
Now,
AePageObjects.wait_until
keeps track of nested invocations and only the outer most invocation matters,AePageObjects.wait_until(5) do AePageObjects.wait_until(60) do false end end
resulting in the outer invocation waiting 5 seconds and the inner invocation not waiting at all.
Previously, one would implement 'load ensuring' by overriding
ensure_loaded!
,class Page < AePageObjects::Document private def ensure_loaded! super raise LoadingPageFailed unless title == 'Hi There' end end
Now, one should implement
load ensuring
via theis_loaded
dsl,class Page < AePageObjects::Document is_loaded { title == 'Hi There' } end
Note, there is no need to remember to call super nor catch Selenium / Capybara exceptions. The is_loaded block should return quickly. That means using
#all
/#first
instead of the other Capybara matchers / finders. For example, to check whether the page contains an element with a certain id, you want to do,class Page < AePageObjects::Document is_loaded { !node.first('#foo').nil? } end
as opposed to,
class Page < AePageObjects::Document is_loaded { node.has_selector?('#foo') } end
Don't worry, the caller of is_loaded blocks will correctly wait / rescue exceptions.
Finally,
#find
and#all
onAePageObjects::Node
are no longer delegated tonode
. So instead of,class Page < AePageObjects::Document def produce_halloween_candy find('#candy-producer').click end end
you simply grab the node first,
class Page < AePageObjects::Document def produce_halloween_candy node.find('#candy-producer').click end end
-
189 Fixed the behavior of
AePageObjects::Collection
when options are passed withinitem_locator
.Previously options passed such as
visible
ortext
below would have been ignored:collection :children, item_locator: ['li', { visible: true, text: 'Hello World' }]
-
191 Fixed performance issue with
AePageObjects::Collection.each
- 179 Add Node#element element factory to create elements off of existing elements.
- 111 Adding wait: option to all polling query methods.
- 176 Limit exposed constants to public API.
- 175 Use
BasicRouter
as default. Move Rails support toae_page_objects/rails
. - 107 Replaced
Site
andDocument.site
withAePageObjects.default_router
andDocument.router
- 82 Removed Ruby 1.8.7 support
- 119 Remove Support for Rails 2.3
- 125 ElementProxy presence checks should invalidate cache
- 128 Fix method_missing for "class" in ElementProxy
- 116 Do not support block handling in element define method. Fixes 112
- 134 Change current_url_without_params to strip anchors as well as parameters
- 121 Add Deprecation Warnings
- 103 Enhance visit to support multiple paths
- Fix 63 Routing incorrectly matches documents
- 96 AePageObjects::Waiter.wait_until should detect when time is frozen
- 108 Support Rails 4.1 & 4.2
- Ruby 2.2 support
- 86 Added Waiter.wait_until!, ElementProxy#wait_until_visible, ElementProxy#wait_until_hidden
- Reverted fix for 63 Routing incorrectly matches documents
- 63 Routing incorrectly matches documents
- 64 browser.find_document should ignore Selenium::WebDriver::Error::NoSuchWindowError
- 65 ElementProxy#not_present? does not wait for element to be absent.
- 72 & 74 Wrap Capybara exceptions
- 77 Update Waiter.wait_for to accept timeout argument
- 78 Add wait_for_* methods to ElementProxy
- Issue 74
- Issue 69
- Test against Rails 4
- Issue Wrapped Capybara::ElementNotFound error in AePageObjects::LoadingElementFailed
- Multiple window support:
- window.change_to
- browser.find_document
- Support Capybara 2
- Removed block support from Element.new
- Change ElementProxy visibility methods to wait
- A few Collection improvements
- introduced Window management
- Collection enhancements:
- implements Enumerable
- removed append support
- accept any type of locator for items
- return ElementProxy instead of Element for items
- refactor to make overriding easier
- bug fix
- added support for Rails 2.3
- renamed Application to Site
- removed argument to Document.initialize
- removed nokogiri dependency
- removed activesupport dependency
- added README
- removed auto and eager loading support
- set activesupport dependency to (~> 3.0)
- fixed bug relating to full_name traversal
- fixed nokogiri dependency to ~>1.5.9 for ruby 1.8.7 support
- reinstated multiple autoload paths support
- collapsed eagerload and autoload paths into a single path
- reinstated using a root_path based on the path of where Application is subclassed.
- initial release