Skip to content

Latest commit

 

History

History
343 lines (219 loc) · 10.4 KB

CHANGELOG.md

File metadata and controls

343 lines (219 loc) · 10.4 KB

Version 5.0.0

Changed

  • 211 Remove waiting from ElementProxy methods

    This change updates the signature and behavior of the visible? / hidden? / present? / absent? methods on the ElementProxy 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.

Version 4.3.0

Fixed

  • 209 Remove warning for Rails 5.x and 6.x

Version 4.2.0

Changed

  • 207 Prevent AePageObjects::Collection#size from waiting

Version 4.1.0

Changed

  • 206 Retry Document#visit on Net::ReadTimeout

Version 4.0.1

Fixed

  • 205 Fix typo in Document#reload

Version 4.0.0

Fixed

  • 203 Fixed deprecation warning when using exact: true without XPath.is
  • 203 Gracefully handle Selenium::WebDriver::Error::StaleElementReferenceError after page reload

Changed

  • 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)

Version 3.1.1

Fixed

Version 3.1.0

Changed

  • 198 Add Rails 5.0 support for ae_page_objects router
  • 197 Fix documentation

Version 3.0.0

Changed

  • 194 Changed AePageObjects.wait_until semantics and changed ensure loaded interface.

    This change improves browser.find_document, window.change_to, and all the method like absent? / wait_until_absent on ElementProxy by not relaying on Capybara.using_wait_time(0). This results in three backward incompatible changes,

    AePageObjects.wait_until

    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.

    ensure_loaded!

    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 the is_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.

    more separation between AePageObjects / Capybara

    Finally, #find and #all on AePageObjects::Node are no longer delegated to node. 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

Version 2.0.1

Bugs

  • 189 Fixed the behavior of AePageObjects::Collection when options are passed within item_locator.

    Previously options passed such as visible or text below would have been ignored:

    collection :children, item_locator: ['li', { visible: true, text: 'Hello World' }]
  • 191 Fixed performance issue with AePageObjects::Collection.each

Version 2.0.0

Added

  • 179 Add Node#element element factory to create elements off of existing elements.
  • 111 Adding wait: option to all polling query methods.

Changed

  • 176 Limit exposed constants to public API.
  • 175 Use BasicRouter as default. Move Rails support to ae_page_objects/rails.
  • 107 Replaced Site and Document.site with AePageObjects.default_router and Document.router
  • 82 Removed Ruby 1.8.7 support
  • 119 Remove Support for Rails 2.3

Version 1.5.0

Bugs

  • 125 ElementProxy presence checks should invalidate cache

Added

  • 81 Support Capybara < 2.8
  • 99 Need a replacement for Capybara.wait_until
  • 136 stale! should be public

Version 1.4.1

Bugs

  • 128 Fix method_missing for "class" in ElementProxy
  • 116 Do not support block handling in element define method. Fixes 112

Added

  • 134 Change current_url_without_params to strip anchors as well as parameters
  • 121 Add Deprecation Warnings
  • 103 Enhance visit to support multiple paths

Version 1.4.0

Bugs

  • Fix 63 Routing incorrectly matches documents

Added

  • 96 AePageObjects::Waiter.wait_until should detect when time is frozen
  • 108 Support Rails 4.1 & 4.2
  • Ruby 2.2 support

Version 1.3.0

Added

  • 86 Added Waiter.wait_until!, ElementProxy#wait_until_visible, ElementProxy#wait_until_hidden

Version 1.2.1

Bugs

  • Reverted fix for 63 Routing incorrectly matches documents

Version 1.2.0

Bugs

  • 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.

Added

  • 72 & 74 Wrap Capybara exceptions
  • 77 Update Waiter.wait_for to accept timeout argument
  • 78 Add wait_for_* methods to ElementProxy

Maintenance

  • 75 & 76 Remove Node.new_subclass

1.1.3

  • Issue 74

1.1.2

  • Issue 69

1.1.1

1.1.0

  • Multiple window support:
  • window.change_to
  • browser.find_document

1.0.2

1.0.1

1.0.0

  • Support Capybara 2
  • Removed block support from Element.new
  • Change ElementProxy visibility methods to wait

0.5.2

  • A few Collection improvements

0.5.0

  • 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

0.4.1

  • bug fix

0.4.0

  • added support for Rails 2.3
  • renamed Application to Site
  • removed argument to Document.initialize
  • removed nokogiri dependency

0.3.0

  • removed activesupport dependency
  • added README

0.2.0

  • removed auto and eager loading support
  • set activesupport dependency to (~> 3.0)

0.1.3

  • fixed bug relating to full_name traversal

0.1.2

  • fixed nokogiri dependency to ~>1.5.9 for ruby 1.8.7 support
  • reinstated multiple autoload paths support

0.1.1

  • collapsed eagerload and autoload paths into a single path
  • reinstated using a root_path based on the path of where Application is subclassed.

0.1.0

  • initial release