From 56e3981df5a002e0074350c3ec50e7ddbc4d072d Mon Sep 17 00:00:00 2001 From: Donnie Tognazzini Date: Tue, 7 Jun 2016 00:31:26 -0700 Subject: [PATCH 1/2] Adding wait: option to all polling query methods. --- lib/ae_page_objects/element_proxy.rb | 16 ++++++++-------- .../selenium/page_object_integration_test.rb | 10 ++++------ test/unit/element_proxy_test.rb | 17 +++++++++++++---- 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/lib/ae_page_objects/element_proxy.rb b/lib/ae_page_objects/element_proxy.rb index 0c971a4b..c6094eb1 100644 --- a/lib/ae_page_objects/element_proxy.rb +++ b/lib/ae_page_objects/element_proxy.rb @@ -19,29 +19,29 @@ def initialize(element_class, *args) @loaded_element = nil end - def visible? - wait_until_visible + def visible?(options = {}) + wait_until_visible(options[:wait]) true rescue ElementNotVisible false end - def hidden? - wait_until_hidden + def hidden?(options = {}) + wait_until_hidden(options[:wait]) true rescue ElementNotHidden false end - def present? - wait_until_present + def present?(options = {}) + wait_until_present(options[:wait]) true rescue ElementNotPresent false end - def absent? - wait_until_absent + def absent?(options = {}) + wait_until_absent(options[:wait]) true rescue ElementNotAbsent false diff --git a/test/test_apps/shared/test/selenium/page_object_integration_test.rb b/test/test_apps/shared/test/selenium/page_object_integration_test.rb index 13def359..63dc201b 100644 --- a/test/test_apps/shared/test/selenium/page_object_integration_test.rb +++ b/test/test_apps/shared/test/selenium/page_object_integration_test.rb @@ -174,12 +174,10 @@ def test_multiple_paths_visit def test_element_proxy author = PageObjects::Authors::NewPage.visit - Capybara.using_wait_time(1) do - assert author.rating.star.present? - assert author.rating.star.visible? - refute author.rating.star.absent? - refute author.rating.star.hidden? - end + assert author.rating.star.present?(wait: 1) + assert author.rating.star.visible?(wait: 1) + refute author.rating.star.absent?(wait: 1) + refute author.rating.star.hidden?(wait: 1) assert_nothing_raised do author.rating.star.wait_until_present(0) diff --git a/test/unit/element_proxy_test.rb b/test/unit/element_proxy_test.rb index 8937f14a..90e7deae 100644 --- a/test/unit/element_proxy_test.rb +++ b/test/unit/element_proxy_test.rb @@ -41,10 +41,10 @@ def test_visible element_class.expect_new element_class.any_instance.expects(:visible?).returns(true) assert proxy.visible? - end - def test_visible__false - proxy = new_proxy + element_class.expect_new + element_class.any_instance.expects(:visible?).returns(true) + assert proxy.visible?(wait: 20) element_class.expect_new element_class.any_instance.expects(:visible?).returns(false) @@ -65,6 +65,10 @@ def test_hidden element_class.any_instance.expects(:visible?).returns(false) assert proxy.hidden? + element_class.expect_new + element_class.any_instance.expects(:visible?).returns(false) + assert proxy.hidden?(wait: 20) + element_class.expect_new element_class.any_instance.expects(:visible?).returns(true) assert ! proxy.hidden? @@ -82,6 +86,9 @@ def test_present element_class.expect_new assert proxy.present? + + element_class.expect_new + assert proxy.present?(wait: 20) end def test_present__element_not_found @@ -95,7 +102,6 @@ def test_absent proxy = new_proxy element_class.expect_new - refute proxy.absent? end @@ -104,6 +110,9 @@ def test_absent__element_not_found element_class.expects(:new).raises(AePageObjects::LoadingElementFailed) assert proxy.absent? + + element_class.expects(:new).raises(AePageObjects::LoadingElementFailed) + assert proxy.absent?(wait: 20) end def test_presence From 806a55ce554e7931417f2025c9547b9dbc964d80 Mon Sep 17 00:00:00 2001 From: Donnie Tognazzini Date: Tue, 7 Jun 2016 00:35:30 -0700 Subject: [PATCH 2/2] Updated changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b6a0702..99531c2d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ## Version 2.0.0 +### Added + +* [111](https://github.com/appfolio/ae_page_objects/issues/111) Adding wait: option to all polling query methods. + ### Changed * [176](https://github.com/appfolio/ae_page_objects/pull/176) Limit exposed constants to _public_ API.