hyper-spec 0.1.1 → 0.1.2
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.
- checksums.yaml +4 -4
 - data/.gitignore +7 -0
 - data/.rubocop.yml +107 -0
 - data/Gemfile.lock +31 -20
 - data/README.md +5 -0
 - data/hyper-spec.gemspec +49 -45
 - data/lib/hyper-spec.rb +54 -252
 - data/lib/hyper-spec/component_test_helpers.rb +306 -0
 - data/lib/hyper-spec/lolex.rb +66 -0
 - data/lib/hyper-spec/{engine.rb → rails/engine.rb} +1 -0
 - data/lib/hyper-spec/time_cop.rb +30 -99
 - data/lib/hyper-spec/version.rb +1 -1
 - data/lib/hyper-spec/wait_for_ajax.rb +30 -0
 - data/lib/react/isomorphic_helpers.rb +7 -0
 - data/lib/react/top_level_rails_component.rb +104 -0
 - data/lib/selenium/web_driver/firefox/profile.rb +55 -0
 - data/vendor/assets/javascripts/time_cop.rb +7 -10
 - metadata +97 -75
 - data/play.rb +0 -0
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: a644db6a221bc30f343b05e079c705269a90871d
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: f6c9c28bbb47e6e39c5f7f3b88304da9df0ac8b8
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: de46555fb469983fba0b02f24fdd2439826f4dbca419b1e2fe53281fa62ed9512a077ec579900c0638ac1d85ac7d5f4ce130e8168c1b14343cc06775ae4c0872
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: ac2b3168d21fa3993e0af01f25fc5fe4129532a8f77cf4ff167092355d17be25d0a587286c9188bebee650a3e785c718bf1e39bc943c9227dcdb1503381956f0
         
     | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/.rubocop.yml
    ADDED
    
    | 
         @@ -0,0 +1,107 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Style/BlockDelimiters:
         
     | 
| 
      
 2 
     | 
    
         
            +
              EnforcedStyle: line_count_based
         
     | 
| 
      
 3 
     | 
    
         
            +
              SupportedStyles:
         
     | 
| 
      
 4 
     | 
    
         
            +
                # The `line_count_based` style enforces braces around single line blocks and
         
     | 
| 
      
 5 
     | 
    
         
            +
                # do..end around multi-line blocks.
         
     | 
| 
      
 6 
     | 
    
         
            +
                - line_count_based
         
     | 
| 
      
 7 
     | 
    
         
            +
                # The `semantic` style enforces braces around functional blocks, where the
         
     | 
| 
      
 8 
     | 
    
         
            +
                # primary purpose of the block is to return a value and do..end for
         
     | 
| 
      
 9 
     | 
    
         
            +
                # procedural blocks, where the primary purpose of the block is its
         
     | 
| 
      
 10 
     | 
    
         
            +
                # side-effects.
         
     | 
| 
      
 11 
     | 
    
         
            +
                #
         
     | 
| 
      
 12 
     | 
    
         
            +
                # This looks at the usage of a block's method to determine its type (e.g. is
         
     | 
| 
      
 13 
     | 
    
         
            +
                # the result of a `map` assigned to a variable or passed to another
         
     | 
| 
      
 14 
     | 
    
         
            +
                # method) but exceptions are permitted in the `ProceduralMethods`,
         
     | 
| 
      
 15 
     | 
    
         
            +
                # `FunctionalMethods` and `IgnoredMethods` sections below.
         
     | 
| 
      
 16 
     | 
    
         
            +
                - semantic
         
     | 
| 
      
 17 
     | 
    
         
            +
                # The `braces_for_chaining` style enforces braces around single line blocks
         
     | 
| 
      
 18 
     | 
    
         
            +
                # and do..end around multi-line blocks, except for multi-line blocks whose
         
     | 
| 
      
 19 
     | 
    
         
            +
                # return value is being chained with another method (in which case braces
         
     | 
| 
      
 20 
     | 
    
         
            +
                # are enforced).
         
     | 
| 
      
 21 
     | 
    
         
            +
                - braces_for_chaining
         
     | 
| 
      
 22 
     | 
    
         
            +
              ProceduralMethods:
         
     | 
| 
      
 23 
     | 
    
         
            +
                # Methods that are known to be procedural in nature but look functional from
         
     | 
| 
      
 24 
     | 
    
         
            +
                # their usage, e.g.
         
     | 
| 
      
 25 
     | 
    
         
            +
                #
         
     | 
| 
      
 26 
     | 
    
         
            +
                #   time = Benchmark.realtime do
         
     | 
| 
      
 27 
     | 
    
         
            +
                #     foo.bar
         
     | 
| 
      
 28 
     | 
    
         
            +
                #   end
         
     | 
| 
      
 29 
     | 
    
         
            +
                #
         
     | 
| 
      
 30 
     | 
    
         
            +
                # Here, the return value of the block is discarded but the return value of
         
     | 
| 
      
 31 
     | 
    
         
            +
                # `Benchmark.realtime` is used.
         
     | 
| 
      
 32 
     | 
    
         
            +
                - benchmark
         
     | 
| 
      
 33 
     | 
    
         
            +
                - bm
         
     | 
| 
      
 34 
     | 
    
         
            +
                - bmbm
         
     | 
| 
      
 35 
     | 
    
         
            +
                - create
         
     | 
| 
      
 36 
     | 
    
         
            +
                - each_with_object
         
     | 
| 
      
 37 
     | 
    
         
            +
                - measure
         
     | 
| 
      
 38 
     | 
    
         
            +
                - new
         
     | 
| 
      
 39 
     | 
    
         
            +
                - realtime
         
     | 
| 
      
 40 
     | 
    
         
            +
                - tap
         
     | 
| 
      
 41 
     | 
    
         
            +
                - with_object
         
     | 
| 
      
 42 
     | 
    
         
            +
              FunctionalMethods:
         
     | 
| 
      
 43 
     | 
    
         
            +
                # Methods that are known to be functional in nature but look procedural from
         
     | 
| 
      
 44 
     | 
    
         
            +
                # their usage, e.g.
         
     | 
| 
      
 45 
     | 
    
         
            +
                #
         
     | 
| 
      
 46 
     | 
    
         
            +
                #   let(:foo) { Foo.new }
         
     | 
| 
      
 47 
     | 
    
         
            +
                #
         
     | 
| 
      
 48 
     | 
    
         
            +
                # Here, the return value of `Foo.new` is used to define a `foo` helper but
         
     | 
| 
      
 49 
     | 
    
         
            +
                # doesn't appear to be used from the return value of `let`.
         
     | 
| 
      
 50 
     | 
    
         
            +
                - let
         
     | 
| 
      
 51 
     | 
    
         
            +
                - let!
         
     | 
| 
      
 52 
     | 
    
         
            +
                - subject
         
     | 
| 
      
 53 
     | 
    
         
            +
                - watch
         
     | 
| 
      
 54 
     | 
    
         
            +
              IgnoredMethods:
         
     | 
| 
      
 55 
     | 
    
         
            +
                # Methods that can be either procedural or functional and cannot be
         
     | 
| 
      
 56 
     | 
    
         
            +
                # categorised from their usage alone, e.g.
         
     | 
| 
      
 57 
     | 
    
         
            +
                #
         
     | 
| 
      
 58 
     | 
    
         
            +
                #   foo = lambda do |x|
         
     | 
| 
      
 59 
     | 
    
         
            +
                #     puts "Hello, #{x}"
         
     | 
| 
      
 60 
     | 
    
         
            +
                #   end
         
     | 
| 
      
 61 
     | 
    
         
            +
                #
         
     | 
| 
      
 62 
     | 
    
         
            +
                #   foo = lambda do |x|
         
     | 
| 
      
 63 
     | 
    
         
            +
                #     x * 100
         
     | 
| 
      
 64 
     | 
    
         
            +
                #   end
         
     | 
| 
      
 65 
     | 
    
         
            +
                #
         
     | 
| 
      
 66 
     | 
    
         
            +
                # Here, it is impossible to tell from the return value of `lambda` whether
         
     | 
| 
      
 67 
     | 
    
         
            +
                # the inner block's return value is significant.
         
     | 
| 
      
 68 
     | 
    
         
            +
                - lambda
         
     | 
| 
      
 69 
     | 
    
         
            +
                - proc
         
     | 
| 
      
 70 
     | 
    
         
            +
                - it
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
            Style/Documentation:
         
     | 
| 
      
 73 
     | 
    
         
            +
              Description: 'Document classes and non-namespace modules.'
         
     | 
| 
      
 74 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 75 
     | 
    
         
            +
              Exclude:
         
     | 
| 
      
 76 
     | 
    
         
            +
                - 'spec/**/*'
         
     | 
| 
      
 77 
     | 
    
         
            +
                - 'test/**/*'
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
            # Multi-line method chaining should be done with trailing dots.
         
     | 
| 
      
 80 
     | 
    
         
            +
            Style/DotPosition:
         
     | 
| 
      
 81 
     | 
    
         
            +
              EnforcedStyle: leading
         
     | 
| 
      
 82 
     | 
    
         
            +
              SupportedStyles:
         
     | 
| 
      
 83 
     | 
    
         
            +
                - leading
         
     | 
| 
      
 84 
     | 
    
         
            +
                - trailing
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
            Style/FrozenStringLiteralComment:
         
     | 
| 
      
 87 
     | 
    
         
            +
              Description: >-
         
     | 
| 
      
 88 
     | 
    
         
            +
                             Add the frozen_string_literal comment to the top of files
         
     | 
| 
      
 89 
     | 
    
         
            +
                             to help transition from Ruby 2.3.0 to Ruby 3.0.
         
     | 
| 
      
 90 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
            Style/MultilineBlockChain:
         
     | 
| 
      
 93 
     | 
    
         
            +
              Description: 'Avoid multi-line chains of blocks.'
         
     | 
| 
      
 94 
     | 
    
         
            +
              StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#single-line-blocks'
         
     | 
| 
      
 95 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
            Style/MutableConstant:
         
     | 
| 
      
 98 
     | 
    
         
            +
              Description: 'Do not assign mutable objects to constants.'
         
     | 
| 
      
 99 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
            Metrics/AbcSize:
         
     | 
| 
      
 102 
     | 
    
         
            +
              # The ABC size is a calculated magnitude, so this number can be a Fixnum or
         
     | 
| 
      
 103 
     | 
    
         
            +
              # a Float.
         
     | 
| 
      
 104 
     | 
    
         
            +
              Max: 20
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
            Metrics/LineLength:
         
     | 
| 
      
 107 
     | 
    
         
            +
              Max: 100
         
     | 
    
        data/Gemfile.lock
    CHANGED
    
    | 
         @@ -1,9 +1,16 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            PATH
         
     | 
| 
       2 
2 
     | 
    
         
             
              remote: .
         
     | 
| 
       3 
3 
     | 
    
         
             
              specs:
         
     | 
| 
       4 
     | 
    
         
            -
                hyper-spec (0.1. 
     | 
| 
       5 
     | 
    
         
            -
                   
     | 
| 
       6 
     | 
    
         
            -
                   
     | 
| 
      
 4 
     | 
    
         
            +
                hyper-spec (0.1.2)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  capybara
         
     | 
| 
      
 6 
     | 
    
         
            +
                  opal
         
     | 
| 
      
 7 
     | 
    
         
            +
                  parser
         
     | 
| 
      
 8 
     | 
    
         
            +
                  poltergeist
         
     | 
| 
      
 9 
     | 
    
         
            +
                  pry
         
     | 
| 
      
 10 
     | 
    
         
            +
                  rspec-rails
         
     | 
| 
      
 11 
     | 
    
         
            +
                  selenium-webdriver (= 2.53.4)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  timecop
         
     | 
| 
      
 13 
     | 
    
         
            +
                  unparser (= 0.2.5)
         
     | 
| 
       7 
14 
     | 
    
         | 
| 
       8 
15 
     | 
    
         
             
            GEM
         
     | 
| 
       9 
16 
     | 
    
         
             
              remote: https://rubygems.org/
         
     | 
| 
         @@ -60,14 +67,14 @@ GEM 
     | 
|
| 
       60 
67 
     | 
    
         
             
                  babel-source (>= 4.0, < 6)
         
     | 
| 
       61 
68 
     | 
    
         
             
                  execjs (~> 2.0)
         
     | 
| 
       62 
69 
     | 
    
         
             
                builder (3.2.3)
         
     | 
| 
       63 
     | 
    
         
            -
                capybara (2. 
     | 
| 
      
 70 
     | 
    
         
            +
                capybara (2.13.0)
         
     | 
| 
       64 
71 
     | 
    
         
             
                  addressable
         
     | 
| 
       65 
72 
     | 
    
         
             
                  mime-types (>= 1.16)
         
     | 
| 
       66 
73 
     | 
    
         
             
                  nokogiri (>= 1.3.3)
         
     | 
| 
       67 
74 
     | 
    
         
             
                  rack (>= 1.0.0)
         
     | 
| 
       68 
75 
     | 
    
         
             
                  rack-test (>= 0.5.4)
         
     | 
| 
       69 
76 
     | 
    
         
             
                  xpath (~> 2.0)
         
     | 
| 
       70 
     | 
    
         
            -
                childprocess (0.6. 
     | 
| 
      
 77 
     | 
    
         
            +
                childprocess (0.6.2)
         
     | 
| 
       71 
78 
     | 
    
         
             
                  ffi (~> 1.0, >= 1.0.11)
         
     | 
| 
       72 
79 
     | 
    
         
             
                chromedriver-helper (1.0.0)
         
     | 
| 
       73 
80 
     | 
    
         
             
                  archive-zip (~> 0.7.0)
         
     | 
| 
         @@ -84,7 +91,7 @@ GEM 
     | 
|
| 
       84 
91 
     | 
    
         
             
                equalizer (0.0.11)
         
     | 
| 
       85 
92 
     | 
    
         
             
                erubis (2.7.0)
         
     | 
| 
       86 
93 
     | 
    
         
             
                execjs (2.7.0)
         
     | 
| 
       87 
     | 
    
         
            -
                ffi (1.9. 
     | 
| 
      
 94 
     | 
    
         
            +
                ffi (1.9.18)
         
     | 
| 
       88 
95 
     | 
    
         
             
                globalid (0.3.7)
         
     | 
| 
       89 
96 
     | 
    
         
             
                  activesupport (>= 4.1.0)
         
     | 
| 
       90 
97 
     | 
    
         
             
                hike (1.2.3)
         
     | 
| 
         @@ -142,17 +149,18 @@ GEM 
     | 
|
| 
       142 
149 
     | 
    
         
             
                paggio (0.2.6)
         
     | 
| 
       143 
150 
     | 
    
         
             
                parser (2.3.3.1)
         
     | 
| 
       144 
151 
     | 
    
         
             
                  ast (~> 2.2)
         
     | 
| 
       145 
     | 
    
         
            -
                poltergeist (1. 
     | 
| 
      
 152 
     | 
    
         
            +
                poltergeist (1.14.0)
         
     | 
| 
       146 
153 
     | 
    
         
             
                  capybara (~> 2.1)
         
     | 
| 
       147 
154 
     | 
    
         
             
                  cliver (~> 0.3.1)
         
     | 
| 
       148 
155 
     | 
    
         
             
                  websocket-driver (>= 0.2.0)
         
     | 
| 
      
 156 
     | 
    
         
            +
                powerpack (0.1.1)
         
     | 
| 
       149 
157 
     | 
    
         
             
                procto (0.0.3)
         
     | 
| 
       150 
158 
     | 
    
         
             
                pry (0.10.4)
         
     | 
| 
       151 
159 
     | 
    
         
             
                  coderay (~> 1.1.0)
         
     | 
| 
       152 
160 
     | 
    
         
             
                  method_source (~> 0.8.1)
         
     | 
| 
       153 
161 
     | 
    
         
             
                  slop (~> 3.4)
         
     | 
| 
       154 
162 
     | 
    
         
             
                public_suffix (2.0.5)
         
     | 
| 
       155 
     | 
    
         
            -
                puma (3. 
     | 
| 
      
 163 
     | 
    
         
            +
                puma (3.7.0)
         
     | 
| 
       156 
164 
     | 
    
         
             
                rack (2.0.1)
         
     | 
| 
       157 
165 
     | 
    
         
             
                rack-test (0.6.3)
         
     | 
| 
       158 
166 
     | 
    
         
             
                  rack (>= 1.0)
         
     | 
| 
         @@ -179,6 +187,7 @@ GEM 
     | 
|
| 
       179 
187 
     | 
    
         
             
                  method_source
         
     | 
| 
       180 
188 
     | 
    
         
             
                  rake (>= 0.8.7)
         
     | 
| 
       181 
189 
     | 
    
         
             
                  thor (>= 0.18.1, < 2.0)
         
     | 
| 
      
 190 
     | 
    
         
            +
                rainbow (2.2.1)
         
     | 
| 
       182 
191 
     | 
    
         
             
                rake (10.5.0)
         
     | 
| 
       183 
192 
     | 
    
         
             
                react-rails (1.4.2)
         
     | 
| 
       184 
193 
     | 
    
         
             
                  babel-transpiler (>= 0.7.0)
         
     | 
| 
         @@ -192,7 +201,7 @@ GEM 
     | 
|
| 
       192 
201 
     | 
    
         
             
                  rspec-core (~> 3.5.0)
         
     | 
| 
       193 
202 
     | 
    
         
             
                  rspec-expectations (~> 3.5.0)
         
     | 
| 
       194 
203 
     | 
    
         
             
                  rspec-mocks (~> 3.5.0)
         
     | 
| 
       195 
     | 
    
         
            -
                rspec-collection_matchers (1.1. 
     | 
| 
      
 204 
     | 
    
         
            +
                rspec-collection_matchers (1.1.3)
         
     | 
| 
       196 
205 
     | 
    
         
             
                  rspec-expectations (>= 2.99.0.beta1)
         
     | 
| 
       197 
206 
     | 
    
         
             
                rspec-core (3.5.4)
         
     | 
| 
       198 
207 
     | 
    
         
             
                  rspec-support (~> 3.5.0)
         
     | 
| 
         @@ -216,7 +225,14 @@ GEM 
     | 
|
| 
       216 
225 
     | 
    
         
             
                rspec-steps (2.1.1)
         
     | 
| 
       217 
226 
     | 
    
         
             
                  rspec (>= 3.0, < 3.99)
         
     | 
| 
       218 
227 
     | 
    
         
             
                rspec-support (3.5.0)
         
     | 
| 
       219 
     | 
    
         
            -
                 
     | 
| 
      
 228 
     | 
    
         
            +
                rubocop (0.47.1)
         
     | 
| 
      
 229 
     | 
    
         
            +
                  parser (>= 2.3.3.1, < 3.0)
         
     | 
| 
      
 230 
     | 
    
         
            +
                  powerpack (~> 0.1)
         
     | 
| 
      
 231 
     | 
    
         
            +
                  rainbow (>= 1.99.1, < 3.0)
         
     | 
| 
      
 232 
     | 
    
         
            +
                  ruby-progressbar (~> 1.7)
         
     | 
| 
      
 233 
     | 
    
         
            +
                  unicode-display_width (~> 1.0, >= 1.0.1)
         
     | 
| 
      
 234 
     | 
    
         
            +
                ruby-progressbar (1.8.1)
         
     | 
| 
      
 235 
     | 
    
         
            +
                rubyzip (1.2.1)
         
     | 
| 
       220 
236 
     | 
    
         
             
                selenium-webdriver (2.53.4)
         
     | 
| 
       221 
237 
     | 
    
         
             
                  childprocess (~> 0.5)
         
     | 
| 
       222 
238 
     | 
    
         
             
                  rubyzip (~> 1.0)
         
     | 
| 
         @@ -224,7 +240,7 @@ GEM 
     | 
|
| 
       224 
240 
     | 
    
         
             
                shoulda (3.5.0)
         
     | 
| 
       225 
241 
     | 
    
         
             
                  shoulda-context (~> 1.0, >= 1.0.1)
         
     | 
| 
       226 
242 
     | 
    
         
             
                  shoulda-matchers (>= 1.4.1, < 3.0)
         
     | 
| 
       227 
     | 
    
         
            -
                shoulda-context (1.2. 
     | 
| 
      
 243 
     | 
    
         
            +
                shoulda-context (1.2.2)
         
     | 
| 
       228 
244 
     | 
    
         
             
                shoulda-matchers (2.8.0)
         
     | 
| 
       229 
245 
     | 
    
         
             
                  activesupport (>= 3.0.0)
         
     | 
| 
       230 
246 
     | 
    
         
             
                slop (3.6.0)
         
     | 
| 
         @@ -249,6 +265,7 @@ GEM 
     | 
|
| 
       249 
265 
     | 
    
         
             
                timecop (0.8.1)
         
     | 
| 
       250 
266 
     | 
    
         
             
                tzinfo (1.2.2)
         
     | 
| 
       251 
267 
     | 
    
         
             
                  thread_safe (~> 0.1)
         
     | 
| 
      
 268 
     | 
    
         
            +
                unicode-display_width (1.1.3)
         
     | 
| 
       252 
269 
     | 
    
         
             
                unparser (0.2.5)
         
     | 
| 
       253 
270 
     | 
    
         
             
                  abstract_type (~> 0.0.7)
         
     | 
| 
       254 
271 
     | 
    
         
             
                  adamantium (~> 0.2.0)
         
     | 
| 
         @@ -269,32 +286,26 @@ PLATFORMS 
     | 
|
| 
       269 
286 
     | 
    
         | 
| 
       270 
287 
     | 
    
         
             
            DEPENDENCIES
         
     | 
| 
       271 
288 
     | 
    
         
             
              bundler (~> 1.12)
         
     | 
| 
       272 
     | 
    
         
            -
              capybara
         
     | 
| 
       273 
289 
     | 
    
         
             
              chromedriver-helper
         
     | 
| 
      
 290 
     | 
    
         
            +
              hyper-react (>= 0.10.0)
         
     | 
| 
       274 
291 
     | 
    
         
             
              hyper-spec!
         
     | 
| 
       275 
292 
     | 
    
         
             
              method_source
         
     | 
| 
       276 
293 
     | 
    
         
             
              opal-browser
         
     | 
| 
       277 
294 
     | 
    
         
             
              opal-rails
         
     | 
| 
       278 
     | 
    
         
            -
              parser
         
     | 
| 
       279 
     | 
    
         
            -
              poltergeist
         
     | 
| 
       280 
     | 
    
         
            -
              pry
         
     | 
| 
       281 
295 
     | 
    
         
             
              puma
         
     | 
| 
       282 
296 
     | 
    
         
             
              rails (~> 5.0.0)
         
     | 
| 
       283 
297 
     | 
    
         
             
              rake (~> 10.0)
         
     | 
| 
       284 
     | 
    
         
            -
              react-rails ( 
     | 
| 
      
 298 
     | 
    
         
            +
              react-rails (< 1.10.0)
         
     | 
| 
       285 
299 
     | 
    
         
             
              rspec-collection_matchers
         
     | 
| 
       286 
300 
     | 
    
         
             
              rspec-expectations
         
     | 
| 
       287 
301 
     | 
    
         
             
              rspec-its
         
     | 
| 
       288 
302 
     | 
    
         
             
              rspec-mocks
         
     | 
| 
       289 
     | 
    
         
            -
              rspec-rails
         
     | 
| 
       290 
303 
     | 
    
         
             
              rspec-steps
         
     | 
| 
       291 
     | 
    
         
            -
               
     | 
| 
      
 304 
     | 
    
         
            +
              rubocop
         
     | 
| 
       292 
305 
     | 
    
         
             
              shoulda
         
     | 
| 
       293 
306 
     | 
    
         
             
              shoulda-matchers
         
     | 
| 
       294 
307 
     | 
    
         
             
              spring-commands-rspec
         
     | 
| 
       295 
308 
     | 
    
         
             
              therubyracer (= 0.12.2)
         
     | 
| 
       296 
     | 
    
         
            -
              timecop
         
     | 
| 
       297 
     | 
    
         
            -
              unparser (= 0.2.5)
         
     | 
| 
       298 
309 
     | 
    
         | 
| 
       299 
310 
     | 
    
         
             
            BUNDLED WITH
         
     | 
| 
       300 
311 
     | 
    
         
             
               1.12.5
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -350,6 +350,11 @@ See the Timecop [README](https://github.com/travisjeffery/timecop/blob/master/RE 
     | 
|
| 
       350 
350 
     | 
    
         | 
| 
       351 
351 
     | 
    
         
             
            There is one confusing thing to note:  On the server if you `sleep` then you will sleep for the specified number of seconds when viewed *outside* of the test.  However inside the test environment if you look at Time.now, you will see it advancing according to the scale factor.  Likewise if you have a `after` or `every` block on the client, you will wait according to *simulated* time.
         
     | 
| 
       352 
352 
     | 
    
         | 
| 
      
 353 
     | 
    
         
            +
            ## Common Problems
         
     | 
| 
      
 354 
     | 
    
         
            +
             
     | 
| 
      
 355 
     | 
    
         
            +
            If you are getting failures on Poltergeist but not Firefox, make sure you are not requiring `browser` in your components.rb.
         
     | 
| 
      
 356 
     | 
    
         
            +
            Requiring `browser/interval` or `browser/delay` is okay.
         
     | 
| 
      
 357 
     | 
    
         
            +
             
     | 
| 
       353 
358 
     | 
    
         
             
            ## Development
         
     | 
| 
       354 
359 
     | 
    
         | 
| 
       355 
360 
     | 
    
         
             
            After checking out the repo, run bundle install and you should be good to go.
         
     | 
    
        data/hyper-spec.gemspec
    CHANGED
    
    | 
         @@ -1,68 +1,72 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # coding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
            lib = File.expand_path('../lib', __FILE__)
         
     | 
| 
      
 2 
     | 
    
         
            +
            lib = File.expand_path('../lib/', __FILE__)
         
     | 
| 
       3 
3 
     | 
    
         
             
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         
     | 
| 
       4 
4 
     | 
    
         
             
            require 'hyper-spec/version'
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
            Gem::Specification.new do |spec|
         
     | 
| 
       7 
     | 
    
         
            -
              spec.name          =  
     | 
| 
      
 6 
     | 
    
         
            +
            Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength
         
     | 
| 
      
 7 
     | 
    
         
            +
              spec.name          = 'hyper-spec'
         
     | 
| 
       8 
8 
     | 
    
         
             
              spec.version       = HyperSpec::VERSION
         
     | 
| 
       9 
     | 
    
         
            -
              spec.authors       = [ 
     | 
| 
       10 
     | 
    
         
            -
              spec.email         = [ 
     | 
| 
      
 9 
     | 
    
         
            +
              spec.authors       = ['catmando', 'adamcreekroad']
         
     | 
| 
      
 10 
     | 
    
         
            +
              spec.email         = ['mitch@catprint.com']
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
              spec.summary       = 
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
      
 12 
     | 
    
         
            +
              spec.summary       =
         
     | 
| 
      
 13 
     | 
    
         
            +
                'Drive your Hyperloop client and server specs from RSpec and Capybara'
         
     | 
| 
      
 14 
     | 
    
         
            +
              spec.description   =
         
     | 
| 
      
 15 
     | 
    
         
            +
                'A Hyperloop application consists of isomorphic React Components, '\
         
     | 
| 
      
 16 
     | 
    
         
            +
                'Active Record Models, Stores, Operations and Policiespec. '\
         
     | 
| 
      
 17 
     | 
    
         
            +
                'Test them all from Rspec, regardless if the code runs on the client or server.'
         
     | 
| 
      
 18 
     | 
    
         
            +
              spec.homepage      = 'https://github.com/ruby-hyperloop/hyper-spec'
         
     | 
| 
      
 19 
     | 
    
         
            +
              spec.license       = 'MIT'
         
     | 
| 
       17 
20 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
               
     | 
| 
       19 
     | 
    
         
            -
               
     | 
| 
       20 
     | 
    
         
            -
              spec. 
     | 
| 
       21 
     | 
    
         
            -
              spec.require_paths = ["lib"]
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
              spec.add_development_dependency "bundler", "~> 1.12"
         
     | 
| 
       24 
     | 
    
         
            -
              spec.add_development_dependency "rake", "~> 10.0"
         
     | 
| 
      
 21 
     | 
    
         
            +
              # Prevent pushing this gem to RubyGemspec.org. To allow pushes either set the 'allowed_push_host'
         
     | 
| 
      
 22 
     | 
    
         
            +
              # to allow pushing to a single host or delete this section to allow pushing to any host.
         
     | 
| 
      
 23 
     | 
    
         
            +
              spec.metadata['allowed_push_host'] = 'https://rubygems.org'
         
     | 
| 
       25 
24 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
              spec. 
     | 
| 
      
 25 
     | 
    
         
            +
              spec.files         =
         
     | 
| 
      
 26 
     | 
    
         
            +
                `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
         
     | 
| 
      
 27 
     | 
    
         
            +
              spec.bindir        = 'exe'
         
     | 
| 
      
 28 
     | 
    
         
            +
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         
     | 
| 
      
 29 
     | 
    
         
            +
              spec.require_paths = ['lib']
         
     | 
| 
       27 
30 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
               
     | 
| 
      
 31 
     | 
    
         
            +
              # Test app dependencies
         
     | 
| 
      
 32 
     | 
    
         
            +
              spec.add_development_dependency 'bundler', '~> 1.12'
         
     | 
| 
      
 33 
     | 
    
         
            +
              spec.add_development_dependency 'hyper-react', '>= 0.10.0'
         
     | 
| 
      
 34 
     | 
    
         
            +
              spec.add_development_dependency 'rails', '~>5.0.0'
         
     | 
| 
      
 35 
     | 
    
         
            +
              spec.add_development_dependency 'rake', '~> 10.0'
         
     | 
| 
      
 36 
     | 
    
         
            +
              spec.add_development_dependency 'react-rails', '< 1.10.0'
         
     | 
| 
       29 
37 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
              #  
     | 
| 
       31 
     | 
    
         
            -
              spec.add_development_dependency ' 
     | 
| 
       32 
     | 
    
         
            -
              spec.add_development_dependency 'react-rails', '~> 1.4.0'
         
     | 
| 
       33 
     | 
    
         
            -
              spec.add_development_dependency 'opal-rails'
         
     | 
| 
       34 
     | 
    
         
            -
              # spec.add_development_dependency 'opal-activesupport'
         
     | 
| 
       35 
     | 
    
         
            -
              # spec.add_development_dependency 'factory_girl_rails'
         
     | 
| 
       36 
     | 
    
         
            -
              # spec.add_development_dependency 'reactrb-rails-generator'
         
     | 
| 
       37 
     | 
    
         
            -
              # spec.add_development_dependency 'rspec-wait'
         
     | 
| 
       38 
     | 
    
         
            -
              spec.add_development_dependency 'puma'
         
     | 
| 
      
 38 
     | 
    
         
            +
              # Keep linter-rubocop happy
         
     | 
| 
      
 39 
     | 
    
         
            +
              spec.add_development_dependency 'rubocop'
         
     | 
| 
       39 
40 
     | 
    
         | 
| 
       40 
41 
     | 
    
         
             
              if RUBY_PLATFORM == 'java'
         
     | 
| 
       41 
42 
     | 
    
         
             
                spec.add_development_dependency 'therubyrhino'
         
     | 
| 
       42 
43 
     | 
    
         
             
              else
         
     | 
| 
       43 
44 
     | 
    
         
             
                spec.add_development_dependency 'therubyracer', '0.12.2'
         
     | 
| 
       44 
45 
     | 
    
         | 
| 
       45 
     | 
    
         
            -
                #  
     | 
| 
       46 
     | 
    
         
            -
                spec. 
     | 
| 
       47 
     | 
    
         
            -
                spec. 
     | 
| 
      
 46 
     | 
    
         
            +
                # Actual dependencies
         
     | 
| 
      
 47 
     | 
    
         
            +
                spec.add_dependency 'capybara'
         
     | 
| 
      
 48 
     | 
    
         
            +
                spec.add_dependency 'opal'
         
     | 
| 
      
 49 
     | 
    
         
            +
                spec.add_dependency 'parser'
         
     | 
| 
      
 50 
     | 
    
         
            +
                spec.add_dependency 'poltergeist'
         
     | 
| 
      
 51 
     | 
    
         
            +
                spec.add_dependency 'pry'
         
     | 
| 
      
 52 
     | 
    
         
            +
                spec.add_dependency 'rspec-rails'
         
     | 
| 
      
 53 
     | 
    
         
            +
                spec.add_dependency 'selenium-webdriver', '2.53.4'
         
     | 
| 
      
 54 
     | 
    
         
            +
                spec.add_dependency 'timecop'
         
     | 
| 
      
 55 
     | 
    
         
            +
                spec.add_dependency 'unparser', '0.2.5'
         
     | 
| 
       48 
56 
     | 
    
         | 
| 
       49 
     | 
    
         
            -
                #  
     | 
| 
       50 
     | 
    
         
            -
                spec.add_development_dependency 'shoulda'
         
     | 
| 
       51 
     | 
    
         
            -
                spec.add_development_dependency 'shoulda-matchers'
         
     | 
| 
       52 
     | 
    
         
            -
                spec.add_development_dependency 'rspec-its'
         
     | 
| 
       53 
     | 
    
         
            -
                spec.add_development_dependency 'rspec-collection_matchers'
         
     | 
| 
       54 
     | 
    
         
            -
                spec.add_development_dependency 'capybara'
         
     | 
| 
       55 
     | 
    
         
            -
                spec.add_development_dependency 'selenium-webdriver', '2.53.4'
         
     | 
| 
       56 
     | 
    
         
            -
                spec.add_development_dependency 'poltergeist'
         
     | 
| 
       57 
     | 
    
         
            -
                spec.add_development_dependency 'spring-commands-rspec'
         
     | 
| 
      
 57 
     | 
    
         
            +
                # Test app dependencies
         
     | 
| 
       58 
58 
     | 
    
         
             
                spec.add_development_dependency 'chromedriver-helper'
         
     | 
| 
       59 
     | 
    
         
            -
                spec.add_development_dependency 'parser'
         
     | 
| 
       60 
     | 
    
         
            -
                spec.add_development_dependency 'unparser',  '0.2.5'
         
     | 
| 
       61 
     | 
    
         
            -
                spec.add_development_dependency 'pry'
         
     | 
| 
       62 
59 
     | 
    
         
             
                spec.add_development_dependency 'method_source'
         
     | 
| 
       63 
60 
     | 
    
         
             
                spec.add_development_dependency 'opal-browser'
         
     | 
| 
      
 61 
     | 
    
         
            +
                spec.add_development_dependency 'opal-rails'
         
     | 
| 
      
 62 
     | 
    
         
            +
                spec.add_development_dependency 'puma'
         
     | 
| 
      
 63 
     | 
    
         
            +
                spec.add_development_dependency 'rspec-collection_matchers'
         
     | 
| 
      
 64 
     | 
    
         
            +
                spec.add_development_dependency 'rspec-expectations'
         
     | 
| 
      
 65 
     | 
    
         
            +
                spec.add_development_dependency 'rspec-its'
         
     | 
| 
      
 66 
     | 
    
         
            +
                spec.add_development_dependency 'rspec-mocks'
         
     | 
| 
       64 
67 
     | 
    
         
             
                spec.add_development_dependency 'rspec-steps'
         
     | 
| 
       65 
     | 
    
         
            -
                spec. 
     | 
| 
       66 
     | 
    
         
            -
                spec.add_development_dependency ' 
     | 
| 
      
 68 
     | 
    
         
            +
                spec.add_development_dependency 'shoulda'
         
     | 
| 
      
 69 
     | 
    
         
            +
                spec.add_development_dependency 'shoulda-matchers'
         
     | 
| 
      
 70 
     | 
    
         
            +
                spec.add_development_dependency 'spring-commands-rspec'
         
     | 
| 
       67 
71 
     | 
    
         
             
              end
         
     | 
| 
       68 
72 
     | 
    
         
             
            end
         
     | 
    
        data/lib/hyper-spec.rb
    CHANGED
    
    | 
         @@ -1,286 +1,88 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require "hyper-spec/version"
         
     | 
| 
       2 
     | 
    
         
            -
            require "hyper-spec/engine"
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            require 'opal'
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            require 'hyper-spec/component_helpers'
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            # DELETE require 'pry'
         
     | 
| 
       9 
     | 
    
         
            -
            # DELETE begin
         
     | 
| 
       10 
     | 
    
         
            -
            # DELETE   require File.expand_path('../test_app/config/environment', __FILE__)
         
     | 
| 
       11 
     | 
    
         
            -
            # DELETE rescue LoadError
         
     | 
| 
       12 
     | 
    
         
            -
            # DELETE   puts 'Could not load test application. Please ensure you have run `bundle exec rake test_app`'
         
     | 
| 
       13 
     | 
    
         
            -
            # DELETE end
         
     | 
| 
       14 
     | 
    
         
            -
            # DELETE require 'rspec/rails'
         
     | 
| 
       15 
     | 
    
         
            -
            # DELETE require 'timecop'
         
     | 
| 
       16 
     | 
    
         
            -
            # DELETE require "rspec/wait"
         
     | 
| 
       17 
     | 
    
         
            -
            # DELETE #require 'pusher-fake/support/base'
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
            # DELETE Dir["./spec/support/**/*.rb"].sort.each { |f| require f }
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
            RSpec.configure do |config|
         
     | 
| 
       22 
     | 
    
         
            -
              # DELETE config.color = true
         
     | 
| 
       23 
     | 
    
         
            -
              # DELETE config.fail_fast = ENV['FAIL_FAST'] || false
         
     | 
| 
       24 
     | 
    
         
            -
              # DELETE config.fixture_path = File.join(File.expand_path(File.dirname(__FILE__)), "fixtures")
         
     | 
| 
       25 
     | 
    
         
            -
              # DELETE config.infer_spec_type_from_file_location!
         
     | 
| 
       26 
     | 
    
         
            -
              config.mock_with :rspec
         
     | 
| 
       27 
     | 
    
         
            -
              # DELETE config.raise_errors_for_deprecations!
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
              # If you're not using ActiveRecord, or you'd prefer not to run each of your
         
     | 
| 
       30 
     | 
    
         
            -
              # examples within a transaction, comment the following line or assign false
         
     | 
| 
       31 
     | 
    
         
            -
              # instead of true.
         
     | 
| 
       32 
     | 
    
         
            -
              # DELETE config.use_transactional_fixtures = true
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
              # config.after :each do
         
     | 
| 
       35 
     | 
    
         
            -
              #   Rails.cache.clear
         
     | 
| 
       36 
     | 
    
         
            -
              # end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
              config.after(:each) do |example|
         
     | 
| 
       39 
     | 
    
         
            -
                unless example.exception
         
     | 
| 
       40 
     | 
    
         
            -
                  # DELETE #Object.send(:remove_const, :Application) rescue nil
         
     | 
| 
       41 
     | 
    
         
            -
                  # DELETE ObjectSpace.each_object(Class).each do |klass|
         
     | 
| 
       42 
     | 
    
         
            -
                  # DELETE   if klass < HyperMesh::Regulation
         
     | 
| 
       43 
     | 
    
         
            -
                  # DELETE     klass.instance_variables.each { |v| klass.instance_variable_set(v, nil) }
         
     | 
| 
       44 
     | 
    
         
            -
                  # DELETE   end
         
     | 
| 
       45 
     | 
    
         
            -
                  # DELETE end
         
     | 
| 
       46 
     | 
    
         
            -
                  PusherFake::Channel.reset if defined? PusherFake
         
     | 
| 
       47 
     | 
    
         
            -
                end
         
     | 
| 
       48 
     | 
    
         
            -
              end
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
              # DELETE config.filter_run_including focus: true
         
     | 
| 
       51 
     | 
    
         
            -
              # DELETE config.filter_run_excluding opal: true
         
     | 
| 
       52 
     | 
    
         
            -
              # DELETE config.run_all_when_everything_filtered = true
         
     | 
| 
       53 
     | 
    
         
            -
            end
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
            # DELETE FACTORY_GIRL = false
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
            # DELETE #require 'rails_helper'
         
     | 
| 
       58 
     | 
    
         
            -
            # DELETE require 'rspec'
         
     | 
| 
       59 
     | 
    
         
            -
            # DELETE require 'rspec/expectations'
         
     | 
| 
       60 
     | 
    
         
            -
            # DELETE begin
         
     | 
| 
       61 
     | 
    
         
            -
            # DELETE   require 'factory_girl_rails'
         
     | 
| 
       62 
     | 
    
         
            -
            # DELETE rescue LoadError
         
     | 
| 
       63 
     | 
    
         
            -
            # DELETE end
         
     | 
| 
       64 
     | 
    
         
            -
            # DELETE require 'shoulda/matchers'
         
     | 
| 
       65 
     | 
    
         
            -
            # DELETE require 'database_cleaner'
         
     | 
| 
       66 
1 
     | 
    
         
             
            require 'capybara/rspec'
         
     | 
| 
       67 
     | 
    
         
            -
            #hmmm.... where should this go???? require 'capybara/rails'
         
     | 
| 
       68 
2 
     | 
    
         
             
            require 'capybara/poltergeist'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'opal'
         
     | 
| 
       69 
4 
     | 
    
         
             
            require 'selenium-webdriver'
         
     | 
| 
       70 
5 
     | 
    
         | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
            end
         
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
            # DELETE #Capybara.default_max_wait_time = 4.seconds
         
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
            Capybara.server = :puma
         
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
       83 
     | 
    
         
            -
            module WaitForAjax
         
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
       85 
     | 
    
         
            -
              def wait_for_ajax
         
     | 
| 
       86 
     | 
    
         
            -
                Timeout.timeout(Capybara.default_max_wait_time) do
         
     | 
| 
       87 
     | 
    
         
            -
                  begin
         
     | 
| 
       88 
     | 
    
         
            -
                    sleep 0.25
         
     | 
| 
       89 
     | 
    
         
            -
                  end until finished_all_ajax_requests?
         
     | 
| 
       90 
     | 
    
         
            -
                end
         
     | 
| 
       91 
     | 
    
         
            -
              end
         
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
     | 
    
         
            -
              def running?
         
     | 
| 
       94 
     | 
    
         
            -
                result = page.evaluate_script("(function(active) {console.log('jquery is active? '+active); return active})(jQuery.active)")
         
     | 
| 
       95 
     | 
    
         
            -
                result && !result.zero?
         
     | 
| 
       96 
     | 
    
         
            -
              rescue Exception => e
         
     | 
| 
       97 
     | 
    
         
            -
                puts "wait_for_ajax failed while testing state of jQuery.active: #{e}"
         
     | 
| 
       98 
     | 
    
         
            -
              end
         
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
              def finished_all_ajax_requests?
         
     | 
| 
       101 
     | 
    
         
            -
                unless running?
         
     | 
| 
       102 
     | 
    
         
            -
                  sleep 0.25 # this was 1 second, not sure if its necessary to be so long...
         
     | 
| 
       103 
     | 
    
         
            -
                  !running?
         
     | 
| 
       104 
     | 
    
         
            -
                end
         
     | 
| 
       105 
     | 
    
         
            -
              rescue Capybara::NotSupportedByDriverError
         
     | 
| 
       106 
     | 
    
         
            -
                true
         
     | 
| 
       107 
     | 
    
         
            -
              rescue Exception => e
         
     | 
| 
       108 
     | 
    
         
            -
                e.message == "jQuery is not defined"
         
     | 
| 
       109 
     | 
    
         
            -
              end
         
     | 
| 
       110 
     | 
    
         
            -
             
     | 
| 
       111 
     | 
    
         
            -
            end
         
     | 
| 
       112 
     | 
    
         
            -
             
     | 
| 
       113 
     | 
    
         
            -
            RSpec.configure do |config|
         
     | 
| 
       114 
     | 
    
         
            -
              config.include WaitForAjax
         
     | 
| 
       115 
     | 
    
         
            -
            end
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'hyper-spec/component_test_helpers'
         
     | 
| 
      
 7 
     | 
    
         
            +
            require 'hyper-spec/rails/engine'
         
     | 
| 
      
 8 
     | 
    
         
            +
            require 'hyper-spec/version'
         
     | 
| 
      
 9 
     | 
    
         
            +
            require 'hyper-spec/wait_for_ajax'
         
     | 
| 
      
 10 
     | 
    
         
            +
            require 'react/isomorphic_helpers'
         
     | 
| 
      
 11 
     | 
    
         
            +
            require 'selenium/web_driver/firefox/profile'
         
     | 
| 
       116 
12 
     | 
    
         | 
| 
       117 
13 
     | 
    
         
             
            RSpec.configure do |config|
         
     | 
| 
      
 14 
     | 
    
         
            +
              config.include HyperSpec::ComponentTestHelpers
         
     | 
| 
      
 15 
     | 
    
         
            +
              config.include HyperSpec::WaitForAjax
         
     | 
| 
      
 16 
     | 
    
         
            +
              config.include Capybara::DSL
         
     | 
| 
       118 
17 
     | 
    
         | 
| 
       119 
     | 
    
         
            -
               
     | 
| 
      
 18 
     | 
    
         
            +
              config.mock_with :rspec
         
     | 
| 
       120 
19 
     | 
    
         | 
| 
       121 
     | 
    
         
            -
               
     | 
| 
       122 
     | 
    
         
            -
                 
     | 
| 
       123 
     | 
    
         
            -
                   
     | 
| 
       124 
     | 
    
         
            -
                     
     | 
| 
      
 20 
     | 
    
         
            +
              if defined?(HyperMesh)
         
     | 
| 
      
 21 
     | 
    
         
            +
                config.before(:each) do
         
     | 
| 
      
 22 
     | 
    
         
            +
                  HyperMesh.class_eval do
         
     | 
| 
      
 23 
     | 
    
         
            +
                    def self.on_server?
         
     | 
| 
      
 24 
     | 
    
         
            +
                      true
         
     | 
| 
      
 25 
     | 
    
         
            +
                    end
         
     | 
| 
       125 
26 
     | 
    
         
             
                  end
         
     | 
| 
       126 
27 
     | 
    
         
             
                end
         
     | 
| 
       127 
     | 
    
         
            -
              end 
     | 
| 
      
 28 
     | 
    
         
            +
              end
         
     | 
| 
       128 
29 
     | 
    
         | 
| 
       129 
     | 
    
         
            -
              config.before(:each, : 
     | 
| 
      
 30 
     | 
    
         
            +
              config.before(:each, js: true) do
         
     | 
| 
       130 
31 
     | 
    
         
             
                size_window
         
     | 
| 
       131 
32 
     | 
    
         
             
              end
         
     | 
| 
       132 
33 
     | 
    
         | 
| 
       133 
     | 
    
         
            -
              config.after(:each, : 
     | 
| 
       134 
     | 
    
         
            -
                page.instance_variable_set( 
     | 
| 
      
 34 
     | 
    
         
            +
              config.after(:each, js: true) do
         
     | 
| 
      
 35 
     | 
    
         
            +
                page.instance_variable_set('@hyper_spec_mounted', false)
         
     | 
| 
       135 
36 
     | 
    
         
             
              end
         
     | 
| 
       136 
37 
     | 
    
         | 
| 
       137 
     | 
    
         
            -
             
     | 
| 
       138 
     | 
    
         
            -
             
     | 
| 
       139 
     | 
    
         
            -
             
     | 
| 
       140 
     | 
    
         
            -
                # assertion/expectation library such as wrong or the stdlib/minitest
         
     | 
| 
       141 
     | 
    
         
            -
                # assertions if you prefer.
         
     | 
| 
       142 
     | 
    
         
            -
                config.expect_with :rspec do |expectations|
         
     | 
| 
       143 
     | 
    
         
            -
                  # Enable only the newer, non-monkey-patching expect syntax.
         
     | 
| 
       144 
     | 
    
         
            -
                  # For more details, see:
         
     | 
| 
       145 
     | 
    
         
            -
                  #   - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
         
     | 
| 
       146 
     | 
    
         
            -
                  expectations.syntax = [:should, :expect]
         
     | 
| 
       147 
     | 
    
         
            -
                end
         
     | 
| 
       148 
     | 
    
         
            -
             
     | 
| 
       149 
     | 
    
         
            -
                # rspec-mocks config goes here. You can use an alternate test double
         
     | 
| 
       150 
     | 
    
         
            -
                # library (such as bogus or mocha) by changing the `mock_with` option here.
         
     | 
| 
       151 
     | 
    
         
            -
                config.mock_with :rspec do |mocks|
         
     | 
| 
       152 
     | 
    
         
            -
                  # Enable only the newer, non-monkey-patching expect syntax.
         
     | 
| 
       153 
     | 
    
         
            -
                  # For more details, see:
         
     | 
| 
       154 
     | 
    
         
            -
                  #   - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
         
     | 
| 
       155 
     | 
    
         
            -
                  mocks.syntax = :expect
         
     | 
| 
       156 
     | 
    
         
            -
             
     | 
| 
       157 
     | 
    
         
            -
                  # Prevents you from mocking or stubbing a method that does not exist on
         
     | 
| 
       158 
     | 
    
         
            -
                  # a real object. This is generally recommended.
         
     | 
| 
       159 
     | 
    
         
            -
                  mocks.verify_partial_doubles = true
         
     | 
| 
       160 
     | 
    
         
            -
                end
         
     | 
| 
       161 
     | 
    
         
            -
             
     | 
| 
       162 
     | 
    
         
            -
                config.include FactoryGirl::Syntax::Methods if defined? FactoryGirl
         
     | 
| 
       163 
     | 
    
         
            -
             
     | 
| 
       164 
     | 
    
         
            -
                config.use_transactional_fixtures = false
         
     | 
| 
       165 
     | 
    
         
            -
             
     | 
| 
       166 
     | 
    
         
            -
                config.before(:suite) do
         
     | 
| 
       167 
     | 
    
         
            -
                  DatabaseCleaner.clean_with(:truncation)
         
     | 
| 
       168 
     | 
    
         
            -
                end
         
     | 
| 
       169 
     | 
    
         
            -
             
     | 
| 
       170 
     | 
    
         
            -
                config.before(:each) do
         
     | 
| 
       171 
     | 
    
         
            -
                  DatabaseCleaner.strategy = :transaction
         
     | 
| 
       172 
     | 
    
         
            -
                end
         
     | 
| 
       173 
     | 
    
         
            -
             
     | 
| 
       174 
     | 
    
         
            -
                config.before(:each, :js => true) do
         
     | 
| 
       175 
     | 
    
         
            -
                  DatabaseCleaner.strategy = :truncation
         
     | 
| 
       176 
     | 
    
         
            -
                end
         
     | 
| 
       177 
     | 
    
         
            -
             
     | 
| 
       178 
     | 
    
         
            -
                config.before(:each) do
         
     | 
| 
       179 
     | 
    
         
            -
                  DatabaseCleaner.start
         
     | 
| 
       180 
     | 
    
         
            -
                end
         
     | 
| 
       181 
     | 
    
         
            -
             
     | 
| 
       182 
     | 
    
         
            -
                config.after(:each) do |example|
         
     | 
| 
       183 
     | 
    
         
            -
                  unless example.exception
         
     | 
| 
       184 
     | 
    
         
            -
                    # Clear session data
         
     | 
| 
       185 
     | 
    
         
            -
                    Capybara.reset_sessions!
         
     | 
| 
       186 
     | 
    
         
            -
                    # Rollback transaction
         
     | 
| 
       187 
     | 
    
         
            -
                    DatabaseCleaner.clean
         
     | 
| 
       188 
     | 
    
         
            -
                  end
         
     | 
| 
      
 38 
     | 
    
         
            +
              config.after(:each) do |example|
         
     | 
| 
      
 39 
     | 
    
         
            +
                unless example.exception
         
     | 
| 
      
 40 
     | 
    
         
            +
                  PusherFake::Channel.reset if defined? PusherFake
         
     | 
| 
       189 
41 
     | 
    
         
             
                end
         
     | 
| 
       190 
42 
     | 
    
         
             
              end
         
     | 
| 
      
 43 
     | 
    
         
            +
            end
         
     | 
| 
       191 
44 
     | 
    
         | 
| 
      
 45 
     | 
    
         
            +
            # Capybara config
         
     | 
| 
      
 46 
     | 
    
         
            +
            RSpec.configure do |_config|
         
     | 
| 
      
 47 
     | 
    
         
            +
              Capybara.default_max_wait_time = 10
         
     | 
| 
       192 
48 
     | 
    
         | 
| 
       193 
     | 
    
         
            -
               
     | 
| 
       194 
     | 
    
         
            -
             
     | 
| 
       195 
     | 
    
         
            -
               
     | 
| 
       196 
     | 
    
         
            -
             
     | 
| 
       197 
     | 
    
         
            -
             
     | 
| 
       198 
     | 
    
         
            -
             
     | 
| 
       199 
     | 
    
         
            -
               
     | 
| 
      
 49 
     | 
    
         
            +
              # # In case Google ever fixes chromedriver to work with Opal...
         
     | 
| 
      
 50 
     | 
    
         
            +
              # Capybara.register_driver :chrome do |app|
         
     | 
| 
      
 51 
     | 
    
         
            +
              #   caps = Selenium::WebDriver::Remote::Capabilities.chrome(
         
     | 
| 
      
 52 
     | 
    
         
            +
              #     'chromeOptions' => { 'args' => ['--window-size=200,200'] }
         
     | 
| 
      
 53 
     | 
    
         
            +
              #   )
         
     | 
| 
      
 54 
     | 
    
         
            +
              #
         
     | 
| 
      
 55 
     | 
    
         
            +
              #   Capybara::Selenium::Driver.new(app, browser: :chrome, desired_capabilities: caps)
         
     | 
| 
      
 56 
     | 
    
         
            +
              # end
         
     | 
| 
       200 
57 
     | 
    
         | 
| 
       201 
     | 
    
         
            -
              options = {
         
     | 
| 
       202 
     | 
    
         
            -
                js_errors: false,
         
     | 
| 
       203 
     | 
    
         
            -
                timeout: 180,
         
     | 
| 
       204 
     | 
    
         
            -
                inspector: true,
         
     | 
| 
       205 
     | 
    
         
            -
                phantomjs_options: ['--load-images=no', '--ignore-ssl-errors=yes']
         
     | 
| 
       206 
     | 
    
         
            -
              }
         
     | 
| 
       207 
     | 
    
         
            -
              options.merge!({phantomjs_logger: StringIO.new, logger: StringIO.new,}) unless ENV['SHOW_LOGS']
         
     | 
| 
       208 
58 
     | 
    
         
             
              Capybara.register_driver :poltergeist do |app|
         
     | 
| 
       209 
     | 
    
         
            -
                 
     | 
| 
       210 
     | 
    
         
            -
             
     | 
| 
       211 
     | 
    
         
            -
             
     | 
| 
       212 
     | 
    
         
            -
             
     | 
| 
       213 
     | 
    
         
            -
             
     | 
| 
       214 
     | 
    
         
            -
             
     | 
| 
       215 
     | 
    
         
            -
             
     | 
| 
       216 
     | 
    
         
            -
                end
         
     | 
| 
       217 
     | 
    
         
            -
             
     | 
| 
       218 
     | 
    
         
            -
                def self.firebug_version=(version)
         
     | 
| 
       219 
     | 
    
         
            -
                  @firebug_version = version
         
     | 
| 
       220 
     | 
    
         
            -
                end
         
     | 
| 
       221 
     | 
    
         
            -
             
     | 
| 
       222 
     | 
    
         
            -
                def frame_position
         
     | 
| 
       223 
     | 
    
         
            -
                  @frame_position ||= 'detached'
         
     | 
| 
       224 
     | 
    
         
            -
                end
         
     | 
| 
       225 
     | 
    
         
            -
             
     | 
| 
       226 
     | 
    
         
            -
                def frame_position=(position)
         
     | 
| 
       227 
     | 
    
         
            -
                  @frame_position = ["left", "right", "top", "detached"].detect do |side|
         
     | 
| 
       228 
     | 
    
         
            -
                    position && position[0].downcase == side[0]
         
     | 
| 
       229 
     | 
    
         
            -
                  end || "detached"
         
     | 
| 
       230 
     | 
    
         
            -
                end
         
     | 
| 
       231 
     | 
    
         
            -
             
     | 
| 
       232 
     | 
    
         
            -
                def enable_firebug(version = nil)
         
     | 
| 
       233 
     | 
    
         
            -
                  version ||= Selenium::WebDriver::Firefox::Profile.firebug_version
         
     | 
| 
       234 
     | 
    
         
            -
                  add_extension(File.expand_path("../bin/firebug-#{version}.xpi", __FILE__))
         
     | 
| 
       235 
     | 
    
         
            -
             
     | 
| 
       236 
     | 
    
         
            -
                  # For some reason, Firebug seems to trigger the Firefox plugin check
         
     | 
| 
       237 
     | 
    
         
            -
                  # (navigating to https://www.mozilla.org/en-US/plugincheck/ at startup).
         
     | 
| 
       238 
     | 
    
         
            -
                  # This prevents it. See http://code.google.com/p/selenium/issues/detail?id=4619.
         
     | 
| 
       239 
     | 
    
         
            -
                  self["extensions.blocklist.enabled"] = false
         
     | 
| 
       240 
     | 
    
         
            -
             
     | 
| 
       241 
     | 
    
         
            -
                  # Prevent "Welcome!" tab
         
     | 
| 
       242 
     | 
    
         
            -
                  self["extensions.firebug.showFirstRunPage"] = false
         
     | 
| 
       243 
     | 
    
         
            -
             
     | 
| 
       244 
     | 
    
         
            -
                  # Enable for all sites.
         
     | 
| 
       245 
     | 
    
         
            -
                  self["extensions.firebug.allPagesActivation"] = "on"
         
     | 
| 
       246 
     | 
    
         
            -
             
     | 
| 
       247 
     | 
    
         
            -
                  # Enable all features.
         
     | 
| 
       248 
     | 
    
         
            -
                  ['console', 'net', 'script'].each do |feature|
         
     | 
| 
       249 
     | 
    
         
            -
                    self["extensions.firebug.#{feature}.enableSites"] = true
         
     | 
| 
      
 59 
     | 
    
         
            +
                options = {
         
     | 
| 
      
 60 
     | 
    
         
            +
                  js_errors: false, timeout: 180, inspector: true,
         
     | 
| 
      
 61 
     | 
    
         
            +
                  phantomjs_options: ['--load-images=no', '--ignore-ssl-errors=yes']
         
     | 
| 
      
 62 
     | 
    
         
            +
                }.tap do |hash|
         
     | 
| 
      
 63 
     | 
    
         
            +
                  unless ENV['SHOW_LOGS']
         
     | 
| 
      
 64 
     | 
    
         
            +
                    hash[:phantomjs_logger] = StringIO.new
         
     | 
| 
      
 65 
     | 
    
         
            +
                    hash[:logger] = StringIO.new
         
     | 
| 
       250 
66 
     | 
    
         
             
                  end
         
     | 
| 
       251 
     | 
    
         
            -
             
     | 
| 
       252 
     | 
    
         
            -
                  # Closed by default, will open detached.
         
     | 
| 
       253 
     | 
    
         
            -
                  self["extensions.firebug.framePosition"] = frame_position
         
     | 
| 
       254 
     | 
    
         
            -
                  self["extensions.firebug.previousPlacement"] = 3
         
     | 
| 
       255 
     | 
    
         
            -
                  self["extensions.firebug.defaultPanelName"] = "console"
         
     | 
| 
       256 
     | 
    
         
            -
             
     | 
| 
       257 
     | 
    
         
            -
                  # Disable native "Inspect Element" menu item.
         
     | 
| 
       258 
     | 
    
         
            -
                  self["devtools.inspector.enabled"] = false
         
     | 
| 
       259 
     | 
    
         
            -
                  self["extensions.firebug.hideDefaultInspector"] = true
         
     | 
| 
       260 
67 
     | 
    
         
             
                end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                Capybara::Poltergeist::Driver.new(app, options)
         
     | 
| 
       261 
70 
     | 
    
         
             
              end
         
     | 
| 
       262 
71 
     | 
    
         | 
| 
       263 
72 
     | 
    
         
             
              Capybara.register_driver :selenium_with_firebug do |app|
         
     | 
| 
       264 
73 
     | 
    
         
             
                profile = Selenium::WebDriver::Firefox::Profile.new
         
     | 
| 
       265 
74 
     | 
    
         
             
                profile.frame_position = ENV['DRIVER'] && ENV['DRIVER'][2]
         
     | 
| 
       266 
75 
     | 
    
         
             
                profile.enable_firebug
         
     | 
| 
       267 
     | 
    
         
            -
                Capybara::Selenium::Driver.new(app, :browser => :firefox, :profile => profile)
         
     | 
| 
       268 
     | 
    
         
            -
              end
         
     | 
| 
       269 
     | 
    
         
            -
             
     | 
| 
       270 
     | 
    
         
            -
              Capybara.javascript_driver = :poltergeist
         
     | 
| 
       271 
     | 
    
         
            -
             
     | 
| 
       272 
     | 
    
         
            -
              Capybara.register_driver :chrome do |app|
         
     | 
| 
       273 
     | 
    
         
            -
                Capybara::Selenium::Driver.new(app, :browser => :chrome)
         
     | 
| 
       274 
     | 
    
         
            -
              end
         
     | 
| 
       275 
76 
     | 
    
         | 
| 
       276 
     | 
    
         
            -
             
     | 
| 
       277 
     | 
    
         
            -
                Capybara.javascript_driver = :selenium_with_firebug
         
     | 
| 
       278 
     | 
    
         
            -
              elsif ENV['DRIVER'] == 'chrome'
         
     | 
| 
       279 
     | 
    
         
            -
                Capybara.javascript_driver = :chrome
         
     | 
| 
       280 
     | 
    
         
            -
              else
         
     | 
| 
       281 
     | 
    
         
            -
                Capybara.javascript_driver = :poltergeist
         
     | 
| 
      
 77 
     | 
    
         
            +
                Capybara::Selenium::Driver.new(app, browser: :firefox, profile: profile)
         
     | 
| 
       282 
78 
     | 
    
         
             
              end
         
     | 
| 
       283 
79 
     | 
    
         | 
| 
       284 
     | 
    
         
            -
               
     | 
| 
       285 
     | 
    
         
            -
             
     | 
| 
      
 80 
     | 
    
         
            +
              Capybara.javascript_driver =
         
     | 
| 
      
 81 
     | 
    
         
            +
                if ENV['DRIVER'] =~ /^ff/
         
     | 
| 
      
 82 
     | 
    
         
            +
                  :selenium_with_firebug
         
     | 
| 
      
 83 
     | 
    
         
            +
                # elsif ENV['DRIVER'] == 'chrome'
         
     | 
| 
      
 84 
     | 
    
         
            +
                #   Capybara.javascript_driver = :chrome
         
     | 
| 
      
 85 
     | 
    
         
            +
                else
         
     | 
| 
      
 86 
     | 
    
         
            +
                  :poltergeist
         
     | 
| 
      
 87 
     | 
    
         
            +
                end
         
     | 
| 
       286 
88 
     | 
    
         
             
            end
         
     |