spectie 0.0.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.
Files changed (58) hide show
  1. data/LICENSE +21 -0
  2. data/README.rdoc +85 -0
  3. data/Rakefile +8 -0
  4. data/VERSION.yml +4 -0
  5. data/initialize.rb +6 -0
  6. data/lib/spectie.rb +3 -0
  7. data/lib/spectie/configuration.rb +10 -0
  8. data/lib/spectie/main.rb +26 -0
  9. data/lib/spectie/rails.rb +2 -0
  10. data/lib/spectie/rails_story_example_group.rb +55 -0
  11. data/lib/spectie/selenium.rb +3 -0
  12. data/lib/spectie/selenium/configuration.rb +27 -0
  13. data/lib/spectie/selenium/story_example_group.rb +51 -0
  14. data/lib/spectie/story_example_group_methods.rb +40 -0
  15. data/rake_tasks/package.rake +51 -0
  16. data/rake_tasks/publish.rake +40 -0
  17. data/rake_tasks/spec.rake +42 -0
  18. data/rake_tasks/utility.rake +11 -0
  19. data/rdoc/classes/Spectie.html +135 -0
  20. data/rdoc/classes/Spectie/Configuration.html +175 -0
  21. data/rdoc/classes/Spectie/Configuration/ForScenarios.html +111 -0
  22. data/rdoc/classes/Spectie/Configuration/Selenium.html +220 -0
  23. data/rdoc/classes/Spectie/Main.html +161 -0
  24. data/rdoc/classes/Spectie/RailsStoryExampleGroup.html +118 -0
  25. data/rdoc/classes/Spectie/SeleniumStoryExampleGroup.html +119 -0
  26. data/rdoc/classes/Spectie/StoryExampleGroupMethods.html +254 -0
  27. data/rdoc/created.rid +1 -0
  28. data/rdoc/files/README_rdoc.html +266 -0
  29. data/rdoc/files/lib/spectie/configuration_rb.html +101 -0
  30. data/rdoc/files/lib/spectie/main_rb.html +108 -0
  31. data/rdoc/files/lib/spectie/rails_rb.html +109 -0
  32. data/rdoc/files/lib/spectie/rails_story_example_group_rb.html +182 -0
  33. data/rdoc/files/lib/spectie/selenium/configuration_rb.html +101 -0
  34. data/rdoc/files/lib/spectie/selenium/story_example_group_rb.html +101 -0
  35. data/rdoc/files/lib/spectie/selenium_rb.html +110 -0
  36. data/rdoc/files/lib/spectie/story_example_group_methods_rb.html +101 -0
  37. data/rdoc/files/lib/spectie_rb.html +110 -0
  38. data/rdoc/fr_class_index.html +34 -0
  39. data/rdoc/fr_file_index.html +36 -0
  40. data/rdoc/fr_method_index.html +38 -0
  41. data/rdoc/index.html +24 -0
  42. data/rdoc/rdoc-style.css +208 -0
  43. data/script/selenium_webapp +45 -0
  44. data/script/spec +10 -0
  45. data/spec/example_run_state_tracking.rb +65 -0
  46. data/spec/selenium_config.rb +11 -0
  47. data/spec/spec_helper.rb +10 -0
  48. data/spec/spectie/rails_helper.rb +29 -0
  49. data/spec/spectie/rails_story_example_group_spec.rb +59 -0
  50. data/spec/spectie/selenium/configuration_spec.rb +91 -0
  51. data/spec/spectie/selenium/spec_helper.rb +16 -0
  52. data/spec/spectie/selenium/story_example_group_spec.rb +132 -0
  53. data/spec/spectie/spec_helper.rb +1 -0
  54. data/spec/spectie/story_example_group_methods_spec.rb +217 -0
  55. data/spec/spectie_spec.rb +46 -0
  56. data/spec/support/rails_app/controllers/application_controller.rb +2 -0
  57. data/tags +19899 -0
  58. metadata +125 -0
@@ -0,0 +1,34 @@
1
+
2
+ <?xml version="1.0" encoding="iso-8859-1"?>
3
+ <!DOCTYPE html
4
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
5
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6
+
7
+ <!--
8
+
9
+ Classes
10
+
11
+ -->
12
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
13
+ <head>
14
+ <title>Classes</title>
15
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
16
+ <link rel="stylesheet" href="rdoc-style.css" type="text/css" />
17
+ <base target="docwin" />
18
+ </head>
19
+ <body>
20
+ <div id="index">
21
+ <h1 class="section-bar">Classes</h1>
22
+ <div id="index-entries">
23
+ <a href="classes/Spectie.html">Spectie</a><br />
24
+ <a href="classes/Spectie/Configuration.html">Spectie::Configuration</a><br />
25
+ <a href="classes/Spectie/Configuration/ForScenarios.html">Spectie::Configuration::ForScenarios</a><br />
26
+ <a href="classes/Spectie/Configuration/Selenium.html">Spectie::Configuration::Selenium</a><br />
27
+ <a href="classes/Spectie/Main.html">Spectie::Main</a><br />
28
+ <a href="classes/Spectie/RailsStoryExampleGroup.html">Spectie::RailsStoryExampleGroup</a><br />
29
+ <a href="classes/Spectie/SeleniumStoryExampleGroup.html">Spectie::SeleniumStoryExampleGroup</a><br />
30
+ <a href="classes/Spectie/StoryExampleGroupMethods.html">Spectie::StoryExampleGroupMethods</a><br />
31
+ </div>
32
+ </div>
33
+ </body>
34
+ </html>
@@ -0,0 +1,36 @@
1
+
2
+ <?xml version="1.0" encoding="iso-8859-1"?>
3
+ <!DOCTYPE html
4
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
5
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6
+
7
+ <!--
8
+
9
+ Files
10
+
11
+ -->
12
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
13
+ <head>
14
+ <title>Files</title>
15
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
16
+ <link rel="stylesheet" href="rdoc-style.css" type="text/css" />
17
+ <base target="docwin" />
18
+ </head>
19
+ <body>
20
+ <div id="index">
21
+ <h1 class="section-bar">Files</h1>
22
+ <div id="index-entries">
23
+ <a href="files/README_rdoc.html">README.rdoc</a><br />
24
+ <a href="files/lib/spectie_rb.html">lib/spectie.rb</a><br />
25
+ <a href="files/lib/spectie/configuration_rb.html">lib/spectie/configuration.rb</a><br />
26
+ <a href="files/lib/spectie/main_rb.html">lib/spectie/main.rb</a><br />
27
+ <a href="files/lib/spectie/rails_rb.html">lib/spectie/rails.rb</a><br />
28
+ <a href="files/lib/spectie/rails_story_example_group_rb.html">lib/spectie/rails_story_example_group.rb</a><br />
29
+ <a href="files/lib/spectie/selenium_rb.html">lib/spectie/selenium.rb</a><br />
30
+ <a href="files/lib/spectie/selenium/configuration_rb.html">lib/spectie/selenium/configuration.rb</a><br />
31
+ <a href="files/lib/spectie/selenium/story_example_group_rb.html">lib/spectie/selenium/story_example_group.rb</a><br />
32
+ <a href="files/lib/spectie/story_example_group_methods_rb.html">lib/spectie/story_example_group_methods.rb</a><br />
33
+ </div>
34
+ </div>
35
+ </body>
36
+ </html>
@@ -0,0 +1,38 @@
1
+
2
+ <?xml version="1.0" encoding="iso-8859-1"?>
3
+ <!DOCTYPE html
4
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
5
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6
+
7
+ <!--
8
+
9
+ Methods
10
+
11
+ -->
12
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
13
+ <head>
14
+ <title>Methods</title>
15
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
16
+ <link rel="stylesheet" href="rdoc-style.css" type="text/css" />
17
+ <base target="docwin" />
18
+ </head>
19
+ <body>
20
+ <div id="index">
21
+ <h1 class="section-bar">Methods</h1>
22
+ <div id="index-entries">
23
+ <a href="classes/Spectie/Main.html#M000003">Feature (Spectie::Main)</a><br />
24
+ <a href="classes/Spectie/StoryExampleGroupMethods.html#M000011">Scenario (Spectie::StoryExampleGroupMethods)</a><br />
25
+ <a href="classes/Spectie/Configuration/Selenium.html#M000008">controlled? (Spectie::Configuration::Selenium)</a><br />
26
+ <a href="classes/Spectie/Configuration/Selenium.html#M000007">driver_options (Spectie::Configuration::Selenium)</a><br />
27
+ <a href="classes/Spectie/StoryExampleGroupMethods.html#M000009">included (Spectie::StoryExampleGroupMethods)</a><br />
28
+ <a href="files/lib/spectie/rails_story_example_group_rb.html#M000001">method_missing (lib/spectie/rails_story_example_group.rb)</a><br />
29
+ <a href="classes/Spectie/Configuration/Selenium.html#M000006">new (Spectie::Configuration::Selenium)</a><br />
30
+ <a href="files/lib/spectie/rails_story_example_group_rb.html#M000002">new (lib/spectie/rails_story_example_group.rb)</a><br />
31
+ <a href="classes/Spectie/StoryExampleGroupMethods.html#M000010">scenario_methods (Spectie::StoryExampleGroupMethods)</a><br />
32
+ <a href="classes/Spectie/Configuration.html#M000004">scenarios (Spectie::Configuration)</a><br />
33
+ <a href="classes/Spectie/Configuration.html#M000005">selenium (Spectie::Configuration)</a><br />
34
+ <a href="classes/Spectie/StoryExampleGroupMethods.html#M000012">xScenario (Spectie::StoryExampleGroupMethods)</a><br />
35
+ </div>
36
+ </div>
37
+ </body>
38
+ </html>
data/rdoc/index.html ADDED
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
5
+
6
+ <!--
7
+
8
+ spectie 0.0.3
9
+
10
+ -->
11
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
12
+ <head>
13
+ <title>spectie 0.0.3</title>
14
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
15
+ </head>
16
+ <frameset rows="20%, 80%">
17
+ <frameset cols="25%,35%,45%">
18
+ <frame src="fr_file_index.html" title="Files" name="Files" />
19
+ <frame src="fr_class_index.html" name="Classes" />
20
+ <frame src="fr_method_index.html" name="Methods" />
21
+ </frameset>
22
+ <frame src="files/README_rdoc.html" name="docwin" />
23
+ </frameset>
24
+ </html>
@@ -0,0 +1,208 @@
1
+
2
+ body {
3
+ font-family: Verdana,Arial,Helvetica,sans-serif;
4
+ font-size: 90%;
5
+ margin: 0;
6
+ margin-left: 40px;
7
+ padding: 0;
8
+ background: white;
9
+ }
10
+
11
+ h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
12
+ h1 { font-size: 150%; }
13
+ h2,h3,h4 { margin-top: 1em; }
14
+
15
+ a { background: #eef; color: #039; text-decoration: none; }
16
+ a:hover { background: #039; color: #eef; }
17
+
18
+ /* Override the base stylesheet's Anchor inside a table cell */
19
+ td > a {
20
+ background: transparent;
21
+ color: #039;
22
+ text-decoration: none;
23
+ }
24
+
25
+ /* and inside a section title */
26
+ .section-title > a {
27
+ background: transparent;
28
+ color: #eee;
29
+ text-decoration: none;
30
+ }
31
+
32
+ /* === Structural elements =================================== */
33
+
34
+ div#index {
35
+ margin: 0;
36
+ margin-left: -40px;
37
+ padding: 0;
38
+ font-size: 90%;
39
+ }
40
+
41
+
42
+ div#index a {
43
+ margin-left: 0.7em;
44
+ }
45
+
46
+ div#index .section-bar {
47
+ margin-left: 0px;
48
+ padding-left: 0.7em;
49
+ background: #ccc;
50
+ font-size: small;
51
+ }
52
+
53
+
54
+ div#classHeader, div#fileHeader {
55
+ width: auto;
56
+ color: white;
57
+ padding: 0.5em 1.5em 0.5em 1.5em;
58
+ margin: 0;
59
+ margin-left: -40px;
60
+ border-bottom: 3px solid #006;
61
+ }
62
+
63
+ div#classHeader a, div#fileHeader a {
64
+ background: inherit;
65
+ color: white;
66
+ }
67
+
68
+ div#classHeader td, div#fileHeader td {
69
+ background: inherit;
70
+ color: white;
71
+ }
72
+
73
+
74
+ div#fileHeader {
75
+ background: #057;
76
+ }
77
+
78
+ div#classHeader {
79
+ background: #048;
80
+ }
81
+
82
+
83
+ .class-name-in-header {
84
+ font-size: 180%;
85
+ font-weight: bold;
86
+ }
87
+
88
+
89
+ div#bodyContent {
90
+ padding: 0 1.5em 0 1.5em;
91
+ }
92
+
93
+ div#description {
94
+ padding: 0.5em 1.5em;
95
+ background: #efefef;
96
+ border: 1px dotted #999;
97
+ }
98
+
99
+ div#description h1,h2,h3,h4,h5,h6 {
100
+ color: #125;;
101
+ background: transparent;
102
+ }
103
+
104
+ div#validator-badges {
105
+ text-align: center;
106
+ }
107
+ div#validator-badges img { border: 0; }
108
+
109
+ div#copyright {
110
+ color: #333;
111
+ background: #efefef;
112
+ font: 0.75em sans-serif;
113
+ margin-top: 5em;
114
+ margin-bottom: 0;
115
+ padding: 0.5em 2em;
116
+ }
117
+
118
+
119
+ /* === Classes =================================== */
120
+
121
+ table.header-table {
122
+ color: white;
123
+ font-size: small;
124
+ }
125
+
126
+ .type-note {
127
+ font-size: small;
128
+ color: #DEDEDE;
129
+ }
130
+
131
+ .xxsection-bar {
132
+ background: #eee;
133
+ color: #333;
134
+ padding: 3px;
135
+ }
136
+
137
+ .section-bar {
138
+ color: #333;
139
+ border-bottom: 1px solid #999;
140
+ margin-left: -20px;
141
+ }
142
+
143
+
144
+ .section-title {
145
+ background: #79a;
146
+ color: #eee;
147
+ padding: 3px;
148
+ margin-top: 2em;
149
+ margin-left: -30px;
150
+ border: 1px solid #999;
151
+ }
152
+
153
+ .top-aligned-row { vertical-align: top }
154
+ .bottom-aligned-row { vertical-align: bottom }
155
+
156
+ /* --- Context section classes ----------------------- */
157
+
158
+ .context-row { }
159
+ .context-item-name { font-family: monospace; font-weight: bold; color: black; }
160
+ .context-item-value { font-size: small; color: #448; }
161
+ .context-item-desc { color: #333; padding-left: 2em; }
162
+
163
+ /* --- Method classes -------------------------- */
164
+ .method-detail {
165
+ background: #efefef;
166
+ padding: 0;
167
+ margin-top: 0.5em;
168
+ margin-bottom: 1em;
169
+ border: 1px dotted #ccc;
170
+ }
171
+ .method-heading {
172
+ color: black;
173
+ background: #ccc;
174
+ border-bottom: 1px solid #666;
175
+ padding: 0.2em 0.5em 0 0.5em;
176
+ }
177
+ .method-signature { color: black; background: inherit; }
178
+ .method-name { font-weight: bold; }
179
+ .method-args { font-style: italic; }
180
+ .method-description { padding: 0 0.5em 0 0.5em; }
181
+
182
+ /* --- Source code sections -------------------- */
183
+
184
+ a.source-toggle { font-size: 90%; }
185
+ div.method-source-code {
186
+ background: #262626;
187
+ color: #ffdead;
188
+ margin: 1em;
189
+ padding: 0.5em;
190
+ border: 1px dashed #999;
191
+ overflow: hidden;
192
+ }
193
+
194
+ div.method-source-code pre { color: #ffdead; overflow: hidden; }
195
+
196
+ /* --- Ruby keyword styles --------------------- */
197
+
198
+ .standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
199
+
200
+ .ruby-constant { color: #7fffd4; background: transparent; }
201
+ .ruby-keyword { color: #00ffff; background: transparent; }
202
+ .ruby-ivar { color: #eedd82; background: transparent; }
203
+ .ruby-operator { color: #00ffee; background: transparent; }
204
+ .ruby-identifier { color: #ffdead; background: transparent; }
205
+ .ruby-node { color: #ffa07a; background: transparent; }
206
+ .ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
207
+ .ruby-regexp { color: #ffa07a; background: transparent; }
208
+ .ruby-value { color: #7fffd4; background: transparent; }
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env ruby
2
+ require File.expand_path(File.dirname(__FILE__) + "/../initialize")
3
+
4
+ begin
5
+ sinatra_path = 'sinatra'
6
+ require sinatra_path
7
+ rescue LoadError => e
8
+ if e.message =~ /#{Regexp.escape(sinatra_path)}$/
9
+ raise "sinatra not available. Install it with sudo gem install sinatra"
10
+ else
11
+ raise e
12
+ end
13
+ end
14
+
15
+ set :sessions, true
16
+
17
+ get '/' do
18
+ markup = <<-MARKUP
19
+ <p id="greeting">
20
+ Whazzup!?
21
+ <a href="/clicky_click">Click me</a>
22
+ </p>
23
+ MARKUP
24
+ if session['user'].nil?
25
+ markup << <<-MARKUP
26
+ <form method="post" action="/login">
27
+ <input type="text" id="login" name="login" />
28
+ <input type="submit" id="submit_login" />
29
+ </form>
30
+ MARKUP
31
+ else
32
+ markup << <<-MARKUP
33
+ <p id="session">Hello, #{session['user']}</p>
34
+ MARKUP
35
+ end
36
+
37
+ markup
38
+ end
39
+ post '/login' do
40
+ session['user'] = params['login']
41
+ redirect '/'
42
+ end
43
+ get '/clicky_click' do
44
+ "Booyah!"
45
+ end
data/script/spec ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ require File.expand_path(File.dirname(__FILE__) + "/../initialize")
3
+
4
+ begin
5
+ require 'spec/autorun'
6
+ rescue LoadError
7
+ raise "RSpec not installed. Install it with: sudo gem install rspec"
8
+ end
9
+
10
+ exit ::Spec::Runner::CommandLine.run
@@ -0,0 +1,65 @@
1
+ require "spec/runner/formatter/base_formatter"
2
+
3
+ class TestingFormatter < Spec::Runner::Formatter::BaseFormatter
4
+ def initialize(options, output, example_state)
5
+ @example_state = example_state
6
+ end
7
+
8
+ def example_failed(example_proxy, counter, failure)
9
+ @example_state.failed!(failure)
10
+ end
11
+ end
12
+
13
+ class ExampleState
14
+ attr_reader :exception
15
+ def failed?
16
+ !exception.nil?
17
+ end
18
+ def failed!(failure)
19
+ @exception = failure.exception
20
+ end
21
+ end
22
+
23
+ class BeSuccessful
24
+ def matches?(example)
25
+ @example = example
26
+ !example.failed?
27
+ end
28
+
29
+ def description
30
+ "be successful"
31
+ end
32
+
33
+ def failure_message_for_should
34
+ "expected example to be successful, but it failed with:\n" +
35
+ " Message: #{@example.exception.message}\n" +
36
+ " Backtrace:\n" +
37
+ " #{@example.exception.backtrace.join("\n ")}"
38
+ end
39
+ end
40
+
41
+ Spec::Example::ExampleGroupMethods.module_eval do
42
+ def track_example_run_state
43
+ before(:each) do
44
+ @original_rspec_options = ::Spec::Runner.options
45
+ @options = ::Spec::Runner::Options.new(StringIO.new, @error_stream = StringIO.new)
46
+ @example_state = ExampleState.new
47
+ @formatter = TestingFormatter.new(@options, @error_stream, @example_state)
48
+ class << self
49
+ def example
50
+ @example_state
51
+ end
52
+ def be_successful
53
+ BeSuccessful.new
54
+ end
55
+ end
56
+ @options.formatters << @formatter
57
+ ::Spec::Runner.use(@options)
58
+ end
59
+
60
+ after(:each) do
61
+ ::Spec::Runner.use(@original_rspec_options)
62
+ end
63
+ end
64
+ end
65
+