cucumber-in-the-yard 1.7.2 → 1.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +12 -0
- data/README.md +22 -0
- data/example/child_feature/child.feature +11 -0
- data/example/child_feature/grandchild_feature/grandchild.feature +12 -0
- data/example/scenario.feature +23 -13
- data/example/scenario_outline.feature +26 -6
- data/lib/city.rb +1 -1
- data/lib/cucumber/city_builder.rb +2 -2
- data/lib/templates/default/feature/html/feature.erb +24 -18
- data/lib/templates/default/feature/html/outline.erb +21 -6
- data/lib/templates/default/feature/html/pystring.erb +1 -1
- data/lib/templates/default/feature/html/scenario.erb +3 -2
- data/lib/templates/default/feature/html/steps.erb +1 -1
- data/lib/templates/default/feature/setup.rb +4 -0
- data/lib/templates/default/featuredirectory/html/setup.rb +1 -0
- data/lib/templates/default/featuretags/html/namespace.erb +68 -34
- data/lib/templates/default/featuretags/html/setup.rb +4 -3
- data/lib/templates/default/fulldoc/html/css/common.css +40 -25
- data/lib/templates/default/fulldoc/html/full_list.erb +2 -0
- data/lib/templates/default/fulldoc/html/js/cucumber.js +60 -32
- data/lib/templates/default/fulldoc/html/setup.rb +1 -1
- data/lib/templates/default/requirements/html/setup.rb +3 -0
- data/lib/templates/default/steptransformers/html/header.erb +5 -5
- data/lib/templates/default/steptransformers/html/transformers.erb +55 -49
- data/lib/templates/default/steptransformers/html/undefined_steps.erb +12 -6
- data/lib/templates/default/steptransformers/setup.rb +6 -0
- data/lib/yard/code_objects/cucumber/feature.rb +2 -2
- data/lib/yard/code_objects/cucumber/scenario_outline.rb +6 -1
- metadata +16 -10
- data/example/child_feature/grandchild_feature/scenario.feature +0 -52
- data/example/child_feature/scenario.feature +0 -57
data/History.txt
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
=== 1.7.3 / 2010-12-06
|
2
|
+
|
3
|
+
* Shortcut Keys (t) for tags and (r) for features (f was taken)
|
4
|
+
* Step definitions/transforms consolidate steps for easier viewing
|
5
|
+
and when they have no steps they are colored differently
|
6
|
+
* Tag filtering supports inverse (~) of tags
|
7
|
+
|
8
|
+
* FIX Scenario Outlines without examples will not crash the parser
|
9
|
+
* FIX Features, Scenarios, and Directories should display in alphabetic order
|
10
|
+
* FIX Comments and multiline strings will display correctly
|
11
|
+
* FIX Feature comments will show
|
12
|
+
|
1
13
|
=== 1.7.2 / 2010-11-30
|
2
14
|
|
3
15
|
* Step Definition and Transform page enhancements
|
data/README.md
CHANGED
@@ -108,7 +108,29 @@ scale to test the functionality of small software component. Though, ultimately
|
|
108
108
|
functionality may provide a valuable tool for many as I feel it helps more solidly bridge the reporting of
|
109
109
|
the documentation by putting a coat of paint on it.
|
110
110
|
|
111
|
+
|
112
|
+
Short Term Goals
|
113
|
+
----------------
|
114
|
+
|
115
|
+
1. Add the features listing to the index.html
|
116
|
+
2. The landing page for 'All features' should be requirements landing page.
|
117
|
+
3. 'All Features' takes you to all the features.
|
118
|
+
* represent the file structure in a file structure way and change
|
119
|
+
the subtitle 'subdirectories' to 'features by directory' and
|
120
|
+
show the directory headings with the features within them
|
121
|
+
6. Provide readme.md markdown support within each of the feature subdirectories
|
122
|
+
7. Tag filering
|
123
|
+
* create and provide a video link of how to filter
|
124
|
+
* allow you to remove tag elements visually with the mouse click
|
125
|
+
* provide a copy to clipboard for the command line execution
|
126
|
+
8. Step Transformers
|
127
|
+
* provide copy to clipboard
|
128
|
+
* Think of a way to illustrate that a step has a transform being applied
|
129
|
+
9. Feature Directory
|
130
|
+
* Layout of the subdirectories should be more directory like and provide more information
|
111
131
|
Roadmap
|
132
|
+
* Parent directories of directories contain no feature/scenario/tags statistics
|
133
|
+
|
112
134
|
-------
|
113
135
|
|
114
136
|
**Future Feature Ideas**
|
@@ -0,0 +1,11 @@
|
|
1
|
+
@scenarios
|
2
|
+
Feature: Child Feature
|
3
|
+
As a reader of the documentation I expect that scenario are documented correctly
|
4
|
+
|
5
|
+
Background:
|
6
|
+
Given this background step
|
7
|
+
|
8
|
+
Scenario: Child Scenario
|
9
|
+
Given this first step
|
10
|
+
When this second step
|
11
|
+
Then this third step
|
@@ -0,0 +1,12 @@
|
|
1
|
+
@scenarios
|
2
|
+
Feature: Grandchild Feature
|
3
|
+
As a reader of the documentation I expect that scenario are documented correctly
|
4
|
+
|
5
|
+
Background:
|
6
|
+
Given this background step
|
7
|
+
|
8
|
+
@first
|
9
|
+
Scenario: Grandchild Scenario
|
10
|
+
Given this first step
|
11
|
+
When this second step
|
12
|
+
Then this third step
|
data/example/scenario.feature
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# Comments that appear before the feature are associated with the feature
|
2
|
+
@scenarios
|
3
|
+
Feature: Displaying Scenarios
|
3
4
|
As a reader of the documentation I expect that scenario are documented correctly
|
4
|
-
|
5
|
+
|
6
|
+
# Comments after the feature description belong to the background or first scenario
|
5
7
|
Background:
|
6
8
|
Given this background step
|
7
9
|
|
@@ -11,9 +13,9 @@ Feature: Scenario
|
|
11
13
|
@second
|
12
14
|
Scenario: Scenario With Steps
|
13
15
|
Given this first step
|
14
|
-
|
15
|
-
|
16
|
-
|
16
|
+
When this second step
|
17
|
+
Then this third step
|
18
|
+
|
17
19
|
@third @optional_parameters
|
18
20
|
Scenario: Optional Parameter Step Definition
|
19
21
|
# This step definition has some optional parameters
|
@@ -35,17 +37,25 @@ Feature: Scenario
|
|
35
37
|
@sixth @text
|
36
38
|
Scenario: Scenario With Text
|
37
39
|
Given the following text:
|
38
|
-
|
39
|
-
|
40
|
-
|
40
|
+
"""
|
41
|
+
Oh what a bother!
|
42
|
+
That this text has to take up two lines
|
43
|
+
"""
|
41
44
|
|
45
|
+
# Comments before the scenario
|
42
46
|
@seventh @comments
|
43
|
-
Scenario: Scenario with comments and
|
44
|
-
|
45
|
-
|
47
|
+
Scenario: Scenario with comments and a description
|
48
|
+
There once was a need for information to be displayed alongside all the
|
49
|
+
entities that I hoped to test
|
46
50
|
# First Comment
|
47
51
|
Given this first step
|
48
|
-
# Second Comment
|
52
|
+
# Second Comment that
|
53
|
+
# spans a few lines
|
49
54
|
And this second step
|
50
55
|
# Third Comment
|
51
56
|
And this third step
|
57
|
+
# Comments after the last step, where do they go?
|
58
|
+
|
59
|
+
Scenario: Step ending with a match with double-quotes
|
60
|
+
When searching the log for the exact match of the message "Entering application."
|
61
|
+
When the step definition has HTML escaped characters like: "<>&"
|
@@ -1,5 +1,5 @@
|
|
1
1
|
@scenario_outlines @bvt
|
2
|
-
Feature: Scenario
|
2
|
+
Feature: Displaying Scenario Outlines
|
3
3
|
As a reader of the documentation I expect that scenario outlines are documented correctly
|
4
4
|
|
5
5
|
@first
|
@@ -22,7 +22,7 @@ Feature: Scenario Outline
|
|
22
22
|
The <noun> jumped over the <place>
|
23
23
|
"""
|
24
24
|
When I click on an example row
|
25
|
-
|
25
|
+
Then I expect <noun> to be replaced by the example noun
|
26
26
|
And I expect <place> to be replaced by the example place
|
27
27
|
|
28
28
|
Examples:
|
@@ -36,7 +36,7 @@ Feature: Scenario Outline
|
|
36
36
|
| name | price | quantity |
|
37
37
|
| <name> | <price> | 100000 |
|
38
38
|
When I click on an example row
|
39
|
-
|
39
|
+
Then I expect <name> to be replaced by the example name
|
40
40
|
And I expect <price> to be replaced by the example price
|
41
41
|
|
42
42
|
Examples:
|
@@ -49,12 +49,32 @@ Feature: Scenario Outline
|
|
49
49
|
Given the following table:
|
50
50
|
| name | <denomination> | quantity |
|
51
51
|
| <name> | <price> | 100000 |
|
52
|
-
|
53
|
-
|
52
|
+
When I click on an example row
|
53
|
+
Then I expect <name> to be replaced by the example name
|
54
54
|
And I expect <price> to be replaced by the example price
|
55
55
|
And I expect <denomination> to be replaced by the example denomination
|
56
56
|
|
57
57
|
Examples:
|
58
58
|
| name | price | denomination |
|
59
59
|
| toy | 99 | cost in euros |
|
60
|
-
| game | 49 | cost in dollars |
|
60
|
+
| game | 49 | cost in dollars |
|
61
|
+
|
62
|
+
# This is an example of a scenario outline in development.
|
63
|
+
# The example table has not been defined yet
|
64
|
+
Scenario Outline: Example Table Missing
|
65
|
+
When I click on an example row
|
66
|
+
Then I expect <name> to be replaced by the example name
|
67
|
+
And I expect <price> to be replaced by the example price
|
68
|
+
And I expect <denomination> to be replaced by the example denomination
|
69
|
+
|
70
|
+
|
71
|
+
# This is an example of a scenario outline in development.
|
72
|
+
# The examples table has been defined, but is missing data.
|
73
|
+
Scenario Outline: Empty Example Table
|
74
|
+
When I click on an example row
|
75
|
+
Then I expect <name> to be replaced by the example name
|
76
|
+
And I expect <price> to be replaced by the example price
|
77
|
+
And I expect <denomination> to be replaced by the example denomination
|
78
|
+
|
79
|
+
Examples:
|
80
|
+
| name | price | denomination |
|
data/lib/city.rb
CHANGED
@@ -3,7 +3,7 @@ require 'gherkin/parser/parser'
|
|
3
3
|
require 'gherkin/formatter/tag_count_formatter'
|
4
4
|
|
5
5
|
module CucumberInTheYARD
|
6
|
-
VERSION = '1.7.
|
6
|
+
VERSION = '1.7.3' unless defined?(CucumberInTheYARD::VERSION)
|
7
7
|
end
|
8
8
|
|
9
9
|
require File.dirname(__FILE__) + "/yard/code_objects/cucumber/base.rb"
|
@@ -15,7 +15,6 @@ module Cucumber
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def find_or_create_namespace(file)
|
18
|
-
# TODO: The directory that is added should have the full path
|
19
18
|
file.split('/')[0..-2].each do |directory|
|
20
19
|
@namespace = @namespace.children.find {|child| child.name == directory } ||
|
21
20
|
YARD::CodeObjects::Cucumber::FeatureDirectory.new(@namespace,directory) {|dir| dir.add_file(directory)}
|
@@ -101,7 +100,7 @@ module Cucumber
|
|
101
100
|
end
|
102
101
|
|
103
102
|
def examples(examples)
|
104
|
-
#log.debug "EXAMPLES
|
103
|
+
#log.debug "EXAMPLES"
|
105
104
|
|
106
105
|
@step_container.examples = { :keyword => examples.keyword,
|
107
106
|
:name => examples.name,
|
@@ -132,6 +131,7 @@ module Cucumber
|
|
132
131
|
end
|
133
132
|
|
134
133
|
@step_container.example_values_for_row(row_index).each do |key,text|
|
134
|
+
text ||= "" #handle empty cells in the example table
|
135
135
|
step_instance.value.gsub!("<#{key}>",text)
|
136
136
|
step_instance.text.gsub!("<#{key}>",text) if step_instance.has_text?
|
137
137
|
step_instance.table.each{|row| row.each{|col| col.gsub!("<#{key}>",text)}} if step_instance.has_table?
|
@@ -1,32 +1,38 @@
|
|
1
1
|
<script type="text/javascript" charset="utf-8">
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
$(function() {
|
3
|
+
$(".developer").hide();
|
4
|
+
});
|
5
5
|
</script>
|
6
6
|
|
7
7
|
<div class="feature">
|
8
8
|
<div class="title">
|
9
|
+
<a id="view" class="control" href="#">[More Detail]</a>
|
10
|
+
<a id="expand" class="control" href="#">[Collapse All]</a>
|
11
|
+
<div style="clear: right;"></div>
|
9
12
|
<span class="pre"><%= @feature.keyword %>:</span>
|
10
13
|
<span class="name"><%= @feature.value %></span>
|
14
|
+
</div>
|
11
15
|
|
12
|
-
|
13
|
-
|
14
|
-
|
16
|
+
<% if @feature.comments.length > 0 %>
|
17
|
+
<div class="comments developer">
|
18
|
+
<%= htmlify_with_newlines @feature.comments %>
|
19
|
+
</div>
|
20
|
+
<% end %>
|
15
21
|
|
16
|
-
<div class="
|
17
|
-
|
18
|
-
<div style="clear: right;"></div>
|
19
|
-
<div class="tags developer">
|
20
|
-
<% @feature.tags.each do |tag| %>
|
21
|
-
<a href="<%= url_for tag %>"><%= tag.value %></a>
|
22
|
-
<% end %>
|
22
|
+
<div class="description">
|
23
|
+
<%= htmlify_with_newlines @feature.description %>
|
23
24
|
</div>
|
24
|
-
</div>
|
25
25
|
|
26
|
-
<div class="
|
27
|
-
|
28
|
-
|
26
|
+
<div class="meta">
|
27
|
+
<div class="file developer"><%= h(@feature.file) %></div>
|
28
|
+
<div style="clear: right;"></div>
|
29
|
+
<div class="tags developer">
|
30
|
+
<% @feature.tags.each do |tag| %>
|
31
|
+
<a href="<%= url_for tag %>"><%= tag.value %></a>
|
32
|
+
<% end %>
|
33
|
+
</div>
|
34
|
+
</div>
|
29
35
|
|
30
|
-
<%= yieldall %>
|
36
|
+
<%= yieldall %>
|
31
37
|
</div>
|
32
38
|
|
@@ -7,7 +7,9 @@
|
|
7
7
|
<% end %>
|
8
8
|
|
9
9
|
<div class="outline">
|
10
|
-
|
10
|
+
|
11
|
+
<% if @scenario.examples? %>
|
12
|
+
<div class="keyword"> <%= h @scenario.example_keyword %></div>
|
11
13
|
<table>
|
12
14
|
<thead>
|
13
15
|
<tr>
|
@@ -16,12 +18,25 @@
|
|
16
18
|
<% end %>
|
17
19
|
</tr>
|
18
20
|
</thead>
|
19
|
-
<% @scenario.example_data.
|
20
|
-
|
21
|
-
|
22
|
-
|
21
|
+
<% unless @scenario.example_data.empty? %>
|
22
|
+
<% @scenario.example_data.each_with_index do |row,row_index| %>
|
23
|
+
<tr class="<%= (row_index + 1) % 2 == 0 ? "even example#{row_index +1}" : "odd example#{row_index +1}" %>">
|
24
|
+
<% row.each_with_index do |column,column_index| %>
|
25
|
+
<td><%= h(column.to_s.strip) %></td>
|
26
|
+
<% end %>
|
27
|
+
</tr>
|
23
28
|
<% end %>
|
24
|
-
|
29
|
+
<% else %>
|
30
|
+
<!-- Scenario Outline example table is empty -->
|
31
|
+
<tr class="odd">
|
32
|
+
<td colspan="<%= @scenario.example_headers.length %>" style="text-align: center;">
|
33
|
+
No Examples Defined
|
34
|
+
</td>
|
35
|
+
</tr>
|
25
36
|
<% end %>
|
26
37
|
</table>
|
38
|
+
<% else %>
|
39
|
+
<div class="keyword">No Example Table Defined</div>
|
40
|
+
<div class="keyword suggestion developer">[!] Did you mean to create a Scenario?</div>
|
41
|
+
<% end %>
|
27
42
|
</div>
|
@@ -4,17 +4,18 @@
|
|
4
4
|
<a class="toggle"> - </a>
|
5
5
|
<span class="pre"><%= @scenario.keyword %>:</span>
|
6
6
|
<span class="name"><%= h @scenario.value %></span>
|
7
|
+
<a style="float:right; clear:right;" href="<% url_for(@scenario.feature,"scenario#{@id}") %>">link</a>
|
7
8
|
</div>
|
8
9
|
|
9
10
|
<% if @scenario.description.length > 0 %>
|
10
11
|
<div class="description">
|
11
|
-
<%=
|
12
|
+
<%= htmlify_with_newlines @scenario.description %>
|
12
13
|
</div>
|
13
14
|
<% end %>
|
14
15
|
|
15
16
|
<% if @scenario.comments.length > 0 %>
|
16
17
|
<div class="comments developer">
|
17
|
-
<%=
|
18
|
+
<%= htmlify_with_newlines @scenario.comments %>
|
18
19
|
</div>
|
19
20
|
<% end %>
|
20
21
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<% @step = step %>
|
3
3
|
|
4
4
|
<% if step.comments && step.comments.length > 0 %>
|
5
|
-
<div class="comments developer"><%=
|
5
|
+
<div class="comments developer"><%= htmlify_with_newlines step.comments %></div>
|
6
6
|
<% end %>
|
7
7
|
<div class="step <%= (index + 1) % 2 == 0 ? 'even' : 'odd' %>">
|
8
8
|
<span class="predicate"><%= step.keyword %></span>
|
@@ -15,6 +15,7 @@ def all_types_by_letter(type)
|
|
15
15
|
objects = @directory.children.find_all {|child| child.is_a?(type) }
|
16
16
|
objects = run_verifier(objects)
|
17
17
|
objects.each {|o| (hash[o.value.to_s[0,1].upcase] ||= []) << o }
|
18
|
+
hash.values.each {|v| v.sort! {|a,b| b.value.to_s <=> a.value.to_s } }
|
18
19
|
hash
|
19
20
|
end
|
20
21
|
|
@@ -4,6 +4,23 @@
|
|
4
4
|
var tag_list = [ <%= tags.collect{|t| "'#{t.value}'" }.join(',') %> ];
|
5
5
|
|
6
6
|
$(function() {
|
7
|
+
|
8
|
+
// On focus, remove all the shortcut keys
|
9
|
+
$("#tag_search").focus(function() {
|
10
|
+
$(document).unbind('keypress');
|
11
|
+
});
|
12
|
+
|
13
|
+
// On blur, return all the shortcut keys
|
14
|
+
$("#tag_search").blur(function() {
|
15
|
+
$(document).bind('keypress',keyboardShortcuts);
|
16
|
+
$(document).bind('keypress',cucumberKeyboardShortcuts);
|
17
|
+
});
|
18
|
+
|
19
|
+
$("#tag_search").keyup(function(evt) {
|
20
|
+
updateTagFiltering($("#tag_search")[0].value);
|
21
|
+
});
|
22
|
+
|
23
|
+
|
7
24
|
$("#tag_search").keyup(function(evt) {
|
8
25
|
updateTagFiltering($("#tag_search")[0].value);
|
9
26
|
});
|
@@ -11,15 +28,29 @@
|
|
11
28
|
$(".tag").click(function(evt) {
|
12
29
|
if (typeof evt !== "undefined") {
|
13
30
|
|
14
|
-
if (evt.
|
31
|
+
if (evt.shiftKey === true) {
|
15
32
|
window.location = $(this).attr("href");
|
16
|
-
|
17
|
-
|
18
|
-
|
33
|
+
return true;
|
34
|
+
}
|
35
|
+
|
36
|
+
var tagSearchElement = $("#tag_search")[0];
|
37
|
+
|
38
|
+
var tagToAdd = this.innerHTML;
|
39
|
+
var tagModifer = "";
|
40
|
+
|
41
|
+
if (evt.altKey === true ) {
|
42
|
+
tagToAdd = "~" + tagToAdd;
|
43
|
+
}
|
44
|
+
|
45
|
+
if (evt.ctrlKey === true ) {
|
46
|
+
tagModifier = ",";
|
19
47
|
} else {
|
20
|
-
|
21
|
-
updateTagFiltering($("#tag_search")[0].value);
|
48
|
+
tagModifier = " ";
|
22
49
|
}
|
50
|
+
|
51
|
+
tagSearchElement.value = (tagSearchElement.value != "" ? tagSearchElement.value + tagModifier : "") + tagToAdd;
|
52
|
+
updateTagFiltering(tagSearchElement.value);
|
53
|
+
|
23
54
|
}
|
24
55
|
});
|
25
56
|
});
|
@@ -30,16 +61,19 @@
|
|
30
61
|
</div>
|
31
62
|
|
32
63
|
<div id="tag_filtering" >
|
33
|
-
<span>Tag Filtering <a href="https://github.com/aslakhellesoy/cucumber/wiki/Tags" target="_blank">?</a></span>
|
64
|
+
<span style="font-size: 18px;">Tag Filtering <a href="https://github.com/aslakhellesoy/cucumber/wiki/Tags" target="_blank">?</a></span>
|
34
65
|
|
35
66
|
<div style="clear: both"></div>
|
36
67
|
|
37
|
-
<div style="float: left; margin-top: 10px; font-size: 10px; font-style: italic;">
|
38
|
-
|
68
|
+
<div style="float: left; margin-top: 10px; padding-left: 5px; line-height: 1.5; font-size: 10px; font-style: italic;">
|
69
|
+
Type in tags with spaces between to 'AND' and commas between to 'OR'<br/>
|
70
|
+
LEFT CLICK to AND tags; CTRL+LEFT CLICK to OR tags; hold ALT for inverse (~) tags
|
39
71
|
</div>
|
40
72
|
|
73
|
+
<div style="clear: both;"></div>
|
74
|
+
|
41
75
|
<div style="float: right;">
|
42
|
-
<a href="" onclick="
|
76
|
+
<a href="#" onclick="clearTagFiltering(); $('#tag_search')[0].value = ''; return true;">clear</a>
|
43
77
|
</div>
|
44
78
|
|
45
79
|
<div style="clear: both"></div>
|
@@ -58,37 +92,37 @@
|
|
58
92
|
<span class="name">Features</span>
|
59
93
|
</div>
|
60
94
|
<% n = 1 %>
|
95
|
+
<ul style="padding-left: 0px;">
|
61
96
|
<% features.each do |feature| %>
|
62
|
-
<li class="feature
|
97
|
+
<li class="feature <%= n % 2 == 0 ? 'even' : 'odd' %> <%= feature.tags.collect {|t| t.value}.join(" ") %>">
|
63
98
|
<%= linkify feature, feature.value %>
|
64
|
-
<%
|
65
|
-
<% if
|
66
|
-
|
99
|
+
<% ftags = feature.tags.collect{|t| tagify(t) }.join(", ") %>
|
100
|
+
<% if ftags && ftags != "" %>
|
101
|
+
- <small><%= ftags %></small>
|
67
102
|
<% end %>
|
68
103
|
</li>
|
69
104
|
<% n = n == 2 ? 1 : 2 %>
|
105
|
+
<% if feature.scenarios %>
|
106
|
+
<ul style="padding-left: 20px;">
|
107
|
+
<% feature.scenarios.each do |scenario| %>
|
108
|
+
<li class="scenario <%= n % 2 == 0 ? 'even' : 'odd' %> <%= feature.tags.collect{|t| t.value }.join(" ") %> <%= scenario.tags.collect{|t| t.value }.join(" ") %>">
|
109
|
+
<span class='object_link'>
|
110
|
+
<a href="<%= url_for(scenario.feature,"scenario#{scenario.feature.scenarios.index(scenario) }") %>">
|
111
|
+
<%= h scenario.value %>
|
112
|
+
</a>
|
113
|
+
</span>
|
114
|
+
<% stags = scenario.tags.collect{|t| tagify(t) }.join(", ") %>
|
115
|
+
<% if stags && stags != "" %>
|
116
|
+
- <small><%= stags %></small>
|
117
|
+
<% end %>
|
118
|
+
</li>
|
119
|
+
<% n = n == 2 ? 1 : 2 %>
|
120
|
+
<% end %>
|
121
|
+
</ul>
|
70
122
|
<% end %>
|
71
|
-
</div>
|
72
|
-
|
73
|
-
<div id="scenarios">
|
74
|
-
<div class="title">
|
75
|
-
<span class="name">Scenarios</span>
|
76
|
-
</div>
|
77
|
-
<% n = 1 %>
|
78
|
-
<% scenarios.each_with_index do |scenario,index| %>
|
79
|
-
<li class="scenario r<%= n %> <%= scenario.tags.collect{|t| t.value }.join(" ") %>">
|
80
|
-
<span class='object_link'>
|
81
|
-
<a href="<%= url_for(scenario.feature,"scenario#{scenario.feature.scenarios.index(scenario) }") %>">
|
82
|
-
<%= h scenario.value %>
|
83
|
-
</a>
|
84
|
-
</span>
|
85
|
-
<% itags = scenario.tags.collect{|t| tagify(t) }.join(", ") %>
|
86
|
-
<% if itags && itags != "" %>
|
87
|
-
- <small><%= itags %></small>
|
88
|
-
<% end %>
|
89
|
-
</li>
|
90
|
-
<% n = n == 2 ? 1 : 2 %>
|
91
123
|
<% end %>
|
124
|
+
</ul>
|
125
|
+
<div class="undefined" style="display:none;">No Features or Scenarios match the Tag Expression</div>
|
92
126
|
</div>
|
93
127
|
|
94
128
|
</div>
|