doc/Bauxite/Action.html in bauxite-0.6.3 vs doc/Bauxite/Action.html in bauxite-0.6.4
- old
+ new
@@ -97,12 +97,16 @@
<li ><a href="#method-i-alias_action">#alias_action</a>
<li ><a href="#method-i-assert">#assert</a>
+ <li ><a href="#method-i-asserth">#asserth</a>
+
<li ><a href="#method-i-assertv">#assertv</a>
+ <li ><a href="#method-i-assertw">#assertw</a>
+
<li ><a href="#method-i-break_action">#break_action</a>
<li ><a href="#method-i-capture">#capture</a>
<li ><a href="#method-i-click">#click</a>
@@ -425,10 +429,76 @@
</div>
+ <div id="method-i-asserth" class="method-detail ">
+
+ <div class="method-heading">
+ <span class="method-name">asserth</span><span
+ class="method-args">(*args)</span>
+
+ <span class="method-click-advice">click to toggle source</span>
+
+ </div>
+
+
+ <div class="method-description">
+
+ <p>Replays the current GET request and asserts that the HTTP headers returned
+by that request match each of the <code>args</code> specified.</p>
+
+<p>Note that this action results in an additional HTTP GET request to the
+current browser url.</p>
+
+<p>The syntax of <code>args</code> is:</p>
+
+<pre>"header_name1=expression1" "header_name2=expression2" ...</pre>
+
+<p>Where <code>expression</code> is a regular expression. Note that multiple
+headers can be asserted in a single <a
+href="Action.html#method-i-asserth">asserth</a> call. Also note that if the
+same header is specified more than once, the value of the header must match
+every expression specified.</p>
+
+<p>For example:</p>
+
+<pre class="ruby"><span class="ruby-comment"># assuming response headers { 'Content-Type' => 'text/plain' }</span>
+<span class="ruby-identifier">asserth</span> <span class="ruby-string">"content-type=plain"</span>
+<span class="ruby-identifier">asserth</span> <span class="ruby-string">"content-type=^text"</span> <span class="ruby-string">"content-type=/plain$"</span>
+<span class="ruby-comment"># => these assertions would pass</span>
+</pre>
+
+
+
+
+ <div class="method-source-code" id="asserth-source">
+ <pre><span class="ruby-comment"># File lib/bauxite/actions/asserth.rb, line 46</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier">asserth</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
+ <span class="ruby-identifier">uri</span> = <span class="ruby-constant">URI</span>(<span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">driver</span>.<span class="ruby-identifier">current_url</span>)
+ <span class="ruby-identifier">res</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>.<span class="ruby-identifier">get_response</span>(<span class="ruby-identifier">uri</span>)
+ <span class="ruby-identifier">args</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span>
+ <span class="ruby-identifier">name</span>,<span class="ruby-identifier">value</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">'='</span>, <span class="ruby-value">2</span>);
+ <span class="ruby-identifier">name</span> = <span class="ruby-identifier">name</span>.<span class="ruby-identifier">strip</span>.<span class="ruby-identifier">downcase</span>
+ <span class="ruby-identifier">value</span> = <span class="ruby-identifier">value</span>.<span class="ruby-identifier">strip</span>
+
+ <span class="ruby-identifier">actual</span> = <span class="ruby-identifier">res</span>[<span class="ruby-identifier">name</span>] <span class="ruby-operator">||</span> <span class="ruby-string">''</span>
+ <span class="ruby-keyword">unless</span> <span class="ruby-identifier">actual</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">_pattern</span>(<span class="ruby-identifier">value</span>)
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">Bauxite</span><span class="ruby-operator">::</span><span class="ruby-constant">Errors</span><span class="ruby-operator">::</span><span class="ruby-constant">AssertionError</span>, <span class="ruby-node">"Assertion failed for HTTP Header '#{name}': expected '#{value}', got '#{actual}'"</span>
+ <span class="ruby-keyword">end</span>
+ <span class="ruby-keyword">end</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+
+ </div>
+
+
+
+
+ </div>
+
+
<div id="method-i-assertv" class="method-detail ">
<div class="method-heading">
<span class="method-name">assertv</span><span
class="method-args">(expected, actual)</span>
@@ -461,9 +531,62 @@
<span class="ruby-keyword">def</span> <span class="ruby-identifier">assertv</span>(<span class="ruby-identifier">expected</span>, <span class="ruby-identifier">actual</span>)
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">actual</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">_pattern</span>(<span class="ruby-identifier">expected</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Bauxite</span><span class="ruby-operator">::</span><span class="ruby-constant">Errors</span><span class="ruby-operator">::</span><span class="ruby-constant">AssertionError</span>, <span class="ruby-node">"Assertion failed: '#{actual}' does not match '#{expected}'"</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">true</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+
+ </div>
+
+
+
+
+ </div>
+
+
+ <div id="method-i-assertw" class="method-detail ">
+
+ <div class="method-heading">
+ <span class="method-name">assertw</span><span
+ class="method-args">(count = 1)</span>
+
+ <span class="method-click-advice">click to toggle source</span>
+
+ </div>
+
+
+ <div class="method-description">
+
+ <p>Asserts that the number of currently open windows equals
+<code>count</code>.</p>
+
+<p>For example:</p>
+
+<pre class="ruby"><span class="ruby-identifier">assertw</span>
+<span class="ruby-comment"># => this assertion would pass (only the main window is open)</span>
+
+<span class="ruby-identifier">js</span> <span class="ruby-string">"window.w = window.open()"</span>
+<span class="ruby-identifier">assertw</span> <span class="ruby-value">2</span>
+<span class="ruby-comment"># => this assertion would pass (main window and popup)</span>
+
+<span class="ruby-identifier">js</span> <span class="ruby-string">"setTimeout(function() { window.w.close(); }, 3000);"</span>
+<span class="ruby-identifier">assertw</span> <span class="ruby-value">1</span>
+<span class="ruby-comment"># => this assertion would pass (popup was closed)</span>
+</pre>
+
+
+
+
+ <div class="method-source-code" id="assertw-source">
+ <pre><span class="ruby-comment"># File lib/bauxite/actions/assertw.rb, line 39</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier">assertw</span>(<span class="ruby-identifier">count</span> = <span class="ruby-value">1</span>)
+ <span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">with_timeout</span> <span class="ruby-constant">Bauxite</span><span class="ruby-operator">::</span><span class="ruby-constant">Errors</span><span class="ruby-operator">::</span><span class="ruby-constant">AssertionError</span> <span class="ruby-keyword">do</span>
+ <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">driver</span>.<span class="ruby-identifier">window_handles</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">count</span>.<span class="ruby-identifier">to_i</span>
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">Bauxite</span><span class="ruby-operator">::</span><span class="ruby-constant">Errors</span><span class="ruby-operator">::</span><span class="ruby-constant">AssertionError</span>, <span class="ruby-string">"Assertion failed: all popups must be closed."</span>
+ <span class="ruby-keyword">end</span>
+ <span class="ruby-keyword">true</span>
+ <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>