bauxite 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,438 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <meta charset="UTF-8">
6
+
7
+ <title>README - RDoc Documentation</title>
8
+
9
+ <link href="./fonts.css" rel="stylesheet">
10
+ <link href="./rdoc.css" rel="stylesheet">
11
+
12
+ <script type="text/javascript">
13
+ var rdoc_rel_prefix = "./";
14
+ </script>
15
+
16
+ <script src="./js/jquery.js"></script>
17
+ <script src="./js/navigation.js"></script>
18
+ <script src="./js/search_index.js"></script>
19
+ <script src="./js/search.js"></script>
20
+ <script src="./js/searcher.js"></script>
21
+ <script src="./js/darkfish.js"></script>
22
+
23
+
24
+ <body id="top" role="document" class="file">
25
+ <nav role="navigation">
26
+ <div id="project-navigation">
27
+ <div id="home-section" role="region" title="Quick navigation" class="nav-section">
28
+ <h2>
29
+ <a href="./index.html" rel="home">Home</a>
30
+ </h2>
31
+
32
+ <div id="table-of-contents-navigation">
33
+ <a href="./table_of_contents.html#pages">Pages</a>
34
+ <a href="./table_of_contents.html#classes">Classes</a>
35
+ <a href="./table_of_contents.html#methods">Methods</a>
36
+ </div>
37
+ </div>
38
+
39
+ <div id="search-section" role="search" class="project-section initially-hidden">
40
+ <form action="#" method="get" accept-charset="utf-8">
41
+ <div id="search-field-wrapper">
42
+ <input id="search-field" role="combobox" aria-label="Search"
43
+ aria-autocomplete="list" aria-controls="search-results"
44
+ type="text" name="search" placeholder="Search" spellcheck="false"
45
+ title="Type to search, Up and Down to navigate, Enter to load">
46
+ </div>
47
+
48
+ <ul id="search-results" aria-label="Search Results"
49
+ aria-busy="false" aria-expanded="false"
50
+ aria-atomic="false" class="initially-hidden"></ul>
51
+ </form>
52
+ </div>
53
+
54
+ </div>
55
+
56
+
57
+ <div class="nav-section">
58
+ <h3>Table of Contents</h3>
59
+
60
+ <ul class="link-list" role="directory">
61
+ <li><a href="#label-bauxite">bauxite</a>
62
+ <li><a href="#label-Installation">Installation</a>
63
+ <li><a href="#label-Hello+World">Hello World</a>
64
+ <li><a href="#label-Command-line+Interface">Command-line Interface</a>
65
+ <li><a href="#label-The+Bauxite+Language">The Bauxite Language</a>
66
+ <li><a href="#label-Installing+Ruby">Installing Ruby</a>
67
+ <li><a href="#label-Implementation">Implementation</a>
68
+ <li><a href="#label-Extending+Bauxite">Extending Bauxite</a>
69
+ <li><a href="#label-Functional+extensions">Functional extensions</a>
70
+ <li><a href="#label-Coded+plugins">Coded plugins</a>
71
+ </ul>
72
+ </div>
73
+
74
+
75
+ <div id="project-metadata">
76
+ <div id="fileindex-section" class="nav-section">
77
+ <h3>Pages</h3>
78
+
79
+ <ul class="link-list">
80
+
81
+ <li><a href="./README_md.html">README</a>
82
+
83
+ </ul>
84
+ </div>
85
+
86
+ </div>
87
+ </nav>
88
+
89
+ <main role="main" aria-label="Page README.md">
90
+
91
+ <h1 id="label-bauxite">bauxite<span><a href="#label-bauxite">&para;</a> <a href="#documentation">&uarr;</a></span></h1>
92
+
93
+ <p><a href="Bauxite.html">Bauxite</a> is a façade over Selenium intended for
94
+ non-developers</p>
95
+
96
+ <p>The idea behind this project was to create a tool that allows
97
+ non-developers to write web tests in a human-readable language. Another
98
+ major requirement is to be able to easily extend the test language to
99
+ create functional abstractions over technical details.</p>
100
+
101
+ <p>Take a look at the following Ruby excerpt from <a
102
+ href="http://code.google.com/p/selenium/wiki/RubyBindings">code.google.com/p/selenium/wiki/RubyBindings</a>:</p>
103
+
104
+ <pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&quot;selenium-webdriver&quot;</span>
105
+
106
+ <span class="ruby-identifier">driver</span> = <span class="ruby-constant">Selenium</span><span class="ruby-operator">::</span><span class="ruby-constant">WebDriver</span>.<span class="ruby-identifier">for</span> :<span class="ruby-identifier">firefox</span>
107
+ <span class="ruby-identifier">driver</span>.<span class="ruby-identifier">navigate</span>.<span class="ruby-identifier">to</span> <span class="ruby-string">&quot;http://google.com&quot;</span>
108
+
109
+ <span class="ruby-identifier">element</span> = <span class="ruby-identifier">driver</span>.<span class="ruby-identifier">find_element</span>(:<span class="ruby-identifier">name</span>, <span class="ruby-string">&#39;q&#39;</span>)
110
+ <span class="ruby-identifier">element</span>.<span class="ruby-identifier">send_keys</span> <span class="ruby-string">&quot;Hello WebDriver!&quot;</span>
111
+ <span class="ruby-identifier">element</span>.<span class="ruby-identifier">submit</span>
112
+
113
+ <span class="ruby-identifier">puts</span> <span class="ruby-identifier">driver</span>.<span class="ruby-identifier">title</span>
114
+
115
+ <span class="ruby-identifier">driver</span>.<span class="ruby-identifier">quit</span>
116
+ </pre>
117
+
118
+ <p>While developers might find that code expressive enough, non-developers
119
+ might be a bit shocked.</p>
120
+
121
+ <p>The equivalent <a href="Bauxite.html">Bauxite</a> test is easier on the
122
+ eyes:</p>
123
+
124
+ <pre>open &quot;http://google.com&quot;
125
+ write &quot;name=q&quot; &quot;Hello WebDriver!&quot;
126
+ click &quot;gbqfb&quot;</pre>
127
+
128
+ <h2 id="label-Installation">Installation<span><a href="#label-Installation">&para;</a> <a href="#documentation">&uarr;</a></span></h2>
129
+
130
+ <p>In a nutshell:</p>
131
+
132
+ <pre>gem install bauxite</pre>
133
+
134
+ <p>If you don&#39;t have Ruby 2.x yet, check the <a
135
+ href="#installing-ruby">Installing Ruby</a> section below.</p>
136
+
137
+ <p>Remember you should probably install <a
138
+ href="http://www.mozilla.org">Firefox</a> (unless you want to use other
139
+ browsers or Selenium server by specifying the <code>-p</code> switch to the
140
+ <code>bauxite</code> executable).</p>
141
+
142
+ <h2 id="label-Hello+World">Hello World<span><a href="#label-Hello+World">&para;</a> <a href="#documentation">&uarr;</a></span></h2>
143
+
144
+ <p>Paste the following text into <code>hello.bxt</code>:</p>
145
+
146
+ <pre>open &quot;http://www.gnu.org/fun/jokes/helloworld.html&quot;</pre>
147
+
148
+ <p>Launch a terminal/command prompt and type:</p>
149
+
150
+ <pre>bauxite hello.bxt</pre>
151
+
152
+ <h2 id="label-Command-line+Interface">Command-line Interface<span><a href="#label-Command-line+Interface">&para;</a> <a href="#documentation">&uarr;</a></span></h2>
153
+
154
+ <p>The <code>bauxite</code> command-line program supports several
155
+ configuration options.</p>
156
+
157
+ <p>Refer to the <a
158
+ href="http://pzavolinsky.github.io/bauxite/Bauxite/Application.html">RDoc
159
+ documentation</a> for more details.</p>
160
+
161
+ <h2 id="label-The+Bauxite+Language">The <a href="Bauxite.html">Bauxite</a> Language<span><a href="#label-The+Bauxite+Language">&para;</a> <a href="#documentation">&uarr;</a></span></h2>
162
+
163
+ <p>The <a href="Bauxite.html">Bauxite</a> language is composed of two elements
164
+ <code>Actions</code> and <code>Selectors</code>: Actions are testing
165
+ operations such as “open this page”, “click this button”, “write this text
166
+ into that textbox”, etc. Selectors are ways of locating interesting
167
+ elements of a page such as a button, a textbox, a label, etc.</p>
168
+
169
+ <p>A typical <a href="Bauxite.html">Bauxite</a> test is a plain text file that
170
+ contains a series of Actions (one per line). Depending on the Action, a few
171
+ action arguments might need to be specified as well. For example in:</p>
172
+
173
+ <pre>open &quot;http://google.com&quot;
174
+ write &quot;name=q&quot; &quot;Hello WebDriver!&quot;
175
+ click &quot;gbqfb&quot;</pre>
176
+
177
+ <p><code>open</code>, <code>write</code> and <code>click</code> are Actions: -
178
+ <code>open</code> takes a single URL argument
179
+ (<code>&quot;http://google.com&quot;</code>) and opens that URL in the
180
+ browser. - <code>write</code> takes two arguments, a Selector
181
+ (<code>name=q</code>, more on this in a bit) and a text (<code>&quot;Hello
182
+ WebDriver!&quot;</code>), and writes the text into the element specified by
183
+ the Selector. - <code>click</code> takes a single Selector argument
184
+ (<code>gbqfb</code>) and clicks the element specified by the Selector.</p>
185
+
186
+ <p>In general, Action arguments can be surrounded by optional double quote
187
+ characters (<code>&quot;</code>). If an argument contains a space
188
+ character, the quotes are mandatory (this is the case for the second
189
+ argument to <code>write</code> in the example above).</p>
190
+
191
+ <p>Some Actions operate on page elements (e.g. <code>write</code>,
192
+ <code>click</code>, etc.). In order to locate these elements, <a
193
+ href="Bauxite.html">Bauxite</a> uses Selectors.</p>
194
+
195
+ <p>The trivial Selector is just a text that matches the last portion of the
196
+ <code>id</code> attribute of the target element.</p>
197
+
198
+ <p>For example, in this HTML fragment:</p>
199
+
200
+ <pre>&lt;input type=&quot;submit&quot; id=&quot;gbqfb&quot; value=&quot;Search&quot; /&gt;</pre>
201
+
202
+ <p>If we want to click the “Search” button we can do the following:</p>
203
+
204
+ <pre>click &quot;gbqfb&quot;</pre>
205
+
206
+ <p><a href="Bauxite.html">Bauxite</a> supports several other Selectors such as
207
+ <code>name=</code> in the example above. The <code>name</code> Selector
208
+ finds elements whose <code>name</code> attribute matches the text following
209
+ the <code>=</code> sign.</p>
210
+
211
+ <p>For example, in this HTML fragment:</p>
212
+
213
+ <pre>&lt;input type=&quot;text&quot; name=&quot;q&quot; /&gt;</pre>
214
+
215
+ <p>If we want to type the text “Hello WebDriver!” in textbox we can do the
216
+ following:</p>
217
+
218
+ <pre>write &quot;name=q&quot; &quot;Hello WebDriver!&quot;</pre>
219
+
220
+ <p>This section presented a brief introduction into the basic <a
221
+ href="Bauxite.html">Bauxite</a> concepts. For more details and a list of
222
+ every Action and Selector available, refer to the RDoc generated
223
+ documentation in:</p>
224
+ <ul><li>
225
+ <p><a
226
+ href="http://pzavolinsky.github.io/bauxite/Bauxite/Action.html#Action+Methods">Available
227
+ Actions</a></p>
228
+ </li><li>
229
+ <p><a
230
+ href="http://pzavolinsky.github.io/bauxite/Bauxite/Selector.html#Selector+Methods">Available
231
+ Bauxite Selectors</a></p>
232
+ </li><li>
233
+ <p><a
234
+ href="http://pzavolinsky.github.io/bauxite/Bauxite/Selector.html#class-Bauxite::Selector-label-Standard+Selenium+Selectors">Selenium
235
+ Standard Selectors</a></p>
236
+ </li><li>
237
+ <p><a href="http://pzavolinsky.github.io/bauxite/Bauxite/Action.html">Creating
238
+ new Actions</a></p>
239
+ </li><li>
240
+ <p><a
241
+ href="http://pzavolinsky.github.io/bauxite/Bauxite/Selector.html">Creating
242
+ new Selectors</a></p>
243
+ </li></ul>
244
+
245
+ <h2 id="label-Installing+Ruby">Installing Ruby<span><a href="#label-Installing+Ruby">&para;</a> <a href="#documentation">&uarr;</a></span></h2>
246
+
247
+ <p>I won&#39;t cover all the details of installing Ruby on your system (Google
248
+ knows best), but the following should probably work.</p>
249
+
250
+ <p>In GNU/Linux, you can install <a href="http://rvm.io/">RVM</a>, then Ruby:</p>
251
+
252
+ <pre>curl -sSL https://get.rvm.io | bash -s stable
253
+ source ~/.rvm/scripts/rvm
254
+ rvm install ruby-2.1.0</pre>
255
+
256
+ <p>In Windows, you can install Ruby 2.x with <a
257
+ href="http://rubyinstaller.org/downloads/">RubyInstaller</a>. After
258
+ everything is installed, launch the <code>Start Command Prompt with
259
+ Ruby</code> option in your start menu.</p>
260
+
261
+ <p>Regadless of your OS, you should be able to install <a
262
+ href="Bauxite.html">Bauxite</a> with:</p>
263
+
264
+ <pre>gem install bauxite</pre>
265
+
266
+ <h2 id="label-Implementation">Implementation<span><a href="#label-Implementation">&para;</a> <a href="#documentation">&uarr;</a></span></h2>
267
+
268
+ <p><a href="Bauxite.html">Bauxite</a> is both a command-line program and a
269
+ library. You can use the program to run <a href="Bauxite.html">Bauxite</a>
270
+ tests directly from a terminal, or you can embed the library in your own
271
+ application.</p>
272
+
273
+ <p>The command-line program is called <code>bauxite</code> and has several
274
+ command-line options, refer to the <a
275
+ href="http://pzavolinsky.github.io/bauxite/Bauxite/Application.html">RDoc
276
+ documentation</a> for more details.</p>
277
+
278
+ <p>If you are looking to embed <a href="Bauxite.html">Bauxite</a> in your
279
+ application take a look a the code in
280
+ <code>lib/bauxite/application.rb</code>, that should give you a full
281
+ example of how to create a <a href="Bauxite.html">Bauxite</a> Context and
282
+ execute some actions.</p>
283
+
284
+ <h2 id="label-Extending+Bauxite">Extending <a href="Bauxite.html">Bauxite</a><span><a href="#label-Extending+Bauxite">&para;</a> <a href="#documentation">&uarr;</a></span></h2>
285
+
286
+ <p><a href="Bauxite.html">Bauxite</a> supports two types of extensions:
287
+ functional extensions and coded plugins.</p>
288
+
289
+ <h3 id="label-Functional+extensions">Functional extensions<span><a href="#label-Functional+extensions">&para;</a> <a href="#documentation">&uarr;</a></span></h3>
290
+
291
+ <p>Functional extensions are composite constructs created using existing <a
292
+ href="Bauxite.html">Bauxite</a> actions to convey functional meaning. For
293
+ example, imagine a login form:</p>
294
+
295
+ <pre>&lt;!-- http://hostname/login.html --&gt;
296
+ &lt;form&gt;
297
+ &lt;input id=&quot;username&quot; name=&quot;username&quot; type=&quot;text&quot; /&gt;
298
+ &lt;input id=&quot;password&quot; name=&quot;password&quot; type=&quot;password&quot; /&gt;
299
+ &lt;input id=&quot;login&quot; type=&quot;submit&quot; value=&quot;Login&quot;/&gt;
300
+ &lt;/form&gt;</pre>
301
+
302
+ <p>The <a href="Bauxite.html">Bauxite</a> code to login into this site would
303
+ be:</p>
304
+
305
+ <pre>open &quot;http://hostname/login.html&quot;
306
+ write &quot;username&quot; &quot;jdoe&quot;
307
+ write &quot;password&quot; &quot;hello world!&quot;
308
+ click &quot;login&quot;</pre>
309
+
310
+ <p>If we were creating a suite of automated web tests for our
311
+ <em>hostname</em> site, we&#39;ll probably need to login into the site
312
+ several times. This would mean copy/pasting the four lines above into every
313
+ test in our suite.</p>
314
+
315
+ <p>Of course we can do better. We can split <a href="Bauxite.html">Bauxite</a>
316
+ tests into many files and include one test into another with the
317
+ <code>load</code> action.</p>
318
+
319
+ <pre># my_test.bxt (by the way, this is a comment)
320
+ load other_test_fragment.bxt
321
+ ...</pre>
322
+
323
+ <p>Back to our login example, first we can package the login part of our tests
324
+ into a separate <a href="Bauxite.html">Bauxite</a> file:</p>
325
+
326
+ <pre># login.bxt
327
+ open &quot;http://hostname/login.html&quot;
328
+ write &quot;username&quot; &quot;jdoe&quot;
329
+ write &quot;password&quot; &quot;hello world!&quot;
330
+ click &quot;login&quot;</pre>
331
+
332
+ <p>Of course we would like to be able to login with different
333
+ username/password combinations, so we can replace the literals in
334
+ <code>login.bxt</code> with variables:</p>
335
+
336
+ <pre># login.bxt
337
+ open &quot;http://hostname/login.html&quot;
338
+ write &quot;username&quot; &quot;${username}&quot;
339
+ write &quot;password&quot; &quot;${password}&quot;
340
+ click &quot;login&quot;</pre>
341
+
342
+ <p>Now, we would like to assert that both <code>username</code> and
343
+ <code>password</code> variables are set before calling our test (just in
344
+ case someone forgets). We can do this with <code>params</code></p>
345
+
346
+ <pre># login.bxt
347
+ params username password
348
+ open &quot;http://hostname/login.html&quot;
349
+ write &quot;username&quot; &quot;${username}&quot;
350
+ write &quot;password&quot; &quot;${password}&quot;
351
+ click &quot;login&quot;</pre>
352
+
353
+ <p>In our main test we can load <code>login.bxt</code> and specify the
354
+ variables required using this code:</p>
355
+
356
+ <pre># main_test.bxt
357
+ load &quot;login.bxt&quot; &quot;username=jdoe&quot; &quot;password=hello world!&quot;
358
+
359
+ # additional actions go here</pre>
360
+
361
+ <p>We could improve this even further by creating an <code>alias</code> to
362
+ simplify the login process. To do this, lets create an new file called
363
+ <code>alias.bxt</code>:</p>
364
+
365
+ <pre># alias.bxt
366
+ alias &quot;login&quot; &quot;load&quot; &quot;login.bxt&quot; &quot;username=${1}&quot; &quot;password=${2}&quot;</pre>
367
+
368
+ <p>Note that the <code>alias</code> action supports positional arguments.</p>
369
+
370
+ <p>Now we can change our main test to use our alias:</p>
371
+
372
+ <pre># main_test.bxt
373
+ load &quot;alias.bxt&quot;
374
+
375
+ login &quot;jdoe&quot; &quot;hello world!&quot;
376
+
377
+ # additional actions go here</pre>
378
+
379
+ <p>That was a bit of work but the resulting test is purely functional (minus
380
+ the load alias part, of course).</p>
381
+
382
+ <h3 id="label-Coded+plugins">Coded plugins<span><a href="#label-Coded+plugins">&para;</a> <a href="#documentation">&uarr;</a></span></h3>
383
+
384
+ <p>Coded plugins are Ruby files that extend the <a
385
+ href="Bauxite.html">Bauxite</a> language by providing additional language
386
+ elements. Coded plugins can be used to create <a
387
+ href="Bauxite.html">Bauxite</a> actions, selectors and loggers.</p>
388
+
389
+ <p>For example lets assume that throughout a web application input elements
390
+ were identified using a custom HTML attribute instead of <code>id</code>.
391
+ For example:</p>
392
+
393
+ <pre>&lt;form&gt;
394
+ &lt;input custom-attr=&quot;username&quot; type=&quot;text&quot; /&gt;
395
+ &lt;input custom-attr=&quot;password&quot; type=&quot;password&quot; /&gt;
396
+ &lt;input custom-attr=&quot;login&quot; type=&quot;submit&quot; value=&quot;Login&quot;/&gt;
397
+ &lt;/form&gt;</pre>
398
+
399
+ <p>Using standard <a href="Bauxite.html">Bauxite</a> language we could select
400
+ these elements using:</p>
401
+
402
+ <pre># === my_test.bxt === #
403
+ write &quot;attr=custom-attr:username&quot; &quot;jdoe&quot;
404
+ write &quot;attr=custom-attr:password&quot; &quot;hello world!&quot;
405
+ click &quot;attr=custom-attr:login&quot;</pre>
406
+
407
+ <p>But we can improve the overall readability of our test by using a coded
408
+ plugin:</p>
409
+
410
+ <pre class="ruby"><span class="ruby-comment"># === plugins/custom_selector.rb === #</span>
411
+ <span class="ruby-keyword">class</span> <span class="ruby-constant">Bauxite</span><span class="ruby-operator">::</span><span class="ruby-constant">Selector</span>
412
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">custom</span>(<span class="ruby-identifier">value</span>)
413
+ <span class="ruby-identifier">attr</span> <span class="ruby-node">&quot;custom-attr:#{value}&quot;</span>
414
+ <span class="ruby-keyword">end</span>
415
+ <span class="ruby-keyword">end</span>
416
+ </pre>
417
+
418
+ <p>Now we can change our test to look like this:</p>
419
+
420
+ <pre># === my_test.bxt === #
421
+ write &quot;custom=username&quot; &quot;jdoe&quot;
422
+ write &quot;custom=password&quot; &quot;hello world!&quot;
423
+ click &quot;custom=login&quot;</pre>
424
+
425
+ <p>Finally, to execute <a href="Bauxite.html">Bauxite</a> loading our plugin
426
+ we can type:</p>
427
+
428
+ <pre>bauxite -e plugins my_test.bxt</pre>
429
+ </main>
430
+
431
+
432
+
433
+ <footer id="validator-badges" role="contentinfo">
434
+ <p><a href="http://validator.w3.org/check/referer">Validate</a>
435
+ <p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.1.
436
+ <p>Based on <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
437
+ </footer>
438
+
data/doc/created.rid CHANGED
@@ -1,42 +1,43 @@
1
- Mon, 27 Jan 2014 11:29:20 -0300
2
- lib/bauxite/actions/js.rb Mon, 27 Jan 2014 11:02:44 -0300
3
- lib/bauxite/actions/exec.rb Mon, 27 Jan 2014 11:02:44 -0300
4
- lib/bauxite/actions/wait.rb Mon, 27 Jan 2014 11:02:44 -0300
5
- lib/bauxite/actions/assert.rb Mon, 27 Jan 2014 11:02:44 -0300
6
- lib/bauxite/actions/ruby.rb Mon, 27 Jan 2014 11:02:44 -0300
7
- lib/bauxite/actions/store.rb Mon, 27 Jan 2014 11:02:44 -0300
8
- lib/bauxite/actions/assertv.rb Mon, 27 Jan 2014 11:02:44 -0300
9
- lib/bauxite/actions/alias.rb Mon, 27 Jan 2014 11:02:44 -0300
10
- lib/bauxite/actions/tryload.rb Mon, 27 Jan 2014 11:02:44 -0300
11
- lib/bauxite/actions/test.rb Mon, 27 Jan 2014 11:02:44 -0300
12
- lib/bauxite/actions/load.rb Mon, 27 Jan 2014 11:02:44 -0300
13
- lib/bauxite/actions/open.rb Mon, 27 Jan 2014 11:02:44 -0300
14
- lib/bauxite/actions/reset.rb Mon, 27 Jan 2014 11:02:44 -0300
15
- lib/bauxite/actions/write.rb Mon, 27 Jan 2014 11:02:44 -0300
16
- lib/bauxite/actions/replace.rb Mon, 27 Jan 2014 11:02:44 -0300
17
- lib/bauxite/actions/echo.rb Mon, 27 Jan 2014 11:02:44 -0300
18
- lib/bauxite/actions/set.rb Mon, 27 Jan 2014 11:02:44 -0300
19
- lib/bauxite/actions/params.rb Mon, 27 Jan 2014 11:02:44 -0300
20
- lib/bauxite/actions/debug.rb Mon, 27 Jan 2014 11:02:44 -0300
21
- lib/bauxite/actions/return.rb Mon, 27 Jan 2014 11:02:44 -0300
22
- lib/bauxite/actions/click.rb Mon, 27 Jan 2014 11:02:44 -0300
23
- lib/bauxite/actions/source.rb Mon, 27 Jan 2014 11:02:44 -0300
24
- lib/bauxite/actions/break.rb Mon, 27 Jan 2014 11:02:44 -0300
25
- lib/bauxite/core/selector.rb Mon, 27 Jan 2014 11:02:44 -0300
26
- lib/bauxite/core/errors.rb Mon, 27 Jan 2014 11:02:44 -0300
27
- lib/bauxite/core/context.rb Mon, 27 Jan 2014 11:02:44 -0300
28
- lib/bauxite/core/parser.rb Mon, 27 Jan 2014 11:02:44 -0300
29
- lib/bauxite/core/action.rb Mon, 27 Jan 2014 11:02:44 -0300
30
- lib/bauxite/core/logger.rb Mon, 27 Jan 2014 11:02:44 -0300
31
- lib/bauxite/parsers/default.rb Mon, 27 Jan 2014 11:02:44 -0300
32
- lib/bauxite/parsers/html.rb Mon, 27 Jan 2014 11:02:44 -0300
33
- lib/bauxite/parsers/csv.rb Mon, 27 Jan 2014 11:02:44 -0300
34
- lib/bauxite/application.rb Mon, 27 Jan 2014 11:02:44 -0300
35
- lib/bauxite/selectors/frame.rb Mon, 27 Jan 2014 11:02:44 -0300
36
- lib/bauxite/selectors/attr.rb Mon, 27 Jan 2014 11:02:44 -0300
37
- lib/bauxite/selectors/default.rb Mon, 27 Jan 2014 11:02:44 -0300
38
- lib/bauxite/loggers/terminal.rb Mon, 27 Jan 2014 11:04:47 -0300
39
- lib/bauxite/loggers/echo.rb Mon, 27 Jan 2014 11:03:37 -0300
40
- lib/bauxite/loggers/composite.rb Mon, 27 Jan 2014 11:02:44 -0300
41
- lib/bauxite/loggers/xterm.rb Mon, 27 Jan 2014 11:02:44 -0300
42
- lib/bauxite/loggers/file.rb Mon, 27 Jan 2014 11:02:44 -0300
1
+ Mon, 27 Jan 2014 21:01:52 -0300
2
+ README.md Mon, 27 Jan 2014 20:58:49 -0300
3
+ lib/bauxite/actions/break.rb Mon, 27 Jan 2014 20:58:50 -0300
4
+ lib/bauxite/actions/assert.rb Mon, 27 Jan 2014 20:58:50 -0300
5
+ lib/bauxite/actions/wait.rb Mon, 27 Jan 2014 20:58:50 -0300
6
+ lib/bauxite/actions/assertv.rb Mon, 27 Jan 2014 20:58:50 -0300
7
+ lib/bauxite/actions/open.rb Mon, 27 Jan 2014 20:58:50 -0300
8
+ lib/bauxite/actions/return.rb Mon, 27 Jan 2014 20:58:50 -0300
9
+ lib/bauxite/actions/ruby.rb Mon, 27 Jan 2014 20:58:50 -0300
10
+ lib/bauxite/actions/echo.rb Mon, 27 Jan 2014 20:58:50 -0300
11
+ lib/bauxite/actions/js.rb Mon, 27 Jan 2014 20:58:50 -0300
12
+ lib/bauxite/actions/replace.rb Mon, 27 Jan 2014 20:58:50 -0300
13
+ lib/bauxite/actions/write.rb Mon, 27 Jan 2014 20:58:50 -0300
14
+ lib/bauxite/actions/params.rb Mon, 27 Jan 2014 20:58:50 -0300
15
+ lib/bauxite/actions/set.rb Mon, 27 Jan 2014 20:58:50 -0300
16
+ lib/bauxite/actions/click.rb Mon, 27 Jan 2014 20:58:50 -0300
17
+ lib/bauxite/actions/reset.rb Mon, 27 Jan 2014 20:58:50 -0300
18
+ lib/bauxite/actions/debug.rb Mon, 27 Jan 2014 20:58:50 -0300
19
+ lib/bauxite/actions/source.rb Mon, 27 Jan 2014 20:58:50 -0300
20
+ lib/bauxite/actions/exec.rb Mon, 27 Jan 2014 20:58:50 -0300
21
+ lib/bauxite/actions/store.rb Mon, 27 Jan 2014 20:58:50 -0300
22
+ lib/bauxite/actions/tryload.rb Mon, 27 Jan 2014 20:58:50 -0300
23
+ lib/bauxite/actions/load.rb Mon, 27 Jan 2014 20:58:50 -0300
24
+ lib/bauxite/actions/test.rb Mon, 27 Jan 2014 20:58:50 -0300
25
+ lib/bauxite/actions/alias.rb Mon, 27 Jan 2014 20:58:50 -0300
26
+ lib/bauxite/parsers/html.rb Mon, 27 Jan 2014 20:58:50 -0300
27
+ lib/bauxite/parsers/csv.rb Mon, 27 Jan 2014 20:58:50 -0300
28
+ lib/bauxite/parsers/default.rb Mon, 27 Jan 2014 20:58:50 -0300
29
+ lib/bauxite/application.rb Mon, 27 Jan 2014 20:58:50 -0300
30
+ lib/bauxite/core/errors.rb Mon, 27 Jan 2014 20:58:50 -0300
31
+ lib/bauxite/core/selector.rb Mon, 27 Jan 2014 20:58:50 -0300
32
+ lib/bauxite/core/context.rb Mon, 27 Jan 2014 20:58:50 -0300
33
+ lib/bauxite/core/logger.rb Mon, 27 Jan 2014 20:58:50 -0300
34
+ lib/bauxite/core/action.rb Mon, 27 Jan 2014 20:58:50 -0300
35
+ lib/bauxite/core/parser.rb Mon, 27 Jan 2014 20:58:50 -0300
36
+ lib/bauxite/selectors/attr.rb Mon, 27 Jan 2014 20:58:50 -0300
37
+ lib/bauxite/selectors/default.rb Mon, 27 Jan 2014 20:58:50 -0300
38
+ lib/bauxite/selectors/frame.rb Mon, 27 Jan 2014 20:58:50 -0300
39
+ lib/bauxite/loggers/terminal.rb Mon, 27 Jan 2014 20:58:50 -0300
40
+ lib/bauxite/loggers/file.rb Mon, 27 Jan 2014 20:58:50 -0300
41
+ lib/bauxite/loggers/composite.rb Mon, 27 Jan 2014 20:58:50 -0300
42
+ lib/bauxite/loggers/echo.rb Mon, 27 Jan 2014 20:58:50 -0300
43
+ lib/bauxite/loggers/xterm.rb Mon, 27 Jan 2014 20:58:50 -0300