class CUKES::RubyGems
Public Instance Methods
Description : compares the gem header name Author : Chandra sekaran Argument :
gem_name : name of the gem
# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 82 def compare_heading(gem_name) wait_for_object(h1_title_element) expected_heading = "search for #{gem_name}" actual_heading = h1_title_element.text raise "The expected heading is #{expected_heading} but actual heading is #{actual_heading}" if actual_heading != expected_heading wait_for_object(div_search_result_element, "Could not find gem result list") raise "No gems found for the given gem" if div_search_result_element.text.include?("No gems found") rescue Exception => ex $log.error("Failure while comparing Gem header for gem '#{gem_name}' : #{ex}") exit end
Description : searches for the specific gem and selects it Author : Chandra sekaran
# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 97 def fetch_desired_gem gem_object = "" gem_name = "" max = 0 div_search_result_element.link_elements(:xpath => "./a").each do |parent| current = parent.paragraph_element(:xpath => "./p").text current = current.gsub!(',','').to_i if current.include?(',') if max < current.to_i max = current.to_i gem_object = parent.strong_element(:xpath => "./div/h2") end end gem_name = gem_object.text gem_object.click gem_name rescue Exception => ex $log.error("Failure while getting desired gem : #{ex}") exit end
Description : fetches the gem details Author : Chandra sekaran Argument :
gem : name of the gem
# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 122 def fetch_gem_details(gem) wait_for_object(h1_title_element) gem_name, gem_version = split_gem_and_version(gem) gem_heading = gem_name + " " + gem_version raise "The expected value is '#{gem_heading}' but the actual value is '#{h1_title_element.text}'" if h1_title_element.text != gem_heading $log.info "Gem Description" $log.info "\tGem Name : #{h1_title_element.text}" $log.info "\tGem install : #{textfield_gem_install_elements.last.value}" $log.info "\tGemfile : #{textfield_gem_install_elements.first.value}" fetch_gem_versions fetch_gem_runtime_dependencies fetch_gem_ruby_dependencies fetch_gem_development_dependencies rescue Exception => ex $log.error("Failure while fetching Gem details for gem '#{gem_name}' : #{ex}") exit end
Description : fetches the gem development dependencies Author : Chandra sekaran
# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 170 def fetch_gem_development_dependencies $log.info "Ruby Dependency" fetch_list_items(div_gem_development_dependencies_element) end
Description : fetches the gem ruby dependencies Author : Chandra sekaran
# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 162 def fetch_gem_ruby_dependencies $log.info "Ruby Dependency" fetch_list_items(div_gem_ruby_dependencies_element) end
Description : fetches the gem runtime dependencies Author : Chandra sekaran
# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 154 def fetch_gem_runtime_dependencies $log.info "Runtime Dependencies" fetch_list_items(div_gem_runtime_dependencies_element) end
Description : fetches the gem version Author : Chandra sekaran
# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 146 def fetch_gem_versions $log.info "Versions" fetch_list_items(div_gem_version_element) end
Description : fetches the text under list of elements Author : Chandra sekaran Argument :
parent_element : parent element object
# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 180 def fetch_list_items(parent_element) if parent_element.exists? && parent_element.visible? list_elements = "" if parent_element.div_element(:xpath => "./div[@class='t-list__items']").exists? list_elements = parent_element.link_elements(:xpath => "./div[@class='t-list__items']/a") elsif parent_element.ordered_list_element(:xpath => "./ol").exists? list_elements = parent_element.list_item_elements(:xpath => "./ol/li") end list_elements.each do |list| $log.info "\t #{list.text}" end else $log.info "\t No data found" end rescue Exception => ex $log.error("Failure while fetching gem list items : #{ex}") exit end
Description : invoked automatically when the page class object is created Author : Chandra sekaran
# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 19 def initialize_page wait_for_page_load end
Description : searches for the given input gem name Author : Chandra sekaran Arguments :
gem_name : name of the gem str_data_node : test data root node name
# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 59 def search_for_gem(gem_name = "", str_data_node = "gems") if gem_name == "" # the set_scenario_based_datafile method sets the test data content from the given input file name # present in library/app_specific/datafile_names.rb # the yml file can be : # * a local data file - inside the current feature name directory # * a global data file - inside desktop directory hash_gem_name = set_scenario_based_datafile(GEM_NAME) gem_name = hash_gem_name[str_data_node]["gem_name"] end wait_for_object(input_search_element, "Could not find search textbox") self.input_search = gem_name input_search_element.send_keys(:enter) rescue Exception => ex $log.error("Failure while searching for gem '#{gem_name}' : #{ex}") exit end
Description : sign into the application Author : Chandra sekaran
# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 26 def sign_in click_on(link_signin_element) wait_for_object(textfield_email_element, "Could not find textfield Email") self.textfield_email = USER_NAME # "profchan2k15@gmail.com" self.textfield_password = PASSWORD # "chan123@1" click_on(button_sign_in_element) wait_for_page_load #raise "Error in sign in" if !is_text_present(self, "CHAN90", 120) $log.success("Sign in successful") rescue Exception => ex $log.error("Failure while signing in : #{ex}") exit end
Description : sign out from the application Author : Chandra sekaran
# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 43 def sign_out click_on(link_menu_element) click_on(link_signout_element) #raise "Error in sign out" if !is_text_present(self, "Sign in", 120) $log.success("Sign out successful") rescue Exception => ex $log.error("Failure while signing out : #{ex}") exit end
Description : splits gem name and its version from given input string Author : Chandra sekaran Argument :
gem : gem name string with version
Return Arguments :
gem_name : gem name gem_version : gem version
# File lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb, line 207 def split_gem_and_version(gem) gem_name = gem.split(" ").first gem_version = gem.split(" ").last return gem_name, gem_version end