From 3f7ea940096d34484f1cb42fe0eb86a97aecb117 Mon Sep 17 00:00:00 2001 From: Kazuaki MATSUO Date: Mon, 25 Dec 2017 10:18:17 +0900 Subject: [PATCH 1/5] add some methods for w3c --- lib/appium_lib_core/common/base/w3c_bridge.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/appium_lib_core/common/base/w3c_bridge.rb b/lib/appium_lib_core/common/base/w3c_bridge.rb index 1d3d864d..1d5cc080 100644 --- a/lib/appium_lib_core/common/base/w3c_bridge.rb +++ b/lib/appium_lib_core/common/base/w3c_bridge.rb @@ -31,6 +31,22 @@ def action(async = false) end alias actions action + # override + def page_source + # For W3C + # execute_script('var source = document.documentElement.outerHTML;' \ + # 'if (!source) { source = new XMLSerializer().serializeToString(document); }' \ + # 'return source;') + execute :get_page_source + end + + # override + def element_attribute(element, name) + # For W3C + # execute_atom :getAttribute, element, name + execute :get_element_attribute, id: element.ref, name: name + end + # override def find_element_by(how, what, parent = nil) how, what = convert_locators(how, what) From 1860291d79ccb1cd90f1ddfae27fa21b29fca8e8 Mon Sep 17 00:00:00 2001 From: Kazuaki MATSUO Date: Mon, 25 Dec 2017 10:47:59 +0900 Subject: [PATCH 2/5] fix source temporary --- lib/appium_lib_core/common/command.rb | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/appium_lib_core/common/command.rb b/lib/appium_lib_core/common/command.rb index 446742ae..fe5fb439 100644 --- a/lib/appium_lib_core/common/command.rb +++ b/lib/appium_lib_core/common/command.rb @@ -72,19 +72,22 @@ module Commands COMMANDS = {}.merge(COMMAND).merge(COMMAND_ANDROID).merge(COMMAND_IOS) .merge(COMMAND_NO_ARG).freeze - COMMANDS_EXTEND_MJSONWP = COMMANDS.merge( + COMMANDS_EXTEND_MJSONWP = COMMANDS.merge(::Appium::Core::Base::Commands::OSS).merge( { # W3C already has. take_element_screenshot: [:get, 'session/:session_id/element/:id/screenshot'.freeze] } - ).merge(::Appium::Core::Base::Commands::OSS).freeze - COMMANDS_EXTEND_W3C = COMMANDS.merge( + ).freeze + COMMANDS_EXTEND_W3C = COMMANDS.merge(::Appium::Core::Base::Commands::W3C).merge( { # ::Appium::Core::Base::Commands::OSS has the following commands and Appium also use them. # Delegated to ::Appium::Core::Base::Commands::OSS commands status: [:get, 'status'.freeze], is_element_displayed: [:get, 'session/:session_id/element/:id/displayed'.freeze], + # FIXME: remove after apply https://github.com/SeleniumHQ/selenium/pull/5249 + get_page_source: [:get, 'session/:session_id/source'.freeze], + # For IME ime_get_available_engines: [:get, 'session/:session_id/ime/available_engines'.freeze], ime_get_active_engine: [:get, 'session/:session_id/ime/active_engine'.freeze], @@ -92,7 +95,7 @@ module Commands ime_deactivate: [:post, 'session/:session_id/ime/deactivate'.freeze], ime_activate_engine: [:post, 'session/:session_id/ime/activate'.freeze] } - ).merge(::Appium::Core::Base::Commands::W3C).freeze + ).freeze end end end From 2712e51b37a2ee03e771db5773b969bbce6184e5 Mon Sep 17 00:00:00 2001 From: Kazuaki MATSUO Date: Mon, 25 Dec 2017 21:57:14 +0900 Subject: [PATCH 3/5] updare error handling --- test/test_helper.rb | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/test/test_helper.rb b/test/test_helper.rb index ba31da84..3d16750e 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -8,8 +8,11 @@ Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new -ROOT_REPORT_PATH = "#{Dir.pwd}/test/report/".freeze +ROOT_REPORT_PATH = "#{Dir.pwd}/test/report".freeze +START_AT = Time.now.strftime("%Y-%m-%d-%H%M%S").freeze + Dir.mkdir(ROOT_REPORT_PATH) unless Dir.exist? ROOT_REPORT_PATH +FileUtils.mkdir_p("#{ROOT_REPORT_PATH}/#{START_AT}") unless FileTest.exist? ("#{ROOT_REPORT_PATH}/#{START_AT}") class AppiumLibCoreTest module Function @@ -17,9 +20,12 @@ class TestCase < Minitest::Test def save_reports(driver) return if passed? - path = "#{ROOT_REPORT_PATH}#{self.class.name.gsub('::', '_')}-#{name}-error" - File.write "#{path}.xml", driver.page_source - driver.save_screenshot "#{path}.png" + # Save failed view's screenshot and source + base_path = "#{ROOT_REPORT_PATH}/#{START_AT}/#{self.class.name.gsub('::', '_')}" + FileUtils.mkdir_p(base_path) unless FileTest.exist? base_path + + File.write "#{base_path}/#{name}-failed.xml", driver.page_source + driver.save_screenshot "#{base_path}/#{name}-failed.png" end end end From a2f613c9565a8b9500301f80c7279221e49ce947 Mon Sep 17 00:00:00 2001 From: Kazuaki MATSUO Date: Mon, 25 Dec 2017 22:00:38 +0900 Subject: [PATCH 4/5] add a comment --- lib/appium_lib_core/common/command.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/appium_lib_core/common/command.rb b/lib/appium_lib_core/common/command.rb index fe5fb439..6d4e2f5c 100644 --- a/lib/appium_lib_core/common/command.rb +++ b/lib/appium_lib_core/common/command.rb @@ -86,6 +86,7 @@ module Commands is_element_displayed: [:get, 'session/:session_id/element/:id/displayed'.freeze], # FIXME: remove after apply https://github.com/SeleniumHQ/selenium/pull/5249 + # The fix will be included in selenium-3.8.2 get_page_source: [:get, 'session/:session_id/source'.freeze], # For IME From 571cf6b4eeffd793e2a18d7f1a7d25e77e6fbabb Mon Sep 17 00:00:00 2001 From: Kazuaki MATSUO Date: Mon, 25 Dec 2017 22:08:00 +0900 Subject: [PATCH 5/5] fix rubocop --- test/test_helper.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/test_helper.rb b/test/test_helper.rb index 3d16750e..42f393e4 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -9,10 +9,10 @@ Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new ROOT_REPORT_PATH = "#{Dir.pwd}/test/report".freeze -START_AT = Time.now.strftime("%Y-%m-%d-%H%M%S").freeze +START_AT = Time.now.strftime('%Y-%m-%d-%H%M%S').freeze Dir.mkdir(ROOT_REPORT_PATH) unless Dir.exist? ROOT_REPORT_PATH -FileUtils.mkdir_p("#{ROOT_REPORT_PATH}/#{START_AT}") unless FileTest.exist? ("#{ROOT_REPORT_PATH}/#{START_AT}") +FileUtils.mkdir_p("#{ROOT_REPORT_PATH}/#{START_AT}") unless FileTest.exist? "#{ROOT_REPORT_PATH}/#{START_AT}" class AppiumLibCoreTest module Function