dom_glancy 0.1.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +1 -3
  4. data/CHANGELOG.md +5 -0
  5. data/Gemfile +1 -2
  6. data/README.md +69 -2
  7. data/app/assets/javascripts/application.js +7 -1
  8. data/app/assets/stylesheets/dom_glancy.css +19 -3
  9. data/app/controllers/dom_glancy_controller.rb +15 -15
  10. data/app/views/dom_glancy/index.html.erb +15 -10
  11. data/app/views/dom_glancy/path_config.html.erb +3 -3
  12. data/app/views/dom_glancy/show.html.erb +4 -4
  13. data/app/views/layouts/dom_glancy.html.erb +7 -7
  14. data/dom_glancy.gemspec +2 -2
  15. data/lib/dom_glancy/analysis.rb +108 -108
  16. data/lib/dom_glancy/configuration.rb +22 -0
  17. data/lib/dom_glancy/dom_glancy.rb +110 -96
  18. data/lib/dom_glancy/engine.rb +4 -0
  19. data/lib/dom_glancy/locations.rb +10 -43
  20. data/lib/dom_glancy/svg.rb +45 -43
  21. data/lib/dom_glancy/version.rb +1 -1
  22. data/lib/dom_glancy.rb +5 -1
  23. data/test/selenium/mapping_test.rb +14 -14
  24. data/test/selenium/viewer_test.rb +4 -9
  25. data/test/selenium_test_helper.rb +86 -85
  26. data/test/test_app/Gemfile +0 -2
  27. data/test/test_app/Rakefile +3 -0
  28. data/test/test_app/app/views/layouts/local.html.erb +2 -3
  29. data/test/test_app/config/application.rb +29 -0
  30. data/test/test_app/config/boot.rb +6 -0
  31. data/test/test_app/config/environment.rb +2 -0
  32. data/test/test_app/config/initializers/dom_glancy_initializer.rb +8 -4
  33. data/test/test_app/config.ru +2 -29
  34. data/test/test_app/script/rails +6 -0
  35. data/test/test_helper.rb +5 -7
  36. data/test/test_helpers/location_helpers.rb +23 -21
  37. data/test/test_objects/test_objects.rb +40 -42
  38. data/test/unit/analysis_test.rb +9 -10
  39. data/test/unit/{kracker_test.rb → dom_glancy_test.rb} +20 -21
  40. data/test/unit/element_test.rb +8 -8
  41. data/test/unit/location_test.rb +8 -7
  42. metadata +25 -13
  43. data/lib/dom_glancy/rails/engine.rb +0 -7
  44. data/test/test_app/config/database.yml +0 -13
  45. data/test/test_app/test_app.rb +0 -30
  46. data/test/test_helpers/kracker_class_for_stubbing.rb +0 -3
@@ -1,121 +1,135 @@
1
1
  module DomGlancy
2
- require 'yaml'
2
+ class DomGlancy
3
+ def page_map_same?(test_root)
4
+ purge_old_files_before_test(test_root)
3
5
 
4
- def page_map_same?(test_root)
5
- purge_old_files_before_test(test_root)
6
+ result, msg = map_current_file(test_root)
7
+ return [result, msg] unless result
6
8
 
7
- result, msg = map_current_file(test_root)
8
- return [result, msg] unless result
9
+ result, msg = master_file_exists?(test_root)
10
+ return [result, msg] unless result
9
11
 
10
- result, msg = master_file_exists?(test_root)
11
- return [result, msg] unless result
12
+ result, msg, current_data = read_map_file(DomGlancy.current_filename(test_root))
13
+ return [result, msg] unless result
12
14
 
13
- result, msg, current_data = read_map_file(DomGlancy.current_filename(test_root))
14
- return [result, msg] unless result
15
+ result, msg, master_data = read_map_file(DomGlancy.master_filename(test_root))
16
+ return [result, msg] unless result
15
17
 
16
- result, msg, master_data = read_map_file(DomGlancy.master_filename(test_root))
17
- return [result, msg] unless result
18
+ analysis_data = analyze(master_data, current_data, test_root)
18
19
 
19
- analysis_data = analyze(master_data, current_data, test_root)
20
+ msg = make_analysis_failure_report(analysis_data)
21
+ result = analysis_data[:same]
20
22
 
21
- msg = make_analysis_failure_report(analysis_data)
22
- result = analysis_data[:same]
23
+ File.delete DomGlancy.current_filename(test_root) if result
23
24
 
24
- File.delete DomGlancy.current_filename(test_root) if result
25
+ [result, msg]
26
+ end
25
27
 
26
- [result, msg]
27
- end
28
28
 
29
- def read_map_file(filename)
30
- results = [true, '', nil]
31
- begin
32
- results[2] = YAML::load( File.open( filename ) )
33
- rescue Exception => e
34
- results = [false, "Error reading data from file: #{filename}", nil]
29
+ def read_map_file(filename)
30
+ results = [true, '', nil]
31
+ begin
32
+ results[2] = YAML::load( File.open( filename ) )
33
+ rescue Exception => e
34
+ results = [false, "Error reading data from file: #{filename}", nil]
35
+ end
36
+
37
+ results
35
38
  end
36
39
 
37
- results
38
- end
40
+ def map_current_file(test_root)
41
+ filename = DomGlancy.current_filename(test_root)
39
42
 
40
- def map_current_file(test_root)
41
- filename = DomGlancy.current_filename(test_root)
43
+ result = [true, '']
44
+ begin
45
+ data = perform_mapping_operation.to_yaml
46
+ File.open(filename, 'w') { |file| file.write(data) }
47
+ rescue Exception => e
48
+ result = [false, "map current file error: #{e.message}"]
49
+ end
42
50
 
43
- result = [true, '']
44
- begin
45
- data = perform_mapping_operation.to_yaml
46
- File.open(filename, 'w') { |file| file.write(data) }
47
- rescue Exception => e
48
- result = [false, "map current file error: #{e.message}"]
51
+ result
49
52
  end
50
53
 
51
- result
52
- end
54
+ def resize_browser_for_scrollbar
55
+ original_dimensions = Capybara.current_session.driver.browser.manage.window.size
56
+ width = Capybara.current_session.evaluate_script('window.innerWidth - document.documentElement.clientWidth').to_i
53
57
 
54
- def perform_mapping_operation
55
-
56
- js = <<-JS
57
- var dom_glancy = {
58
-
59
- treeUp: function() {
60
- var treeWalker = document.createTreeWalker(
61
- document.body,
62
- NodeFilter.SHOW_ELEMENT,
63
- { acceptNode: function(node) { return NodeFilter.FILTER_ACCEPT; } },
64
- false
65
- );
66
-
67
- var nodeList = [];
68
-
69
- while(treeWalker.nextNode()){
70
- var cn = treeWalker.currentNode;
71
- var node_details = {
72
- "height" : cn.clientHeight,
73
- "width" : cn.clientWidth,
74
- "id" : cn.id,
75
- "tag" : cn.tagName,
76
- "class" : cn.className,
77
- //"html" : cn.innerHTML,
78
- "top" : cn.offsetTop,
79
- "left" : cn.offsetLeft,
80
- "visible" : dom_glancy.isVisible(cn)
81
- }
82
- nodeList.push(node_details);
83
- }
84
-
85
- return(nodeList);
86
- },
87
-
88
- isVisible: function(elem) {
89
- return elem.offsetWidth > 0 || elem.offsetHeight > 0;
90
- }
91
- };
92
- return dom_glancy.treeUp();
93
- JS
94
-
95
- page.driver.browser.execute_script(js)
96
- end
58
+ Capybara.current_session.driver.browser.manage.window.resize_to(original_dimensions.width + width, original_dimensions.height) if width > 0
97
59
 
98
- def master_file_exists?(test_root)
99
- filename = DomGlancy.master_filename(test_root)
100
- result = File.exist?(filename)
101
- msg = result ? '' : make_missing_master_failure_report(test_root)
102
- [result, msg]
103
- end
60
+ result = yield
104
61
 
105
- def make_missing_master_failure_report(test_root)
106
- msg = ["\n------- DOM Comparison Failure ------"]
107
- msg << "Master file does not exist. To make a new master from"
108
- msg << "the current page, use this command:"
109
- msg << "\t#{blessing_copy_string(test_root)}"
110
- msg<< "-------------------------------------"
62
+ Capybara.current_session.driver.browser.manage.window.resize_to(original_dimensions.width, original_dimensions.height) if width > 0
111
63
 
112
- msg.join("\n")
113
- end
64
+ result
65
+ end
114
66
 
115
- def purge_old_files_before_test(test_root)
116
- File.delete DomGlancy.current_filename(test_root) if File.exist?(DomGlancy.current_filename(test_root))
67
+ def perform_mapping_operation
68
+ page_map_js = <<-JS
69
+ var dom_glancy = {
70
+
71
+ treeUp: function() {
72
+ var treeWalker = document.createTreeWalker(
73
+ document.body,
74
+ NodeFilter.SHOW_ELEMENT,
75
+ { acceptNode: function(node) { return NodeFilter.FILTER_ACCEPT; } },
76
+ false
77
+ );
78
+
79
+ var nodeList = [];
80
+
81
+ while(treeWalker.nextNode()){
82
+ var cn = treeWalker.currentNode;
83
+ var node_details = {
84
+ "height" : cn.clientHeight,
85
+ "width" : cn.clientWidth,
86
+ "id" : cn.id,
87
+ "tag" : cn.tagName,
88
+ "class" : cn.className,
89
+ "top" : cn.offsetTop,
90
+ "left" : cn.offsetLeft,
91
+ "visible" : dom_glancy.isVisible(cn)
92
+ }
93
+ nodeList.push(node_details);
94
+ }
95
+
96
+ return(nodeList);
97
+ },
98
+
99
+ isVisible: function(elem) {
100
+ return elem.offsetWidth > 0 || elem.offsetHeight > 0;
101
+ }
102
+ };
103
+ return dom_glancy.treeUp();
104
+ JS
105
+
106
+ resize_browser_for_scrollbar do
107
+ Capybara.current_session.driver.browser.execute_script(page_map_js)
108
+ end
109
+ end
110
+
111
+ def master_file_exists?(test_root)
112
+ filename = DomGlancy.master_filename(test_root)
113
+ result = File.exist?(filename)
114
+ msg = result ? '' : make_missing_master_failure_report(test_root)
115
+ [result, msg]
116
+ end
117
+
118
+ def make_missing_master_failure_report(test_root)
119
+ msg = ["\n------- DOM Comparison Failure ------"]
120
+ msg << "Master file does not exist. To make a new master from"
121
+ msg << "the current page, use this command:"
122
+ msg << "\t#{blessing_copy_string(test_root)}"
123
+ msg<< "-------------------------------------"
117
124
 
118
- filename_pattern = File.join(DomGlancy.diff_file_location, "#{test_root}__*__diff.yaml")
119
- Dir[filename_pattern].each { |file| file.delete(file) if File.exist?(file) }
125
+ msg.join("\n")
126
+ end
127
+
128
+ def purge_old_files_before_test(test_root)
129
+ File.delete DomGlancy.current_filename(test_root) if File.exist?(DomGlancy.current_filename(test_root))
130
+
131
+ filename_pattern = File.join(::DomGlancy.configuration.diff_file_location, "#{test_root}__*__diff.yaml")
132
+ Dir[filename_pattern].each { |file| file.delete(file) if File.exist?(file) }
133
+ end
120
134
  end
121
135
  end
@@ -0,0 +1,4 @@
1
+ module DomGlancy
2
+ class Engine < ::Rails::Engine
3
+ end
4
+ end
@@ -1,49 +1,16 @@
1
1
  module DomGlancy
2
+ class DomGlancy
2
3
 
3
- @master_file_location = nil
4
- @diff_file_location = nil
5
- @current_file_location = nil
4
+ def self.master_filename(test_root)
5
+ File.join(::DomGlancy.configuration.master_file_location, "#{test_root}_master.yaml")
6
+ end
6
7
 
7
- def self.master_file_location=(location)
8
- @master_file_location = location
9
- end
10
-
11
- def self.master_file_location
12
- @master_file_location
13
- end
14
-
15
- def self.diff_file_location=(location)
16
- @diff_file_location = location
17
- end
18
-
19
- def self.diff_file_location
20
- @diff_file_location
21
- end
22
-
23
- def self.current_file_location=(location)
24
- @current_file_location = location
25
- end
8
+ def self.current_filename(test_root)
9
+ File.join(::DomGlancy.configuration.current_file_location, "#{test_root}.yaml")
10
+ end
26
11
 
27
- def self.current_file_location
28
- @current_file_location
12
+ def self.diff_filename(test_root)
13
+ File.join(::DomGlancy.configuration.diff_file_location, "#{test_root}_diff.html")
14
+ end
29
15
  end
30
-
31
- def self.create_comparison_directories
32
- ::FileUtils.mkdir_p(@master_file_location)
33
- ::FileUtils.mkdir_p(@diff_file_location)
34
- ::FileUtils.mkdir_p(@current_file_location)
35
- end
36
-
37
- def self.master_filename(test_root)
38
- File.join(self.master_file_location, "#{test_root}_master.yaml")
39
- end
40
-
41
- def self.current_filename(test_root)
42
- File.join(self.current_file_location, "#{test_root}.yaml")
43
- end
44
-
45
- def self.diff_filename(test_root)
46
- File.join(self.diff_file_location, "#{test_root}_diff.html")
47
- end
48
-
49
16
  end
@@ -1,71 +1,73 @@
1
1
  module DomGlancy
2
+ class DomGlancy
3
+ def generate_svg(rectangles)
4
+ width, height = get_window_size_from_rectangles(rectangles)
5
+ s = svg_start(width, height)
2
6
 
3
- def generate_svg(rectangles)
4
- width, height = get_window_size_from_rectangles(rectangles)
5
- s = svg_start(width, height)
7
+ rectangles.each do |rectangle|
8
+ rectangle_string = " <rect id='#{rectangle[:js_id]}' x = '#{rectangle['left']}' y = '#{rectangle['top']}' width = '#{rectangle['width']}' height = '#{rectangle['height']}' fill = '#{rectangle[:fill]}' stroke = '#{rectangle[:stroke]}' stroke-width = '#{rectangle[:stroke_width]}' fill-opacity = '#{rectangle[:opacity]}' />\n"
9
+ s += rectangle_string
10
+ end
6
11
 
7
- rectangles.each do |rectangle|
8
- rectangle_string = " <rect id='#{rectangle[:js_id]}' x = '#{rectangle['left']}' y = '#{rectangle['top']}' width = '#{rectangle['width']}' height = '#{rectangle['height']}' fill = '#{rectangle[:fill]}' stroke = '#{rectangle[:stroke]}' stroke-width = '#{rectangle[:stroke_width]}' fill-opacity = '#{rectangle[:opacity]}' />\n"
9
- s += rectangle_string
12
+ s += svg_end
13
+ s += "\n"
10
14
  end
11
15
 
12
- s += svg_end
13
- s += "\n"
14
- end
16
+ def get_window_size_from_rectangles(rectangles)
17
+ width = 0
18
+ height = 0
15
19
 
16
- def get_window_size_from_rectangles(rectangles)
17
- width = 0
18
- height = 0
20
+ rectangles.each do |rectangle|
21
+ rectangle_right = rectangle['left'].to_i + rectangle['width'].to_i
22
+ rectangle_bottom = rectangle['top'].to_i + rectangle['height'].to_i
23
+ width = rectangle_right if rectangle_right > width
24
+ height = rectangle_bottom if rectangle_bottom > height
25
+ end
19
26
 
20
- rectangles.each do |rectangle|
21
- rectangle_right = rectangle['left'].to_i + rectangle['width'].to_i
22
- rectangle_bottom = rectangle['top'].to_i + rectangle['height'].to_i
23
- width = rectangle_right if rectangle_right > width
24
- height = rectangle_bottom if rectangle_bottom > height
27
+ [width, height]
25
28
  end
26
29
 
27
- [width, height]
28
- end
29
-
30
- def svg_start(width, height)
31
- s = ["<?xml version='1.0' standalone='no'?>"]
32
- s << " <!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>"
33
- s << " <svg version = '1.1' width='#{width}px' height='#{height}px' border='2px' style='background-color:#FFFFFF;border:1px solid black;'>"
34
- s << ''
30
+ def svg_start(width, height)
31
+ s = ["<?xml version='1.0' standalone='no'?>"]
32
+ s << " <!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>"
33
+ s << " <svg version = '1.1' width='#{width}px' height='#{height}px' border='2px' style='background-color:#FFFFFF;border:1px solid black;'>"
34
+ s << ''
35
35
 
36
- s.join("\n")
37
- end
36
+ s.join("\n")
37
+ end
38
38
 
39
- def svg_end
40
- s = [' </svg>']
41
- s << ''
39
+ def svg_end
40
+ s = [' </svg>']
41
+ s << ''
42
42
 
43
- s.join("\n")
44
- end
43
+ s.join("\n")
44
+ end
45
45
 
46
- def format__not_in_master
47
- {
46
+ def format__not_in_master
47
+ {
48
48
  :stroke => 'blue',
49
49
  :fill => 'white',
50
50
  :stroke_width => '1',
51
51
  :opacity => '0.5'
52
- }
53
- end
52
+ }
53
+ end
54
54
 
55
- def format__not_in_current
56
- {
55
+ def format__not_in_current
56
+ {
57
57
  :stroke => 'red',
58
58
  :fill => 'white',
59
59
  :stroke_width => '1',
60
60
  :opacity => '0.5'
61
- }
62
- end
63
- def format__same_but_different
64
- {
61
+ }
62
+ end
63
+
64
+ def format__same_but_different
65
+ {
65
66
  :stroke => 'orange',
66
67
  :fill => 'white',
67
68
  :stroke_width => '1',
68
69
  :opacity => '0.5'
69
- }
70
+ }
71
+ end
70
72
  end
71
73
  end
@@ -1,3 +1,3 @@
1
1
  module DomGlancy
2
- VERSION = '0.1.0'.freeze
2
+ VERSION = '1.0.0'.freeze
3
3
  end
data/lib/dom_glancy.rb CHANGED
@@ -1,7 +1,11 @@
1
- require 'dom_glancy/rails/engine' if defined?(Rails)
1
+ require 'kramdown'
2
+ require 'capybara'
3
+
4
+ require 'dom_glancy/engine' if defined?(Rails)
2
5
  require 'dom_glancy/dom_glancy'
3
6
  require 'dom_glancy/version'
4
7
  require 'dom_glancy/element'
5
8
  require 'dom_glancy/analysis'
6
9
  require 'dom_glancy/locations'
7
10
  require 'dom_glancy/svg'
11
+ require 'dom_glancy/configuration'
@@ -1,13 +1,13 @@
1
1
  require 'selenium_test_helper'
2
2
 
3
- class MappingTest < DomGlancy::SeleniumTestCase
3
+ class MappingTest < SeleniumTestCase
4
4
 
5
5
  def test_full_mapping__same
6
6
  visit_index
7
7
 
8
8
  map_current_page_and_save_as_master('dom_glancy_index')
9
9
 
10
- same, msg = page_map_same?('dom_glancy_index')
10
+ same, msg = @dom_glancy.page_map_same?('dom_glancy_index')
11
11
 
12
12
  assert same, msg
13
13
  assert_artifacts_on_same('dom_glancy_index')
@@ -15,7 +15,7 @@ class MappingTest < DomGlancy::SeleniumTestCase
15
15
 
16
16
  def test_mapping__no_master
17
17
  visit_index
18
- same, msg = page_map_same?('poop')
18
+ same, msg = @dom_glancy.page_map_same?('poop')
19
19
  refute same, msg
20
20
  assert_match 'Master file does not exist', msg, 'the missing master error message'
21
21
  end
@@ -27,14 +27,14 @@ class MappingTest < DomGlancy::SeleniumTestCase
27
27
 
28
28
  add_centered_element('Back In Black')
29
29
 
30
- same, msg = page_map_same?('dom_glancy_index')
30
+ same, msg = @dom_glancy.page_map_same?('dom_glancy_index')
31
31
 
32
32
  refute same, msg
33
33
 
34
34
  index_page = visit_index
35
35
 
36
36
  assert_equal 1, index_page.files.count, 'number of difference files'
37
- assert_match 'dom_glancy_index_diff.html', index_page.files.first.text, 'file name displayed'
37
+ assert_match 'dom_glancy_index', index_page.files.first.text, 'file name displayed'
38
38
 
39
39
  index_page.files.first.find('a').click
40
40
  show_page = PageObjects::DomGlancy::ShowPage.new
@@ -56,21 +56,21 @@ class MappingTest < DomGlancy::SeleniumTestCase
56
56
 
57
57
  remove_about_element
58
58
 
59
- same, msg = page_map_same?('dom_glancy_index')
59
+ same, msg = @dom_glancy.page_map_same?('dom_glancy_index')
60
60
 
61
61
  refute same, msg
62
62
 
63
63
  index_page = visit_index
64
64
 
65
65
  assert_equal 1, index_page.files.count, 'number of difference files'
66
- assert_match 'dom_glancy_index_diff.html', index_page.files.first.text, 'file name displayed'
66
+ assert_match 'dom_glancy_index', index_page.files.first.text, 'file name displayed'
67
67
 
68
68
  index_page.files.first.find('a').click
69
69
  show_page = PageObjects::DomGlancy::ShowPage.new
70
70
 
71
- assert_equal 0, show_page.not_master.count, 'elements listed as not in master'
72
- assert_equal 7, show_page.not_current.count, 'elements listed as not in current'
73
- assert_equal 5, show_page.changed.count, 'elements listed as changed'
71
+ assert_equal 0, show_page.not_master.count, 'elements listed as not in master'
72
+ assert_equal 7, show_page.not_current.count, 'elements listed as not in current'
73
+ assert_equal 11, show_page.changed.count, 'elements listed as changed'
74
74
 
75
75
  assert_artifacts_on_difference('dom_glancy_index')
76
76
 
@@ -83,7 +83,7 @@ class MappingTest < DomGlancy::SeleniumTestCase
83
83
 
84
84
  map_current_page_and_save_as_master('test_page')
85
85
 
86
- same, msg = page_map_same?('test_page')
86
+ same, msg = @dom_glancy.page_map_same?('test_page')
87
87
 
88
88
  assert same, msg
89
89
 
@@ -101,7 +101,7 @@ class MappingTest < DomGlancy::SeleniumTestCase
101
101
 
102
102
  resize_browser(w, h)
103
103
 
104
- same, msg = page_map_same?('test_page')
104
+ same, msg = @dom_glancy.page_map_same?('test_page')
105
105
 
106
106
  refute same, msg
107
107
 
@@ -111,8 +111,8 @@ class MappingTest < DomGlancy::SeleniumTestCase
111
111
  private
112
112
 
113
113
  def map_current_page_and_save_as_master(test_root)
114
- map_data = perform_mapping_operation
115
- File.open(DomGlancy.master_filename(test_root), 'w') { |file| file.write(map_data.to_yaml) }
114
+ map_data = @dom_glancy.perform_mapping_operation
115
+ File.open(DomGlancy::DomGlancy.master_filename(test_root), 'w') { |file| file.write(map_data.to_yaml) }
116
116
  end
117
117
 
118
118
  end
@@ -1,26 +1,21 @@
1
1
  require 'selenium_test_helper'
2
2
 
3
- class ViewerTest < DomGlancy::SeleniumTestCase
3
+ class ViewerTest < SeleniumTestCase
4
4
 
5
5
  def test_navigation
6
6
  index_page = visit_index
7
7
  config_page = index_page.navigation.config!
8
8
 
9
- assert_equal DomGlancy.master_file_location.to_s, config_page.master, 'master file location'
10
- assert_equal DomGlancy.current_file_location.to_s, config_page.current, 'current file location'
11
- assert_equal DomGlancy.diff_file_location.to_s, config_page.diffs, 'difference file location'
9
+ assert_equal DomGlancy.configuration.master_file_location.to_s, config_page.master, 'master file location'
10
+ assert_equal DomGlancy.configuration.current_file_location.to_s, config_page.current, 'current file location'
11
+ assert_equal DomGlancy.configuration.diff_file_location.to_s, config_page.diffs, 'difference file location'
12
12
 
13
13
  new_page = config_page.navigation.new_page!
14
14
  assert page.has_content?('do not have a corresponding master file in the expected file location'), 'new masters page content.'
15
15
 
16
- # Don't have TeamCity integration right now.
17
- # artifacts_page = new_page.navigation.artifacts!
18
- # assert page.has_content?('TeamCity Artifacts'), 'artifacts page needs some content.'
19
-
20
16
  about_page = new_page.navigation.about!
21
17
  assert page.has_content?('Add this line to your'), 'about page line from README.md'
22
18
 
23
19
  index_page = about_page.navigation.home!
24
20
  end
25
-
26
21
  end