bauxite 0.4.5 → 0.4.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b814f19ff06421cccdeaeaf132a5977ec7db4e8f
4
- data.tar.gz: 99a5eeab70836e91ae71e4d46a6cafba25b1e2a4
3
+ metadata.gz: 3d2de14a5ada49ae2a057af9b513f46c2a2916f2
4
+ data.tar.gz: 0743f340ef2e0d1030af41db4aebdc731bcbd8c6
5
5
  SHA512:
6
- metadata.gz: bf31de624cb941fc831973d51adee95b78632e87ff75cf4ff01a818a2f85aaab7312de68b68eef282dd1ef30a3b92e75baf13d12e6346b76ca47ed1b8a5dbe47
7
- data.tar.gz: e4f7a6a65891bd76a3428b61457a488fd3ef3b624a7132e3cd822f94a1fc9697434bb821ad6aca6a9397d185ab7c900baf7bfcaa710e6f7678556ba70a12f501
6
+ metadata.gz: cdeeab574ae065d77a2804aff4a0821c535ecbd07b3da0db488e5c2681f26e34ea6d31620a9567967106f710186cebefde3580ad68bc4b4aad1b5efcbe5fb3b2
7
+ data.tar.gz: f4020a1a39e42018318d125154ab8909d1ad012bdabbb6b8af293023c3fd0e28411595de2736a3c56d603b4fd6161cb6c917831654c22a02cd1c79b4bff23a5f
data/README.md CHANGED
@@ -96,7 +96,7 @@ For example, in this HTML fragment:
96
96
 
97
97
  <input type="text" name="q" />
98
98
 
99
- If we want to type the text "Hello WebDriver!" in textbox we can do the following:
99
+ If we want to type the text "Hello WebDriver!" in the textbox we can do the following:
100
100
 
101
101
  write "name=q" "Hello WebDriver!"
102
102
 
@@ -273,11 +273,11 @@ Assuming you have Selenium Server running on localhost and your workspace (e.g.
273
273
  # === suite.bxt === #
274
274
  test login.bxt
275
275
  test register.bxt
276
- test browse_arround.bxt
276
+ test browse_around.bxt
277
277
  test purchase_something.bxt
278
278
  # more tests here...
279
279
 
280
- Note the `--csv-summary` option in the configuration above. That option generates a single-ling CSV file ideal to feed the `Plot` Jenkins plugin. I won't go into the details of configuring the Plot plugin, but instead here is a fragment of a possible Jenkins config.xml plotting the Bauxite test results:
280
+ Note the `--csv-summary` option in the configuration above. That option generates a single-line CSV file ideal to feed into the `Plot` Jenkins plugin. I won't go into the details of configuring the Plot plugin, but instead here is a fragment of a possible Jenkins `config.xml` plotting the Bauxite test results:
281
281
 
282
282
  <publishers>
283
283
  ...
data/Rakefile CHANGED
@@ -9,7 +9,7 @@ require 'rubygems/package_task'
9
9
  spec = Gem::Specification.new do |s|
10
10
  s.name = 'bauxite'
11
11
  s.summary = 'Bauxite is a façade over Selenium intended for non-developers'
12
- s.description = 'The idea behind this project was to create a tool that allows non-developers to write web tests in a human-readable language. Another major requirement is to be able to easily extend the test language to create functional abstractions over technical details.'
12
+ s.description = 'Bauxite is a façade over Selenium intended for non-developers. The idea behind this project was to create a tool that allows non-developers to write web tests in a human-readable language. Another major requirement is to be able to easily extend the test language to create functional abstractions over technical details.'
13
13
  s.author = 'Patricio Zavolinsky'
14
14
  s.email = 'pzavolinsky at yahoo dot com dot ar'
15
15
  s.homepage = 'https://github.com/pzavolinsky/bauxite'
@@ -60,6 +60,7 @@
60
60
  <ul class="link-list" role="directory">
61
61
  <li><a href="#class-Bauxite::Context-label-Context+variables">Context variables</a>
62
62
  <li><a href="#class-Bauxite::Context-label-Variable+scope">Variable scope</a>
63
+ <li><a href="#class-Bauxite::Context-label-Built-in+variable">Built-in variable</a>
63
64
  </ul>
64
65
  </div>
65
66
 
@@ -232,6 +233,39 @@ action:</p>
232
233
  href="Action.html#method-i-return_action">Bauxite::Action#return_action</a></p>
233
234
  </li></ul>
234
235
 
236
+ <h3 id="class-Bauxite::Context-label-Built-in+variable">Built-in variable<span><a href="#class-Bauxite::Context-label-Built-in+variable">&para;</a> <a href="#documentation">&uarr;</a></span></h3>
237
+
238
+ <p><a href="../Bauxite.html">Bauxite</a> has a series of built-in variables
239
+ that provide information of the current test context and allow dynamic
240
+ constomizations of the test behavior.</p>
241
+
242
+ <p>The built-in variables are:</p>
243
+ <dl class="rdoc-list label-list"><dt><code>__FILE__</code>
244
+ <dd>
245
+ <p>The file where the current action is defined.</p>
246
+ </dd><dt><code>__DIR__</code>
247
+ <dd>
248
+ <p>The directory where <code>__FILE__</code> is.</p>
249
+ </dd><dt><code>__SELECTOR__</code>
250
+ <dd>
251
+ <p>The default selector used when the selector specified does not contain an
252
+ <code>=</code> character.</p>
253
+ </dd><dt><code>__DEBUG__</code>
254
+ <dd>
255
+ <p>Set to true if the current action is being executed by the debug console.</p>
256
+ </dd><dt><code>__RETURN__</code>
257
+ <dd>
258
+ <p>Used internally by <a
259
+ href="Action.html#method-i-return_action">Bauxite::Action#return_action</a>
260
+ to indicate which variables should be returned to the parent scope.</p>
261
+ </dd></dl>
262
+
263
+ <p>In general, variables surrounded by double underscores and variables whose
264
+ names are only numbers are reserved for <a
265
+ href="../Bauxite.html">Bauxite</a> and should not be used as part of a
266
+ functional test. The obvious exception is when trying to change the test
267
+ behavior by changing the built-in variables.</p>
268
+
235
269
  </section>
236
270
 
237
271
 
@@ -376,7 +410,7 @@ href="Context.html#method-i-stop">stop</a> (defaults to <code>false</code>)</p>
376
410
 
377
411
 
378
412
  <div class="method-source-code" id="new-source">
379
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 113</span>
413
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 140</span>
380
414
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">options</span>)
381
415
  <span class="ruby-ivar">@options</span> = <span class="ruby-identifier">options</span>
382
416
  <span class="ruby-ivar">@driver_name</span> = (<span class="ruby-identifier">options</span>[<span class="ruby-value">:driver</span>] <span class="ruby-operator">||</span> <span class="ruby-value">:firefox</span>).<span class="ruby-identifier">to_sym</span>
@@ -444,7 +478,7 @@ href="Context.html#method-i-stop">stop</a> (defaults to <code>false</code>)</p>
444
478
 
445
479
 
446
480
  <div class="method-source-code" id="debug-source">
447
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 226</span>
481
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 253</span>
448
482
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">debug</span>
449
483
  <span class="ruby-identifier">exec_action</span>(<span class="ruby-string">&#39;debug&#39;</span>, <span class="ruby-keyword">false</span>)
450
484
  <span class="ruby-keyword">end</span></pre>
@@ -501,7 +535,7 @@ applies if no <code>block</code> was given).</p>
501
535
 
502
536
 
503
537
  <div class="method-source-code" id="find-source">
504
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 215</span>
538
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 242</span>
505
539
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">find</span>(<span class="ruby-identifier">selector</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>) <span class="ruby-comment"># yields: element</span>
506
540
  <span class="ruby-identifier">with_timeout</span> <span class="ruby-constant">Selenium</span><span class="ruby-operator">::</span><span class="ruby-constant">WebDriver</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span><span class="ruby-operator">::</span><span class="ruby-constant">NoSuchElementError</span> <span class="ruby-keyword">do</span>
507
541
  <span class="ruby-constant">Selector</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword">self</span>, <span class="ruby-ivar">@variables</span>[<span class="ruby-string">&#39;__SELECTOR__&#39;</span>]).<span class="ruby-identifier">find</span>(<span class="ruby-identifier">selector</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
@@ -551,7 +585,7 @@ the inner text or the value of the <code>value</code> attribute.</p>
551
585
 
552
586
 
553
587
  <div class="method-source-code" id="get_value-source">
554
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 245</span>
588
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 272</span>
555
589
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">get_value</span>(<span class="ruby-identifier">element</span>)
556
590
  <span class="ruby-keyword">if</span> [<span class="ruby-string">&#39;input&#39;</span>,<span class="ruby-string">&#39;select&#39;</span>,<span class="ruby-string">&#39;textarea&#39;</span>].<span class="ruby-identifier">include?</span> <span class="ruby-identifier">element</span>.<span class="ruby-identifier">tag_name</span>.<span class="ruby-identifier">downcase</span>
557
591
  <span class="ruby-identifier">element</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-string">&#39;value&#39;</span>)
@@ -594,7 +628,7 @@ the inner text or the value of the <code>value</code> attribute.</p>
594
628
 
595
629
 
596
630
  <div class="method-source-code" id="reset_driver-source">
597
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 170</span>
631
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 197</span>
598
632
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">reset_driver</span>
599
633
  <span class="ruby-ivar">@driver</span>.<span class="ruby-identifier">quit</span>
600
634
  <span class="ruby-identifier">_load_driver</span>
@@ -643,7 +677,7 @@ href="Context.html#method-i-stop">stop</a>).</p>
643
677
 
644
678
 
645
679
  <div class="method-source-code" id="start-source">
646
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 152</span>
680
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 179</span>
647
681
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">start</span>(<span class="ruby-identifier">actions</span> = [])
648
682
  <span class="ruby-identifier">_load_driver</span>
649
683
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">actions</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
@@ -702,7 +736,7 @@ href="Context.html#method-i-stop">stop</a> pattern.</p>
702
736
 
703
737
 
704
738
  <div class="method-source-code" id="stop-source">
705
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 190</span>
739
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 217</span>
706
740
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">stop</span>
707
741
  <span class="ruby-constant">Context</span><span class="ruby-operator">::</span><span class="ruby-identifier">wait</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@options</span>[<span class="ruby-value">:wait</span>]
708
742
  <span class="ruby-ivar">@driver</span>.<span class="ruby-identifier">quit</span>
@@ -768,7 +802,7 @@ logger type.</p>
768
802
 
769
803
 
770
804
  <div class="method-source-code" id="load_logger-source">
771
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 388</span>
805
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 415</span>
772
806
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">load_logger</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">options</span>)
773
807
  <span class="ruby-identifier">log_name</span> = (<span class="ruby-identifier">name</span> <span class="ruby-operator">||</span> <span class="ruby-string">&#39;null&#39;</span>).<span class="ruby-identifier">downcase</span>
774
808
 
@@ -810,7 +844,7 @@ logger type.</p>
810
844
 
811
845
 
812
846
  <div class="method-source-code" id="parse_action_default-source">
813
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 410</span>
847
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 437</span>
814
848
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">parse_action_default</span>(<span class="ruby-identifier">text</span>, <span class="ruby-identifier">file</span> = <span class="ruby-string">&#39;&lt;unknown&gt;&#39;</span>, <span class="ruby-identifier">line</span> = <span class="ruby-value">0</span>)
815
849
  <span class="ruby-identifier">data</span> = <span class="ruby-identifier">text</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">&#39; &#39;</span>, <span class="ruby-value">2</span>)
816
850
  <span class="ruby-keyword">begin</span>
@@ -878,7 +912,7 @@ logger type.</p>
878
912
 
879
913
 
880
914
  <div class="method-source-code" id="wait-source">
881
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 381</span>
915
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 408</span>
882
916
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">wait</span>
883
917
  <span class="ruby-constant">Readline</span>.<span class="ruby-identifier">readline</span>(<span class="ruby-string">&quot;Press ENTER to continue\n&quot;</span>)
884
918
  <span class="ruby-keyword">end</span></pre>
@@ -920,7 +954,7 @@ with the arguments specified in <code>args</code>.</p>
920
954
 
921
955
 
922
956
  <div class="method-source-code" id="add_alias-source">
923
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 404</span>
957
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 431</span>
924
958
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">add_alias</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>)
925
959
  <span class="ruby-ivar">@aliases</span>[<span class="ruby-identifier">name</span>] = { <span class="ruby-value">:action</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">action</span>, <span class="ruby-value">:args</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">args</span> }
926
960
  <span class="ruby-keyword">end</span></pre>
@@ -963,7 +997,7 @@ behavior).</p>
963
997
 
964
998
 
965
999
  <div class="method-source-code" id="exec_action-source">
966
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 266</span>
1000
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 293</span>
967
1001
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">exec_action</span>(<span class="ruby-identifier">text</span>, <span class="ruby-identifier">log</span> = <span class="ruby-keyword">true</span>, <span class="ruby-identifier">file</span> = <span class="ruby-string">&#39;&lt;unknown&gt;&#39;</span>, <span class="ruby-identifier">line</span> = <span class="ruby-value">0</span>)
968
1002
  <span class="ruby-identifier">data</span> = <span class="ruby-constant">Context</span><span class="ruby-operator">::</span><span class="ruby-identifier">parse_action_default</span>(<span class="ruby-identifier">text</span>, <span class="ruby-identifier">file</span>, <span class="ruby-identifier">line</span>)
969
1003
  <span class="ruby-identifier">_exec_parsed_action</span>(<span class="ruby-identifier">data</span>[<span class="ruby-value">:action</span>], <span class="ruby-identifier">data</span>[<span class="ruby-value">:args</span>], <span class="ruby-identifier">text</span>, <span class="ruby-identifier">log</span>, <span class="ruby-identifier">file</span>, <span class="ruby-identifier">line</span>)
@@ -1011,7 +1045,7 @@ ret.call if ret.respond_to? :call</pre>
1011
1045
 
1012
1046
 
1013
1047
  <div class="method-source-code" id="exec_action_object-source">
1014
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 488</span>
1048
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 515</span>
1015
1049
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">exec_action_object</span>(<span class="ruby-identifier">action</span>)
1016
1050
  <span class="ruby-comment"># Inject built-in variables</span>
1017
1051
  <span class="ruby-identifier">file</span> = <span class="ruby-identifier">action</span>.<span class="ruby-identifier">file</span>
@@ -1055,7 +1089,7 @@ ret.call if ret.respond_to? :call</pre>
1055
1089
 
1056
1090
 
1057
1091
  <div class="method-source-code" id="exec_file-source">
1058
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 277</span>
1092
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 304</span>
1059
1093
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">exec_file</span>(<span class="ruby-identifier">file</span>)
1060
1094
  <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">file</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">file</span>, <span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
1061
1095
  <span class="ruby-identifier">_exec_parsed_action</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">text</span>, <span class="ruby-keyword">true</span>, <span class="ruby-identifier">file</span>, <span class="ruby-identifier">line</span>)
@@ -1097,7 +1131,7 @@ preferred.</p>
1097
1131
 
1098
1132
 
1099
1133
  <div class="method-source-code" id="get_action-source">
1100
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 450</span>
1134
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 477</span>
1101
1135
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">get_action</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">file</span>, <span class="ruby-identifier">line</span>)
1102
1136
  <span class="ruby-keyword">while</span> (<span class="ruby-identifier">alias_action</span> = <span class="ruby-ivar">@aliases</span>[<span class="ruby-identifier">action</span>])
1103
1137
  <span class="ruby-identifier">action</span> = <span class="ruby-identifier">alias_action</span>[<span class="ruby-value">:action</span>]
@@ -1171,7 +1205,7 @@ handler will not exit after printing the error message.</p>
1171
1205
 
1172
1206
 
1173
1207
  <div class="method-source-code" id="handle_errors-source">
1174
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 302</span>
1208
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 329</span>
1175
1209
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">handle_errors</span>(<span class="ruby-identifier">break_into_debug</span> = <span class="ruby-keyword">false</span>, <span class="ruby-identifier">exit_on_error</span> = <span class="ruby-keyword">true</span>)
1176
1210
  <span class="ruby-keyword">yield</span>
1177
1211
  <span class="ruby-keyword">rescue</span> <span class="ruby-constant">StandardError</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
@@ -1238,7 +1272,7 @@ available <a href="Selector.html">Selector</a> strategies).</p>
1238
1272
 
1239
1273
 
1240
1274
  <div class="method-source-code" id="with_driver_timeout-source">
1241
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 366</span>
1275
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 393</span>
1242
1276
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">with_driver_timeout</span>(<span class="ruby-identifier">timeout</span>)
1243
1277
  <span class="ruby-identifier">current</span> = <span class="ruby-ivar">@driver_timeout</span>
1244
1278
  <span class="ruby-ivar">@driver</span>.<span class="ruby-identifier">manage</span>.<span class="ruby-identifier">timeouts</span>.<span class="ruby-identifier">implicit_wait</span> = <span class="ruby-identifier">timeout</span>
@@ -1287,7 +1321,7 @@ to execute the block itself.</p>
1287
1321
 
1288
1322
 
1289
1323
  <div class="method-source-code" id="with_timeout-source">
1290
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 338</span>
1324
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 365</span>
1291
1325
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">with_timeout</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">error_types</span>)
1292
1326
  <span class="ruby-identifier">stime</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>
1293
1327
  <span class="ruby-identifier">timeout</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">stime</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@variables</span>[<span class="ruby-string">&#39;__TIMEOUT__&#39;</span>]
@@ -1368,7 +1402,7 @@ to execute the block itself.</p>
1368
1402
 
1369
1403
 
1370
1404
  <div class="method-source-code" id="action_args-source">
1371
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 518</span>
1405
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 545</span>
1372
1406
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">action_args</span>(<span class="ruby-identifier">action</span>)
1373
1407
  <span class="ruby-identifier">action</span> <span class="ruby-operator">+=</span> <span class="ruby-string">&#39;_action&#39;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">_action_methods</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">action</span>
1374
1408
  <span class="ruby-constant">Action</span>.<span class="ruby-identifier">public_instance_method</span>(<span class="ruby-identifier">action</span>).<span class="ruby-identifier">parameters</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">att</span>, <span class="ruby-identifier">name</span><span class="ruby-operator">|</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span> }
@@ -1408,7 +1442,7 @@ to execute the block itself.</p>
1408
1442
 
1409
1443
 
1410
1444
  <div class="method-source-code" id="actions-source">
1411
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 508</span>
1445
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 535</span>
1412
1446
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">actions</span>
1413
1447
  <span class="ruby-identifier">_action_methods</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">m</span><span class="ruby-operator">|</span> <span class="ruby-identifier">m</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp">/_action$/</span>, <span class="ruby-string">&#39;&#39;</span>) }
1414
1448
  <span class="ruby-keyword">end</span></pre>
@@ -1447,7 +1481,7 @@ to execute the block itself.</p>
1447
1481
 
1448
1482
 
1449
1483
  <div class="method-source-code" id="loggers-source">
1450
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 547</span>
1484
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 574</span>
1451
1485
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">loggers</span>
1452
1486
  <span class="ruby-constant">Loggers</span>.<span class="ruby-identifier">constants</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">l</span><span class="ruby-operator">|</span> <span class="ruby-identifier">l</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp">/logger$/</span>, <span class="ruby-string">&#39;&#39;</span>) }
1453
1487
  <span class="ruby-keyword">end</span></pre>
@@ -1489,7 +1523,7 @@ to execute the block itself.</p>
1489
1523
 
1490
1524
 
1491
1525
  <div class="method-source-code" id="max_action_name_size-source">
1492
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 571</span>
1526
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 598</span>
1493
1527
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">max_action_name_size</span>
1494
1528
  <span class="ruby-identifier">actions</span>.<span class="ruby-identifier">inject</span>(<span class="ruby-value">0</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">s</span>,<span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">s</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">s</span> }
1495
1529
  <span class="ruby-keyword">end</span></pre>
@@ -1528,7 +1562,7 @@ to execute the block itself.</p>
1528
1562
 
1529
1563
 
1530
1564
  <div class="method-source-code" id="parsers-source">
1531
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 557</span>
1565
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 584</span>
1532
1566
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">parsers</span>
1533
1567
  (<span class="ruby-constant">Parser</span>.<span class="ruby-identifier">public_instance_methods</span>(<span class="ruby-keyword">false</span>) <span class="ruby-operator">-</span> <span class="ruby-constant">ParserModule</span>.<span class="ruby-identifier">public_instance_methods</span>(<span class="ruby-keyword">false</span>))
1534
1568
  .<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">to_s</span> }
@@ -1572,7 +1606,7 @@ custom selectors are returned.</p>
1572
1606
 
1573
1607
 
1574
1608
  <div class="method-source-code" id="selectors-source">
1575
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 533</span>
1609
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 560</span>
1576
1610
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">selectors</span>(<span class="ruby-identifier">include_standard_selectors</span> = <span class="ruby-keyword">true</span>)
1577
1611
  <span class="ruby-identifier">ret</span> = <span class="ruby-constant">Selector</span>.<span class="ruby-identifier">public_instance_methods</span>(<span class="ruby-keyword">false</span>).<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp">/_selector$/</span>, <span class="ruby-string">&#39;&#39;</span>) }
1578
1612
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">include_standard_selectors</span>
@@ -1654,7 +1688,7 @@ with the corresponding variable value.</p>
1654
1688
 
1655
1689
 
1656
1690
  <div class="method-source-code" id="expand-source">
1657
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 592</span>
1691
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 619</span>
1658
1692
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">expand</span>(<span class="ruby-identifier">s</span>)
1659
1693
  <span class="ruby-identifier">result</span> = <span class="ruby-ivar">@variables</span>.<span class="ruby-identifier">inject</span>(<span class="ruby-identifier">s</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">s</span>,<span class="ruby-identifier">kv</span><span class="ruby-operator">|</span>
1660
1694
  <span class="ruby-identifier">s</span> = <span class="ruby-identifier">s</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-node">/\$\{#{kv[0]}\}/</span>, <span class="ruby-identifier">kv</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">to_s</span>)
@@ -1707,7 +1741,7 @@ variables is restored.</p>
1707
1741
 
1708
1742
 
1709
1743
  <div class="method-source-code" id="with_vars-source">
1710
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 615</span>
1744
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 642</span>
1711
1745
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">with_vars</span>(<span class="ruby-identifier">vars</span>)
1712
1746
  <span class="ruby-identifier">current</span> = <span class="ruby-ivar">@variables</span>
1713
1747
  <span class="ruby-ivar">@variables</span> = <span class="ruby-ivar">@variables</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">vars</span>)
@@ -443,7 +443,7 @@ specified)</p>
443
443
  </li><li>
444
444
  <p>by text content (unless the element is a label)</p>
445
445
  </li><li>
446
- <p>by radio/checkbox button value</p>
446
+ <p>by radio/checkbox/button/submit value</p>
447
447
  </li><li>
448
448
  <p>by referenced element (find a label by its text, then find the element
449
449
  pointed by the label&#39;s <code>for</code> attribute)</p>
@@ -472,7 +472,14 @@ child control element, including input, select, textarea and button).</p>
472
472
  <span class="ruby-identifier">target</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">_smart_try_find</span> { <span class="ruby-identifier">attr</span>(<span class="ruby-string">&quot;id*:&quot;</span><span class="ruby-operator">+</span><span class="ruby-identifier">arg</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">b</span>) }
473
473
  <span class="ruby-identifier">target</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">_smart_try_find</span> { <span class="ruby-identifier">attr</span>(<span class="ruby-string">&quot;placeholder:&quot;</span><span class="ruby-operator">+</span><span class="ruby-identifier">arg</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">b</span>) }
474
474
  <span class="ruby-identifier">quoted_arg</span> = <span class="ruby-string">&quot;&#39;&quot;</span><span class="ruby-operator">+</span><span class="ruby-identifier">arg</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-string">&quot;&#39;&quot;</span>, <span class="ruby-string">&quot;\\&#39;&quot;</span>)<span class="ruby-operator">+</span><span class="ruby-string">&quot;&#39;&quot;</span>
475
- <span class="ruby-identifier">target</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">_smart_try_find</span> { <span class="ruby-identifier">selenium_find</span>(<span class="ruby-value">:css</span>, <span class="ruby-node">&quot;input[type=&#39;checkbox&#39;][value=#{quoted_arg}],input[type=&#39;radio&#39;][value=#{quoted_arg}]&quot;</span>) }
475
+ <span class="ruby-identifier">target</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">_smart_try_find</span> <span class="ruby-keyword">do</span>
476
+ <span class="ruby-identifier">selenium_find</span>(<span class="ruby-value">:css</span>, [<span class="ruby-node">&quot;input[type=&#39;checkbox&#39;][value=#{quoted_arg}]&quot;</span>,
477
+ <span class="ruby-node">&quot;input[type=&#39;radio&#39;][value=#{quoted_arg}]&quot;</span>,
478
+ <span class="ruby-node">&quot;input[type=&#39;button&#39;][value=#{quoted_arg}]&quot;</span>,
479
+ <span class="ruby-node">&quot;input[type=&#39;submit&#39;][value=#{quoted_arg}]&quot;</span>
480
+ ].<span class="ruby-identifier">join</span>(<span class="ruby-string">&#39;,&#39;</span>)
481
+ )
482
+ <span class="ruby-keyword">end</span>
476
483
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">yield</span> <span class="ruby-identifier">target</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">target</span>
477
484
 
478
485
  <span class="ruby-identifier">target</span> = <span class="ruby-identifier">selenium_find</span>(<span class="ruby-value">:xpath</span>, <span class="ruby-node">&quot;//*[contains(text(), &#39;#{arg.gsub(&quot;&#39;&quot;, &quot;\\&#39;&quot;)}&#39;)]&quot;</span>)
data/doc/README_md.html CHANGED
@@ -213,7 +213,7 @@ the <code>=</code> sign.</p>
213
213
 
214
214
  <pre>&lt;input type=&quot;text&quot; name=&quot;q&quot; /&gt;</pre>
215
215
 
216
- <p>If we want to type the text “Hello WebDriver!” in textbox we can do the
216
+ <p>If we want to type the text “Hello WebDriver!” in the textbox we can do the
217
217
  following:</p>
218
218
 
219
219
  <pre>write &quot;name=q&quot; &quot;Hello WebDriver!&quot;</pre>
@@ -457,15 +457,16 @@ bauxite -l echo -u http://localhost:4444/wd/hub \
457
457
  <pre># === suite.bxt === #
458
458
  test login.bxt
459
459
  test register.bxt
460
- test browse_arround.bxt
460
+ test browse_around.bxt
461
461
  test purchase_something.bxt
462
462
  # more tests here...</pre>
463
463
 
464
464
  <p>Note the <code>--csv-summary</code> option in the configuration above. That
465
- option generates a single-ling CSV file ideal to feed the <code>Plot</code>
466
- Jenkins plugin. I won&#39;t go into the details of configuring the Plot
467
- plugin, but instead here is a fragment of a possible Jenkins config.xml
468
- plotting the <a href="Bauxite.html">Bauxite</a> test results:</p>
465
+ option generates a single-line CSV file ideal to feed into the
466
+ <code>Plot</code> Jenkins plugin. I won&#39;t go into the details of
467
+ configuring the Plot plugin, but instead here is a fragment of a possible
468
+ Jenkins <code>config.xml</code> plotting the <a
469
+ href="Bauxite.html">Bauxite</a> test results:</p>
469
470
 
470
471
  <pre>&lt;publishers&gt;
471
472
  ...
data/doc/created.rid CHANGED
@@ -1,5 +1,5 @@
1
- Thu, 30 Jan 2014 21:35:43 -0300
2
- README.md Thu, 30 Jan 2014 21:30:21 -0300
1
+ Fri, 31 Jan 2014 20:58:25 -0300
2
+ README.md Fri, 31 Jan 2014 08:21:19 -0300
3
3
  lib/bauxite/actions/break.rb Mon, 27 Jan 2014 20:58:50 -0300
4
4
  lib/bauxite/actions/assert.rb Mon, 27 Jan 2014 20:58:50 -0300
5
5
  lib/bauxite/actions/wait.rb Mon, 27 Jan 2014 20:58:50 -0300
@@ -32,13 +32,13 @@ lib/bauxite/parsers/default.rb Mon, 27 Jan 2014 20:58:50 -0300
32
32
  lib/bauxite/application.rb Thu, 30 Jan 2014 20:35:05 -0300
33
33
  lib/bauxite/core/errors.rb Mon, 27 Jan 2014 20:58:50 -0300
34
34
  lib/bauxite/core/selector.rb Tue, 28 Jan 2014 21:05:35 -0300
35
- lib/bauxite/core/context.rb Thu, 30 Jan 2014 20:50:42 -0300
35
+ lib/bauxite/core/context.rb Fri, 31 Jan 2014 20:56:57 -0300
36
36
  lib/bauxite/core/logger.rb Mon, 27 Jan 2014 20:58:50 -0300
37
37
  lib/bauxite/core/action.rb Mon, 27 Jan 2014 20:58:50 -0300
38
38
  lib/bauxite/core/parser.rb Mon, 27 Jan 2014 20:58:50 -0300
39
39
  lib/bauxite/selectors/sid.rb Tue, 28 Jan 2014 19:32:32 -0300
40
40
  lib/bauxite/selectors/attr.rb Mon, 27 Jan 2014 20:58:50 -0300
41
- lib/bauxite/selectors/smart.rb Tue, 28 Jan 2014 21:11:30 -0300
41
+ lib/bauxite/selectors/smart.rb Fri, 31 Jan 2014 20:43:53 -0300
42
42
  lib/bauxite/selectors/frame.rb Tue, 28 Jan 2014 19:38:40 -0300
43
43
  lib/bauxite/loggers/terminal.rb Mon, 27 Jan 2014 20:58:50 -0300
44
44
  lib/bauxite/loggers/file.rb Mon, 27 Jan 2014 20:58:50 -0300
data/doc/index.html CHANGED
@@ -243,7 +243,7 @@ the <code>=</code> sign.</p>
243
243
 
244
244
  <pre>&lt;input type=&quot;text&quot; name=&quot;q&quot; /&gt;</pre>
245
245
 
246
- <p>If we want to type the text “Hello WebDriver!” in textbox we can do the
246
+ <p>If we want to type the text “Hello WebDriver!” in the textbox we can do the
247
247
  following:</p>
248
248
 
249
249
  <pre>write &quot;name=q&quot; &quot;Hello WebDriver!&quot;</pre>
@@ -487,15 +487,16 @@ bauxite -l echo -u http://localhost:4444/wd/hub \
487
487
  <pre># === suite.bxt === #
488
488
  test login.bxt
489
489
  test register.bxt
490
- test browse_arround.bxt
490
+ test browse_around.bxt
491
491
  test purchase_something.bxt
492
492
  # more tests here...</pre>
493
493
 
494
494
  <p>Note the <code>--csv-summary</code> option in the configuration above. That
495
- option generates a single-ling CSV file ideal to feed the <code>Plot</code>
496
- Jenkins plugin. I won&#39;t go into the details of configuring the Plot
497
- plugin, but instead here is a fragment of a possible Jenkins config.xml
498
- plotting the <a href="Bauxite.html">Bauxite</a> test results:</p>
495
+ option generates a single-line CSV file ideal to feed into the
496
+ <code>Plot</code> Jenkins plugin. I won&#39;t go into the details of
497
+ configuring the Plot plugin, but instead here is a fragment of a possible
498
+ Jenkins <code>config.xml</code> plotting the <a
499
+ href="Bauxite.html">Bauxite</a> test results:</p>
499
500
 
500
501
  <pre>&lt;publishers&gt;
501
502
  ...
@@ -77,6 +77,7 @@
77
77
  <ul>
78
78
  <li><a href="Bauxite/Context.html#label-Context+variables">Context variables</a>
79
79
  <li><a href="Bauxite/Context.html#label-Variable+scope">Variable scope</a>
80
+ <li><a href="Bauxite/Context.html#label-Built-in+variable">Built-in variable</a>
80
81
  <li><a href="Bauxite/Context.html#5Buntitled-5D">Top Section</a>
81
82
  <li><a href="Bauxite/Context.html#Advanced+Helpers">Advanced Helpers</a>
82
83
  <li><a href="Bauxite/Context.html#Metadata">Metadata</a>
@@ -83,6 +83,28 @@ module Bauxite
83
83
  # action:
84
84
  # - Action#return_action
85
85
  #
86
+ # === Built-in variable
87
+ # Bauxite has a series of built-in variables that provide information of
88
+ # the current test context and allow dynamic constomizations of the test
89
+ # behavior.
90
+ #
91
+ # The built-in variables are:
92
+ # [<tt>__FILE__</tt>] The file where the current action is defined.
93
+ # [<tt>__DIR__</tt>] The directory where <tt>__FILE__</tt> is.
94
+ # [<tt>__SELECTOR__</tt>] The default selector used when the selector
95
+ # specified does not contain an <tt>=</tt>
96
+ # character.
97
+ # [<tt>__DEBUG__</tt>] Set to true if the current action is being executed
98
+ # by the debug console.
99
+ # [<tt>__RETURN__</tt>] Used internally by Action#return_action to indicate
100
+ # which variables should be returned to the parent
101
+ # scope.
102
+ #
103
+ # In general, variables surrounded by double underscores and variables
104
+ # whose names are only numbers are reserved for Bauxite and should not be
105
+ # used as part of a functional test. The obvious exception is when trying
106
+ # to change the test behavior by changing the built-in variables.
107
+ #
86
108
  class Context
87
109
  # Test engine driver instance (Selenium WebDriver).
88
110
  attr_reader :driver
@@ -104,11 +126,16 @@ module Bauxite
104
126
  # +options+ is a hash with the following values:
105
127
  # [:driver] selenium driver symbol (defaults to +:firefox+)
106
128
  # [:timeout] selector timeout in seconds (defaults to +10s+)
107
- # [:logger] logger implementation name without the 'Logger' suffix (defaults to 'null' for Loggers::NullLogger).
108
- # [:verbose] if +true+, show verbose error information (e.g. backtraces) if an error occurs (defaults to +false+)
109
- # [:debug] if +true+, break into the #debug console if an error occurs (defaults to +false+)
110
- # [:wait] if +true+, call ::wait before stopping the test engine with #stop (defaults to +false+)
111
- # [:extensions] an array of directories that contain extensions to be loaded
129
+ # [:logger] logger implementation name without the 'Logger' suffix
130
+ # (defaults to 'null' for Loggers::NullLogger).
131
+ # [:verbose] if +true+, show verbose error information (e.g.
132
+ # backtraces) if an error occurs (defaults to +false+)
133
+ # [:debug] if +true+, break into the #debug console if an error occurs
134
+ # (defaults to +false+)
135
+ # [:wait] if +true+, call ::wait before stopping the test engine with
136
+ # #stop (defaults to +false+)
137
+ # [:extensions] an array of directories that contain extensions to be
138
+ # loaded
112
139
  #
113
140
  def initialize(options)
114
141
  @options = options
@@ -30,7 +30,7 @@ class Bauxite::Selector
30
30
  # 4. by +id+ fragment (the +id+ contains the text specified)
31
31
  # 5. by +placeholder+ attribute
32
32
  # 6. by text content (unless the element is a label)
33
- # 7. by radio/checkbox button value
33
+ # 7. by radio/checkbox/button/submit value
34
34
  # 8. by referenced element (find a label by its text, then find the element
35
35
  # pointed by the label's +for+ attribute)
36
36
  # 9. by child element (find a label by its text, then find the first
@@ -51,7 +51,14 @@ class Bauxite::Selector
51
51
  target ||= _smart_try_find { attr("id*:"+arg, &b) }
52
52
  target ||= _smart_try_find { attr("placeholder:"+arg, &b) }
53
53
  quoted_arg = "'"+arg.gsub("'", "\\'")+"'"
54
- target ||= _smart_try_find { selenium_find(:css, "input[type='checkbox'][value=#{quoted_arg}],input[type='radio'][value=#{quoted_arg}]") }
54
+ target ||= _smart_try_find do
55
+ selenium_find(:css, ["input[type='checkbox'][value=#{quoted_arg}]",
56
+ "input[type='radio'][value=#{quoted_arg}]",
57
+ "input[type='button'][value=#{quoted_arg}]",
58
+ "input[type='submit'][value=#{quoted_arg}]"
59
+ ].join(',')
60
+ )
61
+ end
55
62
  return yield target if target
56
63
 
57
64
  target = selenium_find(:xpath, "//*[contains(text(), '#{arg.gsub("'", "\\'")}')]")
data/lib/bauxite.rb CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  #--
24
24
  module Bauxite
25
- VERSION = "0.4.5"
25
+ VERSION = "0.4.6"
26
26
  end
27
27
  #++
28
28
 
@@ -9,5 +9,10 @@
9
9
  <div><label for="my_input">By label sibling</label><input id="my_input" type="text" value="By label sibling"/></div>
10
10
  <input type="radio" name="radio" value="By radio value"/>
11
11
  <input type="checkbox" name="checkbox" value="By checkbox value"/>
12
+ <input type="submit" value="By submit text" onclick="document.getElementById('btn_text').setAttribute('value', this.getAttribute('value'));"/>
13
+ <input type="button" value="By input button text" onclick="document.getElementById('btn_text').setAttribute('value', this.getAttribute('value'));"/>
14
+ <button onclick="document.getElementById('btn_text').setAttribute('value', this.innerHTML);">By button text</button>
15
+
16
+ <input type="text" id="btn_text"/>
12
17
  </body>
13
18
  </html>
@@ -9,3 +9,9 @@ assert "smart=By label sibling" "By label sibling"
9
9
  assert "smart=By label parent" "By label parent"
10
10
  assert "smart=By radio value" "By radio value"
11
11
  assert "smart=By checkbox value" "By checkbox value"
12
+ click "smart=By submit text"
13
+ assert btn_text "By submit text"
14
+ click "smart=By input button text"
15
+ assert btn_text "By input button text"
16
+ click "smart=By button text"
17
+ assert btn_text "By button text"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bauxite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5
4
+ version: 0.4.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patricio Zavolinsky
@@ -38,10 +38,10 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.1'
41
- description: The idea behind this project was to create a tool that allows non-developers
42
- to write web tests in a human-readable language. Another major requirement is to
43
- be able to easily extend the test language to create functional abstractions over
44
- technical details.
41
+ description: Bauxite is a façade over Selenium intended for non-developers. The idea
42
+ behind this project was to create a tool that allows non-developers to write web
43
+ tests in a human-readable language. Another major requirement is to be able to easily
44
+ extend the test language to create functional abstractions over technical details.
45
45
  email: pzavolinsky at yahoo dot com dot ar
46
46
  executables:
47
47
  - bauxite