dom_glancy 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +21 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +15 -0
  5. data/Gemfile +16 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +35 -0
  8. data/Rakefile +23 -0
  9. data/app/assets/javascripts/application.js +1 -0
  10. data/app/assets/stylesheets/1236_grid.css +21 -0
  11. data/app/assets/stylesheets/720_grid.css +33 -0
  12. data/app/assets/stylesheets/986_grid.css +24 -0
  13. data/app/assets/stylesheets/dom_glancy.css +134 -0
  14. data/app/assets/stylesheets/normalize.css +425 -0
  15. data/app/controllers/dom_glancy_application_controller.rb +8 -0
  16. data/app/controllers/dom_glancy_controller.rb +114 -0
  17. data/app/views/dom_glancy/about.html.erb +3 -0
  18. data/app/views/dom_glancy/artifacts.html.erb +16 -0
  19. data/app/views/dom_glancy/index.html.erb +12 -0
  20. data/app/views/dom_glancy/new.html.erb +15 -0
  21. data/app/views/dom_glancy/path_config.html.erb +8 -0
  22. data/app/views/dom_glancy/show.html.erb +42 -0
  23. data/app/views/layouts/dom_glancy.html.erb +32 -0
  24. data/app/views/shared/_dom_glancy_nav.html.erb +8 -0
  25. data/app/views/shared/_dom_set.html.erb +35 -0
  26. data/config/routes.rb +17 -0
  27. data/dom_glancy.gemspec +26 -0
  28. data/lib/dom_glancy/analysis.rb +141 -0
  29. data/lib/dom_glancy/dom_glancy.rb +121 -0
  30. data/lib/dom_glancy/element.rb +92 -0
  31. data/lib/dom_glancy/locations.rb +49 -0
  32. data/lib/dom_glancy/rails/engine.rb +7 -0
  33. data/lib/dom_glancy/svg.rb +71 -0
  34. data/lib/dom_glancy/version.rb +3 -0
  35. data/lib/dom_glancy.rb +7 -0
  36. data/test/page_objects/dom_glancy/about_page.rb +7 -0
  37. data/test/page_objects/dom_glancy/artifacts_page.rb +7 -0
  38. data/test/page_objects/dom_glancy/config_page.rb +19 -0
  39. data/test/page_objects/dom_glancy/index_page.rb +9 -0
  40. data/test/page_objects/dom_glancy/local_index_page.rb +7 -0
  41. data/test/page_objects/dom_glancy/new_page.rb +7 -0
  42. data/test/page_objects/dom_glancy/show_page.rb +15 -0
  43. data/test/page_objects/dom_glancy/viewer_page.rb +15 -0
  44. data/test/page_objects/navigation.rb +34 -0
  45. data/test/page_objects.rb +13 -0
  46. data/test/selenium/mapping_test.rb +118 -0
  47. data/test/selenium/viewer_test.rb +26 -0
  48. data/test/selenium_test_helper.rb +147 -0
  49. data/test/test_app/Gemfile +10 -0
  50. data/test/test_app/app/assets/stylesheets/local_app.css +25 -0
  51. data/test/test_app/app/controllers/application_controller.rb +2 -0
  52. data/test/test_app/app/controllers/local_controller.rb +8 -0
  53. data/test/test_app/app/views/layouts/local.html.erb +14 -0
  54. data/test/test_app/app/views/local/index.html.erb +45 -0
  55. data/test/test_app/config/database.yml +13 -0
  56. data/test/test_app/config/initializers/dom_glancy_initializer.rb +5 -0
  57. data/test/test_app/config/routes.rb +4 -0
  58. data/test/test_app/config.ru +31 -0
  59. data/test/test_app/test_app.rb +30 -0
  60. data/test/test_helper.rb +43 -0
  61. data/test/test_helpers/kracker_class_for_stubbing.rb +3 -0
  62. data/test/test_helpers/location_helpers.rb +28 -0
  63. data/test/test_objects/test_objects.rb +2031 -0
  64. data/test/unit/analysis_test.rb +111 -0
  65. data/test/unit/element_test.rb +47 -0
  66. data/test/unit/kracker_test.rb +79 -0
  67. data/test/unit/location_test.rb +23 -0
  68. data/watchr_script.rb +3 -0
  69. metadata +199 -0
@@ -0,0 +1,111 @@
1
+ require 'test_helper'
2
+
3
+ class AnalysisTest < DomGlancy::DomGlancyTestCase
4
+
5
+ def test_same_elements
6
+
7
+ master_data = array_of_elements
8
+ current_data = array_of_elements
9
+
10
+ analysis = analyze(master_data, current_data)
11
+
12
+ assert_equal 0, analysis[:not_in_master].count, 'results of data analysis: not_in_master'
13
+ assert_equal 0, analysis[:not_in_current].count, 'results of data analysis: not_in_current'
14
+ assert analysis[:same], 'results of data analysis.same'
15
+ end
16
+
17
+ def test_one_id_different
18
+ master_data = array_of_elements_small
19
+ current_data = array_of_elements_small
20
+ current_data.first['id'] = 'some-new-id'
21
+
22
+ analysis = analyze(master_data, current_data)
23
+
24
+ assert_equal 1, analysis[:not_in_master].count, 'results of data analysis: not_in_master'
25
+ assert_equal 1, analysis[:not_in_current].count, 'results of data analysis: not_in_current'
26
+ refute analysis[:same], 'results of data analysis.same'
27
+ end
28
+
29
+ def test_one_new_element
30
+ master_data = array_of_elements
31
+ current_data = array_of_elements
32
+ current_data << single_element_hash
33
+
34
+ analysis = analyze(master_data, current_data)
35
+
36
+ assert_equal 1, analysis[:not_in_master].count, 'results of data analysis: not_in_master'
37
+ assert_equal 0, analysis[:not_in_current].count, 'results of data analysis: not_in_current'
38
+ refute analysis[:same], 'results of data analysis.same'
39
+ end
40
+
41
+ def test_two_changed
42
+ master_data = array_of_elements
43
+ current_data = array_of_elements
44
+ current_data[0]['height'] = current_data[0]['height'] + 16
45
+ current_data[1]['width'] = current_data[1]['width'] + 25
46
+
47
+ analysis = analyze(master_data, current_data)
48
+
49
+ assert_equal 0, analysis[:not_in_master].count, 'results of data analysis: not_in_master'
50
+ assert_equal 0, analysis[:not_in_current].count, 'results of data analysis: not_in_current'
51
+ assert_equal 2, analysis[:changed_element_pairs].count, 'changed element pairs'
52
+ refute analysis[:same], 'results of data analysis.same'
53
+
54
+ end
55
+
56
+ def test_one_changed_less_than_similarity_factor
57
+ master_data = array_of_elements
58
+ current_data = array_of_elements
59
+
60
+ current_data[1]['height'] = current_data[1]['height'] + 3
61
+
62
+ analysis = analyze(master_data, current_data)
63
+
64
+ assert_equal 0, analysis[:not_in_master].count, 'results of data analysis: not_in_master'
65
+ assert_equal 0, analysis[:not_in_current].count, 'results of data analysis: not_in_current'
66
+ assert_equal 0, analysis[:changed_element_pairs].count, 'changed element pairs'
67
+ assert analysis[:same], 'results of data analysis.same'
68
+ end
69
+
70
+ def test_one_changed_one_missing_one_added
71
+ master_data = array_of_elements
72
+ current_data = array_of_elements
73
+
74
+ current_data[0]['height'] = current_data[0]['height'] + 23 ## the one changed (by more than similarity factor)
75
+ current_data[1]['height'] = current_data[1]['height'] + 3 ## the one changed (by less than similarity factor and therefor not counted)
76
+ current_data.delete_at(5) ## the one missing
77
+ current_data << single_element_hash ## the one added
78
+
79
+ analysis = analyze(master_data, current_data)
80
+
81
+ assert_equal 1, analysis[:not_in_master].count, 'results of data analysis: not_in_master'
82
+ assert_equal 1, analysis[:not_in_current].count, 'results of data analysis: not_in_current'
83
+ assert_equal 1, analysis[:changed_element_pairs].count, 'changed element pairs'
84
+ refute analysis[:same], 'results of data analysis.same'
85
+ end
86
+
87
+ def test_huge_list_of_similarly_named_elements
88
+ master_data = travis_local_generated_master
89
+ current_data = travis_generated_current
90
+
91
+ analysis = analyze(master_data, current_data)
92
+ assert_equal 0, analysis[:not_in_master].count, 'results of data analysis: not_in_master'
93
+ assert_equal 0, analysis[:not_in_current].count, 'results of data analysis: not_in_current'
94
+ assert_equal 0, analysis[:changed_element_pairs].count, 'changed element pairs'
95
+ assert analysis[:same], 'results of data analysis.same'
96
+ end
97
+
98
+ def test_huge_another_list_of_similarly_named_elements
99
+ master_data = travis_local_generated_master_2
100
+ current_data = travis_generated_current_2
101
+
102
+ analysis = analyze(master_data, current_data)
103
+
104
+ ## real difference that was found on travis with the INPUT tags being different styles/sizes if not css-styled
105
+ assert_equal 0, analysis[:not_in_master].count, 'results of data analysis: not_in_master'
106
+ assert_equal 0, analysis[:not_in_current].count, 'results of data analysis: not_in_current'
107
+ assert_equal 1, analysis[:changed_element_pairs].count, 'changed element pairs'
108
+ refute analysis[:same], 'results of data analysis.same'
109
+ end
110
+
111
+ end
@@ -0,0 +1,47 @@
1
+ require 'test_helper'
2
+
3
+ class ElementTest < DomGlancy::DomGlancyTestCase
4
+
5
+ def test_sameness
6
+ element1 = DOMElement.new(single_element_hash)
7
+ element2 = DOMElement.new(single_element_hash.merge({"left" => 72}))
8
+
9
+ assert element1.same_element?(element2), 'should be the same element'
10
+ refute element1.all_same?(element2), 'should not be all same'
11
+ assert element1.close_enough?(element2), 'should be the same element, but with slight differences'
12
+
13
+ element1.left = 72
14
+ assert element1.all_same?(element2), 'should be the same now'
15
+
16
+ element2.id = 'stupid_id'
17
+ refute element1.all_same?(element2)
18
+ refute element1.same_element?(element2)
19
+ end
20
+
21
+ def test_similarity
22
+ element1 = DOMElement.new(single_element_hash.merge({"similarity" => 2}))
23
+ element2 = DOMElement.new(single_element_hash.merge({"left" => 72}))
24
+ element3 = DOMElement.new(single_element_hash.merge({"left" => 74}))
25
+
26
+ assert element1.same_element?(element2), 'should be the same element'
27
+ assert element1.same_element?(element3), 'should be the same element'
28
+
29
+ refute element1.all_same?(element2), 'should not be exactly the same'
30
+ refute element1.all_same?(element3), 'should not be exactly the same'
31
+
32
+ assert element1.close_enough?(element2), 'should be close enough'
33
+ refute element1.close_enough?(element3), 'should not be close enough'
34
+
35
+ element1.similarity = 4
36
+ assert element1.close_enough?(element3), 'should not be close enough'
37
+ end
38
+
39
+ def test_changed_element__width
40
+ element1 = DOMElement.new(array_of_elements.last)
41
+ element2 = DOMElement.new(array_of_elements.last.merge("width" => 20))
42
+
43
+ assert element1.same_element?(element2), 'should be same element'
44
+ refute element1.close_enough?(element2), 'elements not close enough'
45
+ end
46
+
47
+ end
@@ -0,0 +1,79 @@
1
+ require 'test_helper'
2
+
3
+ class DomGlancyTest < DomGlancy::DomGlancyTestCase
4
+ def setup
5
+ @test_root = 'elbow'
6
+ prep_locations_for_test
7
+ make_master_test_file(@test_root, array_of_elements_small)
8
+ @DomGlancy_object = DomGlancyClassForStubbing.new
9
+ end
10
+
11
+ def teardown
12
+ delete_test_locations
13
+ end
14
+
15
+ def test_dom_glancy__missing_master
16
+ this_test_root = 'not_elbow'
17
+ blessing_copy_string = "cp #{DomGlancy.current_filename(this_test_root)} #{DomGlancy.master_filename(this_test_root)}"
18
+
19
+ @DomGlancy_object.stubs(:perform_mapping_operation).returns(array_of_elements_small)
20
+ mapping_results = @DomGlancy_object.page_map_same?(this_test_root)
21
+
22
+ refute mapping_results[0], 'test should fail because no master'
23
+ assert_match 'Master file does not exist', mapping_results[1], 'failure message when no master'
24
+ assert_match blessing_copy_string, mapping_results[1], 'blessing copy string should be in the error message'
25
+
26
+ `#{blessing_copy_string}`
27
+ @DomGlancy_object.stubs(:perform_mapping_operation).returns(array_of_elements_small)
28
+
29
+ mapping_results = @DomGlancy_object.page_map_same?(this_test_root)
30
+ assert mapping_results[0], 'test should now pass with copied master'
31
+
32
+ end
33
+
34
+ def test_dom_glancy__pass
35
+ @DomGlancy_object.stubs(:perform_mapping_operation).returns(array_of_elements_small)
36
+ mapping_results = @DomGlancy_object.page_map_same?(@test_root)
37
+
38
+ assert mapping_results[0], mapping_results[1]
39
+ end
40
+
41
+ def test_dom_glancy__fail_one_new_element
42
+ blessing_copy_string = "cp #{DomGlancy.current_filename(@test_root)} #{DomGlancy.master_filename(@test_root)}"
43
+
44
+
45
+ current_data = array_of_elements_small << single_element_hash
46
+ @DomGlancy_object.stubs(:perform_mapping_operation).returns(current_data)
47
+ mapping_results = @DomGlancy_object.page_map_same?(@test_root)
48
+
49
+ refute mapping_results[0], 'page same results should be false'
50
+
51
+ assert_match 'Elements not in master: 1', mapping_results[1], 'error message contents'
52
+ assert_match 'Elements not in current: 0', mapping_results[1], 'error message contents'
53
+ assert_match 'Changed elements: 0', mapping_results[1], 'error message contents'
54
+
55
+ assert_match "current: #{DomGlancy.current_filename(@test_root)}", mapping_results[1], 'error message contents'
56
+ assert_match "master: #{DomGlancy.master_filename(@test_root)}", mapping_results[1], 'error message contents'
57
+ assert_match "difference: #{DomGlancy.diff_filename(@test_root)}", mapping_results[1], 'error message contents'
58
+
59
+ assert_match blessing_copy_string, mapping_results[1], 'blessing copy string should be in the error message'
60
+
61
+ files_in_diff_location = Dir[File.join(DomGlancy.diff_file_location, '*')]
62
+ assert_equal 4, files_in_diff_location.count, 'the number of files in the diff location after a failure.'
63
+
64
+ `#{blessing_copy_string}`
65
+
66
+ @DomGlancy_object.stubs(:perform_mapping_operation).returns(current_data)
67
+ mapping_results = @DomGlancy_object.page_map_same?(@test_root)
68
+
69
+ assert mapping_results[0], 'should pass now that the blessing copy string has been run'
70
+
71
+ end
72
+
73
+ def make_master_test_file(test_root, data)
74
+ filename = DomGlancy.master_filename(test_root)
75
+ yaml_data = data.to_yaml
76
+ File.open(filename, 'w') { |file| file.write(yaml_data) }
77
+ end
78
+
79
+ end
@@ -0,0 +1,23 @@
1
+ require 'test_helper'
2
+
3
+ class LocationTest < DomGlancy::DomGlancyTestCase
4
+
5
+ def setup
6
+ prep_locations_for_test
7
+ end
8
+
9
+ def teardown
10
+ delete_test_locations
11
+ end
12
+
13
+ def test_locations
14
+ assert_equal File.join(@locations_root, 'masters'), DomGlancy.master_file_location , 'master file location value'
15
+ assert_equal File.join(@locations_root, 'current'), DomGlancy.current_file_location , 'current file location value'
16
+ assert_equal File.join(@locations_root, 'diff'), DomGlancy.diff_file_location , 'difference file location value'
17
+
18
+ assert Dir.exist?(DomGlancy.master_file_location) , 'master file location created'
19
+ assert Dir.exist?(DomGlancy.current_file_location) , 'current file location created'
20
+ assert Dir.exist?(DomGlancy.diff_file_location) , 'difference file location created'
21
+ end
22
+
23
+ end
data/watchr_script.rb ADDED
@@ -0,0 +1,3 @@
1
+ watch( './*\.rb' ) do |md|
2
+ system("clear && rake test:units")
3
+ end
metadata ADDED
@@ -0,0 +1,199 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dom_glancy
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - geordie
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-10-31 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: kramdown
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 1.1.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 1.1.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: capybara
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: DOM Mapping
70
+ email:
71
+ - george.speake@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".gitignore"
77
+ - ".ruby-version"
78
+ - ".travis.yml"
79
+ - Gemfile
80
+ - LICENSE.txt
81
+ - README.md
82
+ - Rakefile
83
+ - app/assets/javascripts/application.js
84
+ - app/assets/stylesheets/1236_grid.css
85
+ - app/assets/stylesheets/720_grid.css
86
+ - app/assets/stylesheets/986_grid.css
87
+ - app/assets/stylesheets/dom_glancy.css
88
+ - app/assets/stylesheets/normalize.css
89
+ - app/controllers/dom_glancy_application_controller.rb
90
+ - app/controllers/dom_glancy_controller.rb
91
+ - app/views/dom_glancy/about.html.erb
92
+ - app/views/dom_glancy/artifacts.html.erb
93
+ - app/views/dom_glancy/index.html.erb
94
+ - app/views/dom_glancy/new.html.erb
95
+ - app/views/dom_glancy/path_config.html.erb
96
+ - app/views/dom_glancy/show.html.erb
97
+ - app/views/layouts/dom_glancy.html.erb
98
+ - app/views/shared/_dom_glancy_nav.html.erb
99
+ - app/views/shared/_dom_set.html.erb
100
+ - config/routes.rb
101
+ - dom_glancy.gemspec
102
+ - lib/dom_glancy.rb
103
+ - lib/dom_glancy/analysis.rb
104
+ - lib/dom_glancy/dom_glancy.rb
105
+ - lib/dom_glancy/element.rb
106
+ - lib/dom_glancy/locations.rb
107
+ - lib/dom_glancy/rails/engine.rb
108
+ - lib/dom_glancy/svg.rb
109
+ - lib/dom_glancy/version.rb
110
+ - test/page_objects.rb
111
+ - test/page_objects/dom_glancy/about_page.rb
112
+ - test/page_objects/dom_glancy/artifacts_page.rb
113
+ - test/page_objects/dom_glancy/config_page.rb
114
+ - test/page_objects/dom_glancy/index_page.rb
115
+ - test/page_objects/dom_glancy/local_index_page.rb
116
+ - test/page_objects/dom_glancy/new_page.rb
117
+ - test/page_objects/dom_glancy/show_page.rb
118
+ - test/page_objects/dom_glancy/viewer_page.rb
119
+ - test/page_objects/navigation.rb
120
+ - test/selenium/mapping_test.rb
121
+ - test/selenium/viewer_test.rb
122
+ - test/selenium_test_helper.rb
123
+ - test/test_app/Gemfile
124
+ - test/test_app/app/assets/stylesheets/local_app.css
125
+ - test/test_app/app/controllers/application_controller.rb
126
+ - test/test_app/app/controllers/local_controller.rb
127
+ - test/test_app/app/views/layouts/local.html.erb
128
+ - test/test_app/app/views/local/index.html.erb
129
+ - test/test_app/config.ru
130
+ - test/test_app/config/database.yml
131
+ - test/test_app/config/initializers/dom_glancy_initializer.rb
132
+ - test/test_app/config/routes.rb
133
+ - test/test_app/test_app.rb
134
+ - test/test_helper.rb
135
+ - test/test_helpers/kracker_class_for_stubbing.rb
136
+ - test/test_helpers/location_helpers.rb
137
+ - test/test_objects/test_objects.rb
138
+ - test/unit/analysis_test.rb
139
+ - test/unit/element_test.rb
140
+ - test/unit/kracker_test.rb
141
+ - test/unit/location_test.rb
142
+ - watchr_script.rb
143
+ homepage: https://github.com/QuantumGeordie/dom_glancy
144
+ licenses:
145
+ - MIT
146
+ metadata: {}
147
+ post_install_message:
148
+ rdoc_options: []
149
+ require_paths:
150
+ - lib
151
+ required_ruby_version: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ version: '0'
156
+ required_rubygems_version: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ requirements: []
162
+ rubyforge_project:
163
+ rubygems_version: 2.2.2
164
+ signing_key:
165
+ specification_version: 4
166
+ summary: Map the page DOM and get some stats on it compared to a known default map.
167
+ test_files:
168
+ - test/page_objects.rb
169
+ - test/page_objects/dom_glancy/about_page.rb
170
+ - test/page_objects/dom_glancy/artifacts_page.rb
171
+ - test/page_objects/dom_glancy/config_page.rb
172
+ - test/page_objects/dom_glancy/index_page.rb
173
+ - test/page_objects/dom_glancy/local_index_page.rb
174
+ - test/page_objects/dom_glancy/new_page.rb
175
+ - test/page_objects/dom_glancy/show_page.rb
176
+ - test/page_objects/dom_glancy/viewer_page.rb
177
+ - test/page_objects/navigation.rb
178
+ - test/selenium/mapping_test.rb
179
+ - test/selenium/viewer_test.rb
180
+ - test/selenium_test_helper.rb
181
+ - test/test_app/Gemfile
182
+ - test/test_app/app/assets/stylesheets/local_app.css
183
+ - test/test_app/app/controllers/application_controller.rb
184
+ - test/test_app/app/controllers/local_controller.rb
185
+ - test/test_app/app/views/layouts/local.html.erb
186
+ - test/test_app/app/views/local/index.html.erb
187
+ - test/test_app/config.ru
188
+ - test/test_app/config/database.yml
189
+ - test/test_app/config/initializers/dom_glancy_initializer.rb
190
+ - test/test_app/config/routes.rb
191
+ - test/test_app/test_app.rb
192
+ - test/test_helper.rb
193
+ - test/test_helpers/kracker_class_for_stubbing.rb
194
+ - test/test_helpers/location_helpers.rb
195
+ - test/test_objects/test_objects.rb
196
+ - test/unit/analysis_test.rb
197
+ - test/unit/element_test.rb
198
+ - test/unit/kracker_test.rb
199
+ - test/unit/location_test.rb