bauxite 0.4.5 → 0.4.6

Sign up to get free protection for your applications and to get access to all the features.
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