qa_robusta 0.1.5 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +6 -1
- data/Manifest.txt +2 -0
- data/common/lib/gems/.svn/entries +1 -1
- data/common/lib/gems/cache/.svn/entries +1 -1
- data/common/lib/gems/doc/.svn/entries +1 -1
- data/common/lib/gems/gems/.svn/entries +1 -1
- data/common/lib/gems/installed/.svn/entries +1 -1
- data/common/lib/gems/installed/cache/.svn/entries +1 -1
- data/common/lib/gems/installed/doc/.svn/entries +1 -1
- data/common/lib/gems/installed/gems/.svn/entries +1 -1
- data/common/lib/gems/installed/specifications/.svn/entries +1 -1
- data/common/lib/gems/specifications/.svn/entries +1 -1
- data/demo/public/style.css +4 -0
- data/demo/views/index.erb +7 -2
- data/lib/qa_robusta.rb +1 -1
- data/qa_observer/lib/watir.rb +78 -6
- data/qa_observer/sites/demo/elements/demo_elements.rb +2 -0
- data/qa_observer/sites/demo/test_cases/test_element_scroll_to.rb +69 -0
- metadata +4 -2
    
        data/History.txt
    CHANGED
    
    | @@ -1,4 +1,9 @@ | |
| 1 | 
            -
            === 0.1. | 
| 1 | 
            +
            === 0.1.6 / 2011-10-01
         | 
| 2 | 
            +
              * Element now has calls for: in_viewable_area? and scroll_to.
         | 
| 3 | 
            +
                in_viewable_area? returns true if the element is in the viewable area
         | 
| 4 | 
            +
                of the browser
         | 
| 5 | 
            +
                scroll_to scrolls to the element
         | 
| 6 | 
            +
            === 0.1.5 / 2011-10-01
         | 
| 2 7 | 
             
              * Cleanup qa_obsever/lib/watir.rb
         | 
| 3 8 | 
             
            === 0.1.4 / 2011-10-01
         | 
| 4 9 | 
             
              * Remove common/lib/gem_helpers.rb and add to localized_gems
         | 
    
        data/Manifest.txt
    CHANGED
    
    | @@ -18,6 +18,7 @@ remote_unix/lib/ssh.rb | |
| 18 18 | 
             
            remote_unix/lib/postfix_info.rb
         | 
| 19 19 | 
             
            remote_unix/lib/requires.rb
         | 
| 20 20 | 
             
            demo/public/javascripts/jquery-1.6.2.min.js
         | 
| 21 | 
            +
            demo/public/style.css
         | 
| 21 22 | 
             
            demo/demo_site.rb
         | 
| 22 23 | 
             
            demo/views/index.erb
         | 
| 23 24 | 
             
            mechanize_interface/conf/app.yaml
         | 
| @@ -30,6 +31,7 @@ mechanize_interface/test/lib/mech_unit_test.rb | |
| 30 31 | 
             
            qa_observer/script/generate
         | 
| 31 32 | 
             
            qa_observer/script/destroy
         | 
| 32 33 | 
             
            qa_observer/sites/demo/test_cases/home_page.rb
         | 
| 34 | 
            +
            qa_observer/sites/demo/test_cases/test_element_scroll_to.rb
         | 
| 33 35 | 
             
            qa_observer/sites/demo/elements/demo_elements.rb
         | 
| 34 36 | 
             
            qa_observer/sites/demo/conf/base_urls.yaml
         | 
| 35 37 | 
             
            qa_observer/sites/demo/conf/users_list.yaml
         | 
    
        data/demo/views/index.erb
    CHANGED
    
    | @@ -3,6 +3,7 @@ | |
| 3 3 | 
             
            <head> 
         | 
| 4 4 | 
             
            <title>Demo Test Page for QA Robusta</title> 
         | 
| 5 5 | 
             
            <script type="text/javascript" src="/javascripts/jquery-1.6.2.min.js"></script> 
         | 
| 6 | 
            +
            <link href="/style.css" rel="stylesheet" type="text/css" />
         | 
| 6 7 | 
             
            <script type="text/javascript"> 
         | 
| 7 8 | 
             
              $(function() {
         | 
| 8 9 | 
             
                $('input#create_file').click(function() {
         | 
| @@ -29,7 +30,11 @@ | |
| 29 30 | 
             
            <body> 
         | 
| 30 31 | 
             
              <div id='create_file_status'></div>
         | 
| 31 32 | 
             
              <input type='text' id='create_file_name'>
         | 
| 32 | 
            -
              <input type='button' id='create_file' value='Create Tmp File'>
         | 
| 33 | 
            -
             | 
| 33 | 
            +
              <input type='button' id='create_file' value='Create Tmp File'><br><br>
         | 
| 34 | 
            +
              <div id='skip_page'></div><div id='skip_page'></div><div id='skip_page'></div><div id='skip_page'></div>
         | 
| 35 | 
            +
              <a href='with_id' id='link_with_id_and_no_name'>with id and no name</a>
         | 
| 36 | 
            +
              <div id='skip_page'></div><div id='skip_page'></div><div id='skip_page'></div><div id='skip_page'></div>
         | 
| 37 | 
            +
              <a href='with_name' name='link_with_no_id_but_has_name'>with name and no id</a>
         | 
| 38 | 
            +
              <div id='skip_page'></div><div id='skip_page'></div><div id='skip_page'></div><div id='skip_page'></div>
         | 
| 34 39 | 
             
            </body> 
         | 
| 35 40 | 
             
            </html> 
         | 
    
        data/lib/qa_robusta.rb
    CHANGED
    
    
    
        data/qa_observer/lib/watir.rb
    CHANGED
    
    | @@ -1,15 +1,87 @@ | |
| 1 | 
            -
            module  | 
| 1 | 
            +
            module WatirExtention
         | 
| 2 2 | 
             
              def self.included(klass)
         | 
| 3 | 
            +
                image_wrap(klass)
         | 
| 4 | 
            +
                add_scroll_to(klass)
         | 
| 5 | 
            +
                add_in_viewable_area?(klass)
         | 
| 6 | 
            +
              end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              def self.image_wrap(klass)
         | 
| 3 9 | 
             
                method = 'click'
         | 
| 4 | 
            -
                klass.class_eval  | 
| 10 | 
            +
                klass.class_eval {
         | 
| 5 11 | 
             
                  original_method = instance_method(method)
         | 
| 6 | 
            -
                  define_method(method)  | 
| 12 | 
            +
                  define_method(method) { |*args, &block|
         | 
| 7 13 | 
             
                    TestExtention.screen_shot($current_test_method, 'pre')
         | 
| 8 14 | 
             
                    result = original_method.bind(self).call(*args, &block)
         | 
| 9 15 | 
             
                    TestExtention.screen_shot($current_test_method, 'post')
         | 
| 10 16 | 
             
                    result
         | 
| 11 | 
            -
                   | 
| 12 | 
            -
                 | 
| 17 | 
            +
                  }
         | 
| 18 | 
            +
                }
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              def self.add_in_viewable_area?(klass)
         | 
| 22 | 
            +
                klass.class_eval {
         | 
| 23 | 
            +
                  define_method('in_viewable_area?') { |*args, &block|
         | 
| 24 | 
            +
                    if exists?
         | 
| 25 | 
            +
                      element_location = wd.location
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                      # JS borrowed from
         | 
| 28 | 
            +
                      # http://www.geekdaily.net/2007/07/04/javascript-cross-browser-window-size-and-centering/
         | 
| 29 | 
            +
                      script=<<-EOF
         | 
| 30 | 
            +
            	    var w = 0;
         | 
| 31 | 
            +
            	    var h = 0;
         | 
| 32 | 
            +
            	    if(!window.innerWidth) {
         | 
| 33 | 
            +
                          w = window.pageXOffset;h = window.pageYOffset; 
         | 
| 34 | 
            +
            /*
         | 
| 35 | 
            +
                          if(!(document.documentElement.clientWidth == 0)) { 
         | 
| 36 | 
            +
                            w = document.documentElement.clientWidth + document.body.scrollLeft; 
         | 
| 37 | 
            +
                            h = document.documentElement.clientHeight + document.body.scrollTop; 
         | 
| 38 | 
            +
                            //w = document.documentElement.clientWidth + document.body.scrollLeft; 
         | 
| 39 | 
            +
                            //h = document.documentElement.clientHeight + document.body.scrollTop; 
         | 
| 40 | 
            +
                          } else { 
         | 
| 41 | 
            +
                           w = window.pageXOffset; 
         | 
| 42 | 
            +
                           h = window.pageYOffset; 
         | 
| 43 | 
            +
                          // w = document.body.clientWidth + window.pageXOffset; 
         | 
| 44 | 
            +
                          // h = document.body.clientHeight + window.pageYOffset; 
         | 
| 45 | 
            +
                          }
         | 
| 46 | 
            +
            */
         | 
| 47 | 
            +
                        } else { w = window.pageXOffset; h = window.pageYOffset; }
         | 
| 48 | 
            +
                        return {x: h, y: w}
         | 
| 49 | 
            +
                      EOF
         | 
| 50 | 
            +
                      d = driver.execute_script(script) 
         | 
| 51 | 
            +
                      element_location.x >= d['y'] && element_location.y <= d['x']
         | 
| 52 | 
            +
                    else
         | 
| 53 | 
            +
                      return false
         | 
| 54 | 
            +
                    end
         | 
| 55 | 
            +
                  }
         | 
| 56 | 
            +
                }
         | 
| 57 | 
            +
              end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
              def self.add_scroll_to(klass)
         | 
| 60 | 
            +
                klass.class_eval {
         | 
| 61 | 
            +
                  define_method('scroll_to') { |*args, &block|
         | 
| 62 | 
            +
                    
         | 
| 63 | 
            +
                    if self.id == '' && self.name != ''
         | 
| 64 | 
            +
                      element = "element = document.getElementsByName(\"#{self.name}\")[0];"
         | 
| 65 | 
            +
                    elsif self.id != '' && self.name == ''
         | 
| 66 | 
            +
                      element = "element = document.getElementById(\"#{self.id}\");"
         | 
| 67 | 
            +
                    end
         | 
| 68 | 
            +
                  
         | 
| 69 | 
            +
                    if element
         | 
| 70 | 
            +
                      # javascript borrowed from: 
         | 
| 71 | 
            +
                      # http://radio.javaranch.com/pascarello/2005/01/09/1105293729000.html
         | 
| 72 | 
            +
                      script=<<-EOF
         | 
| 73 | 
            +
                        function ScrollToElementByID(id){
         | 
| 74 | 
            +
                          #{element} var selectedPosX = 0; var selectedPosY = 0;
         | 
| 75 | 
            +
                          while(element != null) { selectedPosX += element.offsetLeft; selectedPosY += element.offsetTop; element = element.offsetParent; }
         | 
| 76 | 
            +
                          window.scrollTo(selectedPosX,selectedPosY);
         | 
| 77 | 
            +
                        }
         | 
| 78 | 
            +
                        ScrollToElementByID("#{self.id}");
         | 
| 79 | 
            +
                      EOF
         | 
| 80 | 
            +
                      driver.execute_script(script) 
         | 
| 81 | 
            +
                    end
         | 
| 82 | 
            +
                  }
         | 
| 83 | 
            +
                }
         | 
| 84 | 
            +
                
         | 
| 13 85 | 
             
              end
         | 
| 14 86 | 
             
            end
         | 
| 15 87 |  | 
| @@ -27,7 +99,7 @@ module Watir | |
| 27 99 | 
             
                end
         | 
| 28 100 | 
             
              end
         | 
| 29 101 | 
             
              class Element
         | 
| 30 | 
            -
                include  | 
| 102 | 
            +
                include WatirExtention
         | 
| 31 103 | 
             
              end
         | 
| 32 104 | 
             
            end
         | 
| 33 105 |  | 
| @@ -4,6 +4,8 @@ module Demo | |
| 4 4 | 
             
                  element(:file_status) {$browser.div(:id, 'create_file_status')}
         | 
| 5 5 | 
             
                  element(:create_file_text_field) {$browser.text_field(:id, 'create_file_name')}
         | 
| 6 6 | 
             
                  element(:submit_create_file) {$browser.button(:id, 'create_file')}
         | 
| 7 | 
            +
                  element(:link_with_id) {$browser.link(:id, 'link_with_id_and_no_name')}
         | 
| 8 | 
            +
                  element(:link_with_name) {$browser.link(:name, 'link_with_no_id_but_has_name')}
         | 
| 7 9 | 
             
                end 
         | 
| 8 10 | 
             
              end
         | 
| 9 11 | 
             
            end
         | 
| @@ -0,0 +1,69 @@ | |
| 1 | 
            +
            base = File.expand_path(File.dirname(__FILE__))
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            # If the user is executing the test case stand alone
         | 
| 4 | 
            +
            # without an agent we need to set a reference to
         | 
| 5 | 
            +
            # for where to find the qa_observer_client as well as let
         | 
| 6 | 
            +
            # the qa_observer_client know where the test case directory is
         | 
| 7 | 
            +
            #  URGENT: DO NOT MODIFY
         | 
| 8 | 
            +
            unless $qa_observer_client
         | 
| 9 | 
            +
              TEST_CASE_DIR = "#{base}"
         | 
| 10 | 
            +
              $qa_observer_client = File.expand_path("#{base}/../../..")
         | 
| 11 | 
            +
            end
         | 
| 12 | 
            +
            # END OF DO NOT MODIFY
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            require "#{$qa_observer_client}/lib/system_test"
         | 
| 15 | 
            +
            require "#{$qa_observer_client}/lib/env_details.rb"
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            class TestElementScrollTo < SystemTest
         | 
| 18 | 
            +
              def setup
         | 
| 19 | 
            +
                # if the user hasn't provided the environment as an input
         | 
| 20 | 
            +
                # parameter to the interpreter default to :test
         | 
| 21 | 
            +
                $test_environment ||= :test
         | 
| 22 | 
            +
                super
         | 
| 23 | 
            +
                @demo_flows = DemoFlows.new 
         | 
| 24 | 
            +
                @demo_flows.home
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              def teardown
         | 
| 28 | 
            +
                # NOTE: Place all items you wish to do at after each test method
         | 
| 29 | 
            +
                # in the unless @skip section before the $browser.close.  DO NOT
         | 
| 30 | 
            +
                # remove this section as it's critical if the test class is executed
         | 
| 31 | 
            +
                # by an agent. 
         | 
| 32 | 
            +
                unless @skip
         | 
| 33 | 
            +
                  $browser.close if $browser
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                super
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
              
         | 
| 39 | 
            +
            =begin rdoc
         | 
| 40 | 
            +
               Test Purpose: Ensure QA Robusta provides a means to scroll to an element
         | 
| 41 | 
            +
             | 
| 42 | 
            +
               Steps:
         | 
| 43 | 
            +
               1.  Verify that an element accessed by a name tag is not in the viewable area within the browser
         | 
| 44 | 
            +
               2.  Scroll to the element from step 1
         | 
| 45 | 
            +
               3.  Verify that the element is now in the viewable area of the browser 
         | 
| 46 | 
            +
            =end
         | 
| 47 | 
            +
              def test_scroll_to_element_with_no_id_but_with_name
         | 
| 48 | 
            +
                 assert !@demo_flows.home_page.link_with_name.in_viewable_area?
         | 
| 49 | 
            +
                 @demo_flows.home_page.link_with_name.scroll_to
         | 
| 50 | 
            +
                 assert @demo_flows.home_page.link_with_name.in_viewable_area?
         | 
| 51 | 
            +
                 TestExtention.screen_shot($current_test_method, 'pre')
         | 
| 52 | 
            +
              end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            =begin rdoc
         | 
| 55 | 
            +
               Test Purpose: Ensure QA Robusta provides a means to scroll to an element
         | 
| 56 | 
            +
             | 
| 57 | 
            +
               Steps:
         | 
| 58 | 
            +
               1.  Verify that an element accessed by an id tag is not in the viewable area within the browser
         | 
| 59 | 
            +
               2.  Scroll to the element from step 1
         | 
| 60 | 
            +
               3.  Verify that the element is now in the viewable area of the browser 
         | 
| 61 | 
            +
            =end
         | 
| 62 | 
            +
              def test_scroll_to_element_with_id_but_no_name
         | 
| 63 | 
            +
                 assert !@demo_flows.home_page.link_with_id.in_viewable_area?
         | 
| 64 | 
            +
                 @demo_flows.home_page.link_with_id.scroll_to
         | 
| 65 | 
            +
                 assert @demo_flows.home_page.link_with_id.in_viewable_area?
         | 
| 66 | 
            +
                 TestExtention.screen_shot($current_test_method, 'pre')
         | 
| 67 | 
            +
              end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -2,7 +2,7 @@ | |
| 2 2 | 
             
            name: qa_robusta
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 4 | 
             
              prerelease: 
         | 
| 5 | 
            -
              version: 0.1. | 
| 5 | 
            +
              version: 0.1.8
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors: 
         | 
| 8 8 | 
             
            - Cliff Cyphers
         | 
| @@ -10,7 +10,7 @@ autorequire: | |
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 12 |  | 
| 13 | 
            -
            date: 2011-10- | 
| 13 | 
            +
            date: 2011-10-06 00:00:00 Z
         | 
| 14 14 | 
             
            dependencies: 
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 16 16 | 
             
              name: platform_helpers
         | 
| @@ -115,6 +115,7 @@ files: | |
| 115 115 | 
             
            - remote_unix/lib/postfix_info.rb
         | 
| 116 116 | 
             
            - remote_unix/lib/requires.rb
         | 
| 117 117 | 
             
            - demo/public/javascripts/jquery-1.6.2.min.js
         | 
| 118 | 
            +
            - demo/public/style.css
         | 
| 118 119 | 
             
            - demo/demo_site.rb
         | 
| 119 120 | 
             
            - demo/views/index.erb
         | 
| 120 121 | 
             
            - mechanize_interface/conf/app.yaml
         | 
| @@ -127,6 +128,7 @@ files: | |
| 127 128 | 
             
            - qa_observer/script/generate
         | 
| 128 129 | 
             
            - qa_observer/script/destroy
         | 
| 129 130 | 
             
            - qa_observer/sites/demo/test_cases/home_page.rb
         | 
| 131 | 
            +
            - qa_observer/sites/demo/test_cases/test_element_scroll_to.rb
         | 
| 130 132 | 
             
            - qa_observer/sites/demo/elements/demo_elements.rb
         | 
| 131 133 | 
             
            - qa_observer/sites/demo/conf/base_urls.yaml
         | 
| 132 134 | 
             
            - qa_observer/sites/demo/conf/users_list.yaml
         |