<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7505607283157969070</id><updated>2026-03-31T03:24:52.964-04:00</updated><category term="robotframework"/><category term="api testing"/><category term="automation"/><category term="automation tutorial"/><category term="git"/><category term="restinstance"/><category term="selenium"/><category term="testing"/><category term="endpoint testing"/><category term="restful"/><category term="robot framework basic authentication"/><category term="automation testing"/><category term="json"/><category term="cypress"/><category term="fixing flaky tests"/><category term="rest"/><category term="schema testing"/><category term="selenium 2"/><category term="selenium 3"/><category term="asic scrypt mining"/><category term="automated-testing"/><category term="bash"/><category term="bitbucket"/><category term="bitcoin"/><category term="ci/cd"/><category term="collections"/><category term="continuous integration"/><category term="css"/><category term="css linting"/><category term="developer settings"/><category term="dogecoin"/><category term="end to end testing"/><category term="flaky tests"/><category term="flex"/><category term="flexbox"/><category term="how to install robot framework on jenkins"/><category term="installation"/><category term="jenkins"/><category term="linting"/><category term="litecoin"/><category term="mac"/><category term="mining"/><category term="optional arguments"/><category term="pull request"/><category term="python"/><category term="reliable tests"/><category term="robotframework setup"/><category term="scrypt mining"/><category term="selenium grid"/><category term="selenium migration"/><category term="software testing"/><category term="style linting"/><category term="zeusminer"/><title type='text'>JJ the Engineer</title><subtitle type='html'>An engineer learning new things and logging my thoughts as I learn.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>24</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-3624613585662854853</id><published>2020-07-22T14:40:00.004-04:00</published><updated>2020-12-01T12:15:40.125-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bitbucket"/><category scheme="http://www.blogger.com/atom/ns#" term="git"/><category scheme="http://www.blogger.com/atom/ns#" term="pull request"/><title type='text'>How to resolve bitbucket merge conflicts to master from a release branch?</title><content type='html'>This happens a fair amount on bitbucket, and I needed a reminder on how to resolve the conflicts without merging the branch into my feature branch which would cause history issues.&lt;br /&gt;
&lt;!--StartFragment--&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Steps&lt;/h2&gt;
&lt;ol&gt;
&lt;li style=&quot;margin-bottom: 0px; margin-top: 0px; vertical-align: middle;&quot; value=&quot;1&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt; font-style: normal; font-weight: normal;&quot;&gt;$ git checkout &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt; font-style: normal;&quot;&gt;&lt;b&gt;master&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0px; margin-top: 0px; vertical-align: middle;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt;&quot;&gt;$ git checkout -b
     &lt;b&gt;resolve-conflicts-branch&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 14.6667px;&quot;&gt;You want to branch off of master to see the conflicted changes&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li style=&quot;margin-bottom: 0px; margin-top: 0px; vertical-align: middle;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt;&quot;&gt;$ git pull &lt;b&gt;origin&lt;/b&gt;
     &lt;b&gt;release/branch-id&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li style=&quot;margin-bottom: 0px; margin-top: 0px; vertical-align: middle;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;This should move the changes you wanted to go into &lt;b&gt;master&lt;/b&gt; into the newly created branch&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li style=&quot;margin-bottom: 0px; margin-top: 0px; vertical-align: middle;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt;&quot;&gt;All the merge conflicts
     should appear, now sort them out&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0px; margin-top: 0px; vertical-align: middle;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt;&quot;&gt;git push -u &lt;b&gt;origin&lt;/b&gt;
     &lt;b&gt;resolve-conflicts-branch&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li style=&quot;margin-bottom: 0px; margin-top: 0px; vertical-align: middle;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt;&quot;&gt;Push to remote so you can create a PR&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li style=&quot;margin-bottom: 0px; margin-top: 0px; vertical-align: middle;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt;&quot;&gt;Create a pull request from
     source &lt;b&gt;resolve-conflicts-branch&lt;/b&gt; to &lt;b&gt;release/branch-id&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0px; margin-top: 0px; vertical-align: middle;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt;&quot;&gt;Review and use merge commit
     -no-ff strategy.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
This is useful if you are trying to make a pull request to &lt;b&gt;master&lt;/b&gt;, but there are merge conflicts that need to be resolved. In your pull request, you might not see any diff&#39;s, but the history change and conflict resolution is there. Merge it into the release branch, and that should resolve your merge conflicts in the pull request&amp;nbsp;that is going into &lt;b&gt;master&lt;/b&gt;.&lt;/blockquote&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Notes&lt;/h2&gt;&lt;p&gt;If you apply this method for a merge conflict resolution using develop, you will want to open a PR from &lt;b&gt;resolve-conflicts-branch&lt;/b&gt; to &lt;b&gt;develop&lt;/b&gt; instead of the &lt;b&gt;release/branch-id&lt;/b&gt; since &lt;b&gt;develop&lt;/b&gt; will have activity that &lt;b&gt;master&lt;/b&gt; wont.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg55U2-9suFYtisMrVx1K7Ror9NKGpE8W6dKWjeo769x3iY1NBcU50sALIPVWFpeWUZ_-L6fcOkqlq2Wm8PS1wFRoVevfocCxO7j-CvawzB6jYbJ9gl8VycvhbONQFt2gkjudv3eV2z9Vo/s1600/tron.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;625&quot; data-original-width=&quot;1000&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg55U2-9suFYtisMrVx1K7Ror9NKGpE8W6dKWjeo769x3iY1NBcU50sALIPVWFpeWUZ_-L6fcOkqlq2Wm8PS1wFRoVevfocCxO7j-CvawzB6jYbJ9gl8VycvhbONQFt2gkjudv3eV2z9Vo/s640/tron.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/3624613585662854853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2020/07/how-to-resolve-bitbucket-merge.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/3624613585662854853'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/3624613585662854853'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2020/07/how-to-resolve-bitbucket-merge.html' title='How to resolve bitbucket merge conflicts to master from a release branch?'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg55U2-9suFYtisMrVx1K7Ror9NKGpE8W6dKWjeo769x3iY1NBcU50sALIPVWFpeWUZ_-L6fcOkqlq2Wm8PS1wFRoVevfocCxO7j-CvawzB6jYbJ9gl8VycvhbONQFt2gkjudv3eV2z9Vo/s72-c/tron.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-5108403643807301635</id><published>2019-10-16T08:58:00.001-04:00</published><updated>2019-10-16T08:59:21.190-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="automation testing"/><category scheme="http://www.blogger.com/atom/ns#" term="css"/><category scheme="http://www.blogger.com/atom/ns#" term="css linting"/><category scheme="http://www.blogger.com/atom/ns#" term="flex"/><category scheme="http://www.blogger.com/atom/ns#" term="flexbox"/><category scheme="http://www.blogger.com/atom/ns#" term="linting"/><category scheme="http://www.blogger.com/atom/ns#" term="style linting"/><title type='text'>Enforcing Full Flex Rules using Stylelint for IE11 Support</title><content type='html'>When using Flex, we discovered we needed to write out the full rules to support IE11. Otherwise, IE11 will do some funky things with the styling, and cause a bunch of broken modals for us. This was listed in &lt;a href=&quot;https://github.com/philipwalton/flexbugs#flexbug-8&quot; target=&quot;_blank&quot;&gt;flexbug #8&lt;/a&gt;, and instead of remembering that we had to do it - we figured it made sense to just enforce it at the linting level. It&#39;s pretty straight forward, but it did take a while to figure out as we weren&#39;t super familiar with custom rules.&lt;br /&gt;
&lt;br /&gt;
This is our example &lt;b&gt;.stylelintrc &lt;/b&gt;- We added the flex rule under &quot;declaration-property-value-whitelist&quot;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
{&lt;br /&gt;
&amp;nbsp; &quot;extends&quot;: &quot;stylelint-config-standard&quot;,&lt;br /&gt;
&amp;nbsp; &quot;rules&quot;: {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &quot;color-hex-case&quot;: &quot;upper&quot;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &quot;color-hex-length&quot;: &quot;long&quot;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &quot;at-rule-no-unknown&quot;: null,&lt;br /&gt;
&lt;span style=&quot;background-color: yellow;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;b&gt;&quot;declaration-property-value-whitelist&quot;: {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;flex&quot;: [&quot;/^\\S+\\s+\\S+\\s+\\S+$/&quot;]&lt;br /&gt;&amp;nbsp; &amp;nbsp; },&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; }&lt;br /&gt;
}&lt;/blockquote&gt;
To make your life even easier - here are some simple translations.&lt;br /&gt;
Here is a &lt;a href=&quot;https://css-tricks.com/almanac/properties/f/flex/&quot; target=&quot;_blank&quot;&gt;great guide from css tricks&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;flex:none should be “flex: 0 0 auto”&lt;/li&gt;
&lt;li&gt;flex:auto&amp;nbsp; should be “flex: 1 1 auto”&lt;/li&gt;
&lt;li&gt;flex:1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;should be “flex: 1 1 0%”&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Hope this makes life easier for you!&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBExPkH6pQNBrhWcGezu2x-CsxQ9jMEvkoVeKj4kj2Oyz2z_DKeot-oQhwYuM5o0PDz9bINAY3o35VW3av3gR5S1zt0cx4EoYW8wfYRmNqi-3ZpwM_NdsWD-R3GhmA9y83TmmUZsuuSjc/s1600/Windows-10-640x353.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;353&quot; data-original-width=&quot;640&quot; height=&quot;352&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBExPkH6pQNBrhWcGezu2x-CsxQ9jMEvkoVeKj4kj2Oyz2z_DKeot-oQhwYuM5o0PDz9bINAY3o35VW3av3gR5S1zt0cx4EoYW8wfYRmNqi-3ZpwM_NdsWD-R3GhmA9y83TmmUZsuuSjc/s640/Windows-10-640x353.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/5108403643807301635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2019/10/enforcing-full-flex-rules-in-csslint.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/5108403643807301635'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/5108403643807301635'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2019/10/enforcing-full-flex-rules-in-csslint.html' title='Enforcing Full Flex Rules using Stylelint for IE11 Support'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBExPkH6pQNBrhWcGezu2x-CsxQ9jMEvkoVeKj4kj2Oyz2z_DKeot-oQhwYuM5o0PDz9bINAY3o35VW3av3gR5S1zt0cx4EoYW8wfYRmNqi-3ZpwM_NdsWD-R3GhmA9y83TmmUZsuuSjc/s72-c/Windows-10-640x353.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-7624228494081596704</id><published>2019-10-01T07:58:00.001-04:00</published><updated>2019-10-01T07:59:09.940-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="automation"/><category scheme="http://www.blogger.com/atom/ns#" term="automation testing"/><category scheme="http://www.blogger.com/atom/ns#" term="cypress"/><category scheme="http://www.blogger.com/atom/ns#" term="fixing flaky tests"/><category scheme="http://www.blogger.com/atom/ns#" term="reliable tests"/><title type='text'>Testing for reliability of a Cypress test</title><content type='html'>&lt;h2&gt;
Overview&lt;/h2&gt;
When writing automation tests, you want to ensure the test is reliable, and doesn&#39;t provide false positives for you and your team. This is especially important when the test makes it into the continuous integration(CI) pipeline. For Cypress, we do two things to try and address reliability.&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;The first is to ensure the test can run x number of times without breaking.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;The second is for end-to-end(e2e) tests that require a full run-through, but the backend might be a little bit flaky.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
Method 1&lt;/h2&gt;
&lt;div&gt;
I usually run the tests I write a few times before submitting it for a pull request to go into the main CI pipeline. Since Cypress tests are written in javascript, I wrap the entire test into a loop! I run this test 2-3 times to ensure it passes consistently. I found that if you increase the number, the browser will crash sometimes. Make sure you remove this after validating that the test is reliable!&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; line-height: 18px; white-space: pre;&quot;&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;color: #569cd6;&quot;&gt;var&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;i&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;;&lt;br /&gt;
&lt;span style=&quot;color: #c586c0;&quot;&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #9cdcfe;&quot;&gt;i&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;i&lt;/span&gt;&amp;nbsp;&amp;lt;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;20&lt;/span&gt;&amp;nbsp;;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;i&lt;/span&gt;++)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;describe&lt;/span&gt;(&lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;Is&amp;nbsp;my&amp;nbsp;test&amp;nbsp;actually&amp;nbsp;reliably?&#39;&lt;/span&gt;,&amp;nbsp;()&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;=&amp;gt;&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;it&lt;/span&gt;(&lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;should&amp;nbsp;do&amp;nbsp;that&amp;nbsp;thing&#39;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;function&lt;/span&gt;()&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a9955;&quot;&gt;//&amp;nbsp;the&amp;nbsp;new&amp;nbsp;test&amp;nbsp;I&amp;nbsp;want&amp;nbsp;to&amp;nbsp;validate&amp;nbsp;is&amp;nbsp;working&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})&lt;br /&gt;
&amp;nbsp;&amp;nbsp;})&lt;br /&gt;
}&lt;/blockquote&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
Method 2&lt;/h2&gt;
&lt;div&gt;
The second method has been written up before, but its basically retrying only failed tests to account for odd backend instability. You can &lt;a href=&quot;https://jjtheengineer.blogspot.com/2019/09/quick-and-dirty-way-to-fix-flakiness-in.html&quot; target=&quot;_blank&quot;&gt;view the write up here&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Hopefully some of these tips and tricks will help you on your automation journey. Good luck!&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigJj4NdXHE-h2Vn8dhSMczVFXwrV-1mXQlpEdX9fVMRCRmdau4A5-Y41b0Pcg4eI78pojsC_kr4yx08kkneoAYlMuEZDZ1XEmccApIqG1der3UPVYOwxuxfTFoyRZVYUx26e6yPbd8hj0/s1600/neuronet22x_xthumb.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;250&quot; data-original-width=&quot;667&quot; height=&quot;236&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigJj4NdXHE-h2Vn8dhSMczVFXwrV-1mXQlpEdX9fVMRCRmdau4A5-Y41b0Pcg4eI78pojsC_kr4yx08kkneoAYlMuEZDZ1XEmccApIqG1der3UPVYOwxuxfTFoyRZVYUx26e6yPbd8hj0/s640/neuronet22x_xthumb.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/7624228494081596704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2019/10/testing-for-reliability-of-cypress-test.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/7624228494081596704'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/7624228494081596704'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2019/10/testing-for-reliability-of-cypress-test.html' title='Testing for reliability of a Cypress test'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigJj4NdXHE-h2Vn8dhSMczVFXwrV-1mXQlpEdX9fVMRCRmdau4A5-Y41b0Pcg4eI78pojsC_kr4yx08kkneoAYlMuEZDZ1XEmccApIqG1der3UPVYOwxuxfTFoyRZVYUx26e6yPbd8hj0/s72-c/neuronet22x_xthumb.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-2678694104985475798</id><published>2019-09-20T09:34:00.001-04:00</published><updated>2019-09-20T09:34:28.174-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="automation testing"/><category scheme="http://www.blogger.com/atom/ns#" term="cypress"/><category scheme="http://www.blogger.com/atom/ns#" term="end to end testing"/><category scheme="http://www.blogger.com/atom/ns#" term="fixing flaky tests"/><category scheme="http://www.blogger.com/atom/ns#" term="flaky tests"/><category scheme="http://www.blogger.com/atom/ns#" term="selenium"/><title type='text'>Quick and dirty way to fix flakiness in Cypress tests</title><content type='html'>&lt;h2&gt;
Overview of the problem&lt;/h2&gt;
Frontend test automation can be fairly tricky when attempting to do full end to end coverage. People want 100% flake free tests, and only act on problems that are actionable.&lt;br /&gt;
&lt;br /&gt;
If you&#39;ve ever written an end to end test, you&#39;ve probably had instances where a particular area of your app will have some odd flakiness to it. The test will run and succeed 95% of the times, but when it fails randomly due to a backend issue, the solution may very well be to re-run it until it passes. The simplicity of a person re-running a failing test until it passes is what causes error numbness, and frustration for having to do it. There are instances where the backend may not fully respond in time even if you put in reasonable async waits, or the backend is being flaky which can cause frontend tests to fail.&lt;br /&gt;
&lt;br /&gt;
The goal of this solution is to make it so that when failures do occur, the failure is actionable. You want to cultivate a culture of reacting quickly to failures, and not have the solution be that a developer goes into the CI build to rerun the build until it passes.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
[Quick and dirty temporary solution]&lt;/h2&gt;
There is a neat temporary plugin that you can install to address this issue in the short term until there&#39;s a more permanent solution by Cypress themselves. It&#39;s an npm package named &quot;cypress-run&quot; that essentially forwards all arguments you already use when running &quot;cypress run&quot;. I&#39;ll provide the instructions in yarn, as there are instructions for npm in the package link.&lt;br /&gt;
&lt;br /&gt;
Full link -&amp;nbsp;&lt;a href=&quot;https://www.npmjs.com/package/cypress-run&quot; target=&quot;_blank&quot;&gt;https://www.npmjs.com/package/cypress-run&lt;/a&gt;&lt;br /&gt;
Package description in case it ever disappears&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;div style=&quot;box-sizing: border-box; color: #333333; letter-spacing: 0.1px; line-height: 1.65; margin-bottom: 16px;&quot;&gt;
&lt;span style=&quot;font-family: inherit; font-size: x-small;&quot;&gt;Hopefully this module is short-lived. Right now it add retry support for parallel runs. It should work just like&amp;nbsp;&lt;code style=&quot;background: rgb(247, 247, 247); border-radius: 2px; box-sizing: border-box; font-variant-ligatures: none; letter-spacing: 0px; line-height: 24px; padding: 0px 5px;&quot;&gt;cypress run&lt;/code&gt;&amp;nbsp;by forwarding all arguments, just using the Cypress Module API to support parallelization.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;box-sizing: border-box; color: #333333; letter-spacing: 0.1px; line-height: 1.65; margin-bottom: 16px;&quot;&gt;
&lt;span style=&quot;font-family: inherit; font-size: x-small;&quot;&gt;It uses this gist and turns it into a module and adds support for&amp;nbsp;&lt;code style=&quot;background: rgb(247, 247, 247); border-radius: 2px; box-sizing: border-box; font-variant-ligatures: none; letter-spacing: 0px; line-height: 24px; padding: 0px 5px;&quot;&gt;cypress run&lt;/code&gt;&amp;nbsp;arguments:&amp;nbsp;&lt;a href=&quot;https://gist.github.com/Bkucera/4ffd05f67034176a00518df251e19f58#file-cypress-retries-js&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; color: #cb3837; font-weight: 600; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;https://gist.github.com/Bkucera/4ffd05f67034176a00518df251e19f58#file-cypress-retries-js&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;box-sizing: border-box; color: #333333; letter-spacing: 0.1px; line-height: 1.65; margin-bottom: 16px;&quot;&gt;
&lt;span style=&quot;font-family: inherit; font-size: x-small;&quot;&gt;This modules also adds retries regardless of&amp;nbsp;&lt;code style=&quot;background: rgb(247, 247, 247); border-radius: 2px; box-sizing: border-box; font-variant-ligatures: none; letter-spacing: 0px; line-height: 24px; padding: 0px 5px;&quot;&gt;--parallel&lt;/code&gt;&amp;nbsp;or&amp;nbsp;&lt;code style=&quot;background: rgb(247, 247, 247); border-radius: 2px; box-sizing: border-box; font-variant-ligatures: none; letter-spacing: 0px; line-height: 24px; padding: 0px 5px;&quot;&gt;--record&lt;/code&gt;&amp;nbsp;flags and doesn&#39;t need the Cypress Dashboard.&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
&lt;h3&gt;
Installation of cypress-run&lt;/h3&gt;
&lt;div&gt;
1. In your command line&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
yarn add --dev cypress-run&lt;/blockquote&gt;
2. In your package.json&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
Update your &quot;cypress run&quot; command to &quot;cypress-run&quot;&lt;/blockquote&gt;
It&#39;s that simple!&lt;br /&gt;
&lt;br /&gt;
I&#39;ve looked into several solutions, and the most noteworthy alternative is &quot;&lt;a href=&quot;https://github.com/Bkucera/cypress-plugin-retries&quot; target=&quot;_blank&quot;&gt;cypress-plugin-retries&lt;/a&gt;&quot; which is a bit more fully featured where it will only re-run the specific test that fails. I prefer re-running the entire test file if it fails.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMllFcbkT7E4Bq5U4b3V1tsC4BQw_Qwu-w30udbkwefNYsDzNrMmVXTIVgDUsf_q6WzYv5bGxrcAwvnTVBNMMUGNc0RRe4mFexTTnqnJ4T3oXbN4pfcY9Iwj168ScExFy5n0yNfarwXyY/s1600/robot-fingers.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMllFcbkT7E4Bq5U4b3V1tsC4BQw_Qwu-w30udbkwefNYsDzNrMmVXTIVgDUsf_q6WzYv5bGxrcAwvnTVBNMMUGNc0RRe4mFexTTnqnJ4T3oXbN4pfcY9Iwj168ScExFy5n0yNfarwXyY/s640/robot-fingers.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/2678694104985475798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2019/09/quick-and-dirty-way-to-fix-flakiness-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/2678694104985475798'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/2678694104985475798'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2019/09/quick-and-dirty-way-to-fix-flakiness-in.html' title='Quick and dirty way to fix flakiness in Cypress tests'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMllFcbkT7E4Bq5U4b3V1tsC4BQw_Qwu-w30udbkwefNYsDzNrMmVXTIVgDUsf_q6WzYv5bGxrcAwvnTVBNMMUGNc0RRe4mFexTTnqnJ4T3oXbN4pfcY9Iwj168ScExFy5n0yNfarwXyY/s72-c/robot-fingers.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-1160097804379875011</id><published>2019-07-03T13:07:00.000-04:00</published><updated>2019-08-16T10:14:57.825-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><title type='text'>How to synchronize your branch on bitbucket</title><content type='html'>There are times when I am unable to &quot;Sync now&quot; on bitbucket when it is several commits behind, and bitbucket will prompt me to resolve some conflicts from the command line. Here are the steps I take to move my &quot;master&quot; branch forward so it is not out of sync with my main &quot;develop&quot; branch.&lt;br /&gt;
&lt;h2&gt;
&lt;b&gt;Command Line (Will need write permissions)&lt;/b&gt;&lt;/h2&gt;
&lt;b&gt;Bitbucket will provide the commit hash for DETACHED HEAD. You can also find the latest commit hash using git log.&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;git checkout master&lt;/li&gt;
&lt;li&gt;git reset --soft &amp;lt;latest commit hash in your `git log`&amp;gt;&lt;/li&gt;
&lt;li&gt;git merge --squash --strategy-option theirs remotes/origin/develop&lt;/li&gt;
&lt;li&gt;git commit -m &quot;Move master forward to be in sync with develop&quot;&lt;/li&gt;
&lt;li&gt;git push -u --force origin master&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Bitbucket Branch Web UI&lt;/h2&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Navigate to the &quot;master&quot; branch in your repository&lt;/li&gt;
&lt;li&gt;Click on &quot;Sync now&quot;&lt;/li&gt;
&lt;li&gt;You should see a commit message of &quot;Merged develop into master&quot; and you should be all set!&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxFMWYpNae_xTZ_pgClu9InkEZCeiSryk6OE9zMXkYMQnR0V1-iQXhBMBBvNTEA8Ewuck_FsGLjiIKtP91A27D3NzNagG-lH9EgvaFI8BAV9M4KNtscUCNXsXa02X4igWFxKw4i9Gc23o/s1600/data-numbers-ss-1920.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxFMWYpNae_xTZ_pgClu9InkEZCeiSryk6OE9zMXkYMQnR0V1-iQXhBMBBvNTEA8Ewuck_FsGLjiIKtP91A27D3NzNagG-lH9EgvaFI8BAV9M4KNtscUCNXsXa02X4igWFxKw4i9Gc23o/s640/data-numbers-ss-1920.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/1160097804379875011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2019/07/how-to-synchronize-your-branch-on.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/1160097804379875011'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/1160097804379875011'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2019/07/how-to-synchronize-your-branch-on.html' title='How to synchronize your branch on bitbucket'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxFMWYpNae_xTZ_pgClu9InkEZCeiSryk6OE9zMXkYMQnR0V1-iQXhBMBBvNTEA8Ewuck_FsGLjiIKtP91A27D3NzNagG-lH9EgvaFI8BAV9M4KNtscUCNXsXa02X4igWFxKw4i9Gc23o/s72-c/data-numbers-ss-1920.jpg" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-4912701845039727647</id><published>2019-06-17T15:50:00.002-04:00</published><updated>2019-06-17T15:50:03.197-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><title type='text'>How to enter passphrase only once when operating in the terminal with ssh on macOS</title><content type='html'>If you only want to enter in your passphrase once while you are working in the terminal with git, you need to add the key to your ssh-agent. This should be valid until you reboot your machine.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
ssh-add ~/.ssh/id_rsa&lt;/blockquote&gt;
Now, when you pull, it should do so without prompting for your passphrase. I primarily do this when I have written convenience scripts to run between branches.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMVHW8xMcn_Hvv_ypkyPNA-WV1EBMvUmm3kcGJ45oLJCqqUKF0aGow9pL4lgivyrlpLKIVAjI6WMUqSG-v5V8o80kRzobpvNm4E3WCPtMHmoYeKcyiU4-Hapl3-f5mo2nVEBN_rAeYhdo/s1600/gear33.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMVHW8xMcn_Hvv_ypkyPNA-WV1EBMvUmm3kcGJ45oLJCqqUKF0aGow9pL4lgivyrlpLKIVAjI6WMUqSG-v5V8o80kRzobpvNm4E3WCPtMHmoYeKcyiU4-Hapl3-f5mo2nVEBN_rAeYhdo/s640/gear33.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/4912701845039727647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2019/06/how-to-enter-passphrase-only-once-when.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/4912701845039727647'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/4912701845039727647'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2019/06/how-to-enter-passphrase-only-once-when.html' title='How to enter passphrase only once when operating in the terminal with ssh on macOS'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMVHW8xMcn_Hvv_ypkyPNA-WV1EBMvUmm3kcGJ45oLJCqqUKF0aGow9pL4lgivyrlpLKIVAjI6WMUqSG-v5V8o80kRzobpvNm4E3WCPtMHmoYeKcyiU4-Hapl3-f5mo2nVEBN_rAeYhdo/s72-c/gear33.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-2816015025806530943</id><published>2019-06-13T08:13:00.002-04:00</published><updated>2019-06-13T08:13:39.601-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><title type='text'>How to merge and squash a feature branch into master</title><content type='html'>





&lt;!--StartFragment--&gt;

&lt;br /&gt;
&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; margin: 0in;&quot;&gt;
Often times when I am working on a feature branch, I want one commit to go into develop or master. For this example, we will demonstrate how to merge a feature branch into master with a single squashed commit.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; margin: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; margin: 0in;&quot;&gt;
First, pull the branch you want to merge into. In this case, it is master. I then squash merge the feature branch that I want into master.&lt;/div&gt;
&lt;div style=&quot;margin: 0in;&quot;&gt;
&lt;/div&gt;
&lt;ul style=&quot;font-family: Calibri; font-size: 11pt;&quot;&gt;
&lt;li&gt;git checkout master&lt;/li&gt;
&lt;li&gt;git pull&lt;/li&gt;
&lt;li&gt;git merge --squash
feature/branch&lt;/li&gt;
&lt;/ul&gt;
&lt;span style=&quot;font-family: Calibri; font-size: 11pt;&quot;&gt;Review your
changes, commit, and push to master&lt;/span&gt;&lt;br /&gt;&lt;ul style=&quot;font-family: Calibri; font-size: 11pt;&quot;&gt;
&lt;li&gt;git status&lt;/li&gt;
&lt;li&gt;git commit -m
&quot;describe your commit&quot;&lt;/li&gt;
&lt;li&gt;git push origin
master&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;














&lt;!--EndFragment--&gt;&lt;br /&gt;&lt;br /&gt;
That&#39;s all there is to it. Good luck!&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUucN-ZjzM21TYb6DRV-e2TdCQ7p1pjaHUSuXcwyhm-xM2V1kJRUZx1tgOeeRpr78Omb2z72jCghNgU0sLBqJVYJ_CL9_xc42b8DmpZXDuHBJ3eg2WZAJjYv0_BXoxQM-J3Uuj8p9q2zQ/s1600/clock-gears-wallpaper-phone-For-Free-Wallpaper.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1290&quot; data-original-width=&quot;1600&quot; height=&quot;515&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUucN-ZjzM21TYb6DRV-e2TdCQ7p1pjaHUSuXcwyhm-xM2V1kJRUZx1tgOeeRpr78Omb2z72jCghNgU0sLBqJVYJ_CL9_xc42b8DmpZXDuHBJ3eg2WZAJjYv0_BXoxQM-J3Uuj8p9q2zQ/s640/clock-gears-wallpaper-phone-For-Free-Wallpaper.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/2816015025806530943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2019/06/how-to-merge-and-squash-feature-branch.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/2816015025806530943'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/2816015025806530943'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2019/06/how-to-merge-and-squash-feature-branch.html' title='How to merge and squash a feature branch into master'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUucN-ZjzM21TYb6DRV-e2TdCQ7p1pjaHUSuXcwyhm-xM2V1kJRUZx1tgOeeRpr78Omb2z72jCghNgU0sLBqJVYJ_CL9_xc42b8DmpZXDuHBJ3eg2WZAJjYv0_BXoxQM-J3Uuj8p9q2zQ/s72-c/clock-gears-wallpaper-phone-For-Free-Wallpaper.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-2466059257348095203</id><published>2019-06-10T10:39:00.000-04:00</published><updated>2019-06-10T11:06:28.043-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><title type='text'>Clean up local git branches</title><content type='html'>Here is a quick way to remove a bunch of local branches without deleting &quot;develop&quot; or &quot;master&quot;. The only caveat is it doesn&#39;t delete anything similar to &quot;develop&quot; or &quot;master&quot;, so if you named a branch &quot;banana_develop&quot;, it won&#39;t delete that branch.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
git branch | grep -v &quot;develop&quot; | grep -v &quot;master&quot; | xargs git branch -D&lt;/blockquote&gt;
&lt;br /&gt;
grep -v means an inverted match - get all the branches and ignore &quot;develop&quot; and &quot;master&quot; branches.&lt;br /&gt;
&lt;br /&gt;
xargs git branch -D will do the dirty work of deleting all LOCAL branches. This will not affect remote branches.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may want to run the snippet below first to verify you know what is being deleted.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
git branch | grep -v &quot;develop&quot; | grep -v &quot;master&quot;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYsRxOZwY2CQFBk2882R62EkYj3iIgv71fnvL7xeri-ZOunWrsfQaaEJVm8pgmIk0JDsF58PW73VJ4NFjgPMn6OkQq67v6qGJDNO0TGjSasJLrnpANdTlpmCY1lu4p9GcaXwQiGhCL7TU/s1600/bluelighthouse.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYsRxOZwY2CQFBk2882R62EkYj3iIgv71fnvL7xeri-ZOunWrsfQaaEJVm8pgmIk0JDsF58PW73VJ4NFjgPMn6OkQq67v6qGJDNO0TGjSasJLrnpANdTlpmCY1lu4p9GcaXwQiGhCL7TU/s640/bluelighthouse.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/2466059257348095203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2019/06/clean-up-local-git-branches.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/2466059257348095203'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/2466059257348095203'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2019/06/clean-up-local-git-branches.html' title='Clean up local git branches'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYsRxOZwY2CQFBk2882R62EkYj3iIgv71fnvL7xeri-ZOunWrsfQaaEJVm8pgmIk0JDsF58PW73VJ4NFjgPMn6OkQq67v6qGJDNO0TGjSasJLrnpANdTlpmCY1lu4p9GcaXwQiGhCL7TU/s72-c/bluelighthouse.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-2818005971680159364</id><published>2018-06-13T10:01:00.002-04:00</published><updated>2018-06-13T10:01:41.938-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="developer settings"/><category scheme="http://www.blogger.com/atom/ns#" term="installation"/><category scheme="http://www.blogger.com/atom/ns#" term="mac"/><title type='text'>Installing Visual Studio Code On The Mac</title><content type='html'>There are several ways to install Visual Studio Code on the Mac, but I think the best way to do it is via brew cask. The official site offers a &lt;a href=&quot;https://code.visualstudio.com/&quot; target=&quot;_blank&quot;&gt;downloadable zip&lt;/a&gt; for MacOS, and this isn&#39;t difficult to do, but if you want auto-updates, I highly recommend using brew cask. I&#39;ve recently started using MacOS for work, so I am documenting useful tidbits for other developers who might be starting out.&lt;br /&gt;
&lt;br /&gt;
If you have brew already installed, installing Visual Studio Code should be a breeze!&lt;br /&gt;
Simple type out the following command in the terminal.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
brew cask install visual-studio-code&lt;/blockquote&gt;
Once the prompt responds with successfully installed, bring up your spotlight search and look for visual studio code to start the program!&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyVlcufh9aTBlBdRbH63sfOM38H-mah7QtMIgYz1mb3nNQ0FP8P1tpfi8q81KFW8Fiz2XiibL_2RnX7ArbPFEiRwbsco6uicPWKuPugj9PD8H83m5vlqQxaV5mxTwCyheh-o_NA02rLEk/s1600/Screen+Shot+2018-06-13+at+10.00.25+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;418&quot; data-original-width=&quot;846&quot; height=&quot;314&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyVlcufh9aTBlBdRbH63sfOM38H-mah7QtMIgYz1mb3nNQ0FP8P1tpfi8q81KFW8Fiz2XiibL_2RnX7ArbPFEiRwbsco6uicPWKuPugj9PD8H83m5vlqQxaV5mxTwCyheh-o_NA02rLEk/s640/Screen+Shot+2018-06-13+at+10.00.25+AM.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/2818005971680159364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2018/06/installing-visual-studio-code-on-mac.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/2818005971680159364'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/2818005971680159364'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2018/06/installing-visual-studio-code-on-mac.html' title='Installing Visual Studio Code On The Mac'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyVlcufh9aTBlBdRbH63sfOM38H-mah7QtMIgYz1mb3nNQ0FP8P1tpfi8q81KFW8Fiz2XiibL_2RnX7ArbPFEiRwbsco6uicPWKuPugj9PD8H83m5vlqQxaV5mxTwCyheh-o_NA02rLEk/s72-c/Screen+Shot+2018-06-13+at+10.00.25+AM.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-3161874170308220665</id><published>2018-05-15T19:23:00.001-04:00</published><updated>2018-06-01T22:13:59.196-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="automation"/><category scheme="http://www.blogger.com/atom/ns#" term="bash"/><category scheme="http://www.blogger.com/atom/ns#" term="ci/cd"/><category scheme="http://www.blogger.com/atom/ns#" term="continuous integration"/><category scheme="http://www.blogger.com/atom/ns#" term="testing"/><title type='text'>Adding Static Analysis And Linting For Bash Scripts</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB7vr58RuHjcNp7kdwqOCssVR0J-j7O6YgqocrGSJPRcnmPyHnleJCQr0d4RJ71VKjxSxioPGja8lR3gJHDPg516Wl3CI6YeFVkY4KhEu-lmrWNuSI3cpJar4gJxoksNyIGzXBt_4HzME/s1600/bash-shellshock.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;234&quot; data-original-width=&quot;728&quot; height=&quot;102&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB7vr58RuHjcNp7kdwqOCssVR0J-j7O6YgqocrGSJPRcnmPyHnleJCQr0d4RJ71VKjxSxioPGja8lR3gJHDPg516Wl3CI6YeFVkY4KhEu-lmrWNuSI3cpJar4gJxoksNyIGzXBt_4HzME/s320/bash-shellshock.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
For a long time, I wondered if there was a tool for keeping coding styles and best practices when coding in Bash. After a brief search, I finally found two tools that would help keep our bash scripts in check. This is especially important when working in teams that code heavily in bash, and is super helpful if integrated into a CI/CD pipeline.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Static Analysis&lt;/h2&gt;
For Static Analysis, I found that &lt;a href=&quot;https://github.com/koalaman/shellcheck#in-your-editor&quot; target=&quot;_blank&quot;&gt;ShellCheck&lt;/a&gt; did everything I needed it to do. It&#39;s an incredibly easy to setup tool that took only a few minutes to install. From the site, ShellCheck aims to do the following:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; margin-bottom: 16px; margin-top: 0px; padding-left: 2em;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box;&quot;&gt;&lt;div style=&quot;box-sizing: border-box; margin-bottom: 16px; margin-top: 16px;&quot;&gt;
To point out and clarify typical beginner&#39;s syntax issues that cause a shell to give cryptic error messages.&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; margin-top: 0.25em;&quot;&gt;&lt;div style=&quot;box-sizing: border-box; margin-bottom: 16px; margin-top: 16px;&quot;&gt;
To point out and clarify typical intermediate level semantic problems that cause a shell to behave strangely and counter-intuitively.&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; margin-top: 0.25em;&quot;&gt;&lt;div style=&quot;box-sizing: border-box; margin-bottom: 16px; margin-top: 16px;&quot;&gt;
To point out subtle caveats, corner cases and pitfalls that may cause an advanced user&#39;s otherwise working script to fail under future circumstances.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
Linting&lt;/h2&gt;
For Linting, I wanted something that would enforce styles like making sure things were tabbed consistently, if/else statements were written in a consistent format. I found &lt;a href=&quot;https://github.com/openstack-dev/bashate&quot; target=&quot;_blank&quot;&gt;bashate&lt;/a&gt; which helped to enforce standards in Bash like PEP8 would for python. Installation was also super simple, all that was required was a quick `&lt;b&gt;pip install bashate&lt;/b&gt;` or `&lt;b&gt;pipenv install bashate&lt;/b&gt;` for my local command line. The installation README displays all of the rules it enforces, but here I would like to list a few that I liked.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; margin-bottom: 16px; margin-top: 0px; padding-left: 2em;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box;&quot;&gt;E001: check that lines do not end with trailing whitespace&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; margin-bottom: 16px; margin-top: 0px; padding-left: 2em;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; margin-top: 0.25em;&quot;&gt;E002: ensure that indents are only spaces, and not hard tabs&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; margin-bottom: 16px; margin-top: 0px; padding-left: 2em;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; margin-top: 0.25em;&quot;&gt;E003: ensure all indents are a multiple of 4 spaces&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; margin-bottom: 16px; margin-top: 0px; padding-left: 2em;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; margin-top: 0.25em;&quot;&gt;E004: file did not end with a newline&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; margin-bottom: 16px; margin-top: 0px; padding-left: 2em;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; margin-top: 0.25em;&quot;&gt;E005: file does not begin with #! or have a .sh prefix&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
Tool Integration&amp;nbsp;&lt;/h2&gt;
Integrating the tools is relatively simple and the tool READMEs provide guides on how to do so. Overall, you need to run the command line version of the tool and the script that you want to analyze. `&lt;b&gt;shellcheck example.sh&lt;/b&gt;`, or ideally you&#39;d want to add a script that traverses the folder structure, and retrieves all shell scripts to be analyzed. From there, you might want to also handle exit codes if you want your pipeline to fail when errors or warnings are found.</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/3161874170308220665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2018/05/adding-static-analysis-and-linting-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/3161874170308220665'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/3161874170308220665'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2018/05/adding-static-analysis-and-linting-for.html' title='Adding Static Analysis And Linting For Bash Scripts'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB7vr58RuHjcNp7kdwqOCssVR0J-j7O6YgqocrGSJPRcnmPyHnleJCQr0d4RJ71VKjxSxioPGja8lR3gJHDPg516Wl3CI6YeFVkY4KhEu-lmrWNuSI3cpJar4gJxoksNyIGzXBt_4HzME/s72-c/bash-shellshock.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-1183173476973368099</id><published>2018-05-15T08:25:00.000-04:00</published><updated>2018-06-03T20:46:04.921-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="api testing"/><category scheme="http://www.blogger.com/atom/ns#" term="automated-testing"/><category scheme="http://www.blogger.com/atom/ns#" term="automation"/><category scheme="http://www.blogger.com/atom/ns#" term="automation tutorial"/><category scheme="http://www.blogger.com/atom/ns#" term="endpoint testing"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="rest"/><category scheme="http://www.blogger.com/atom/ns#" term="restful"/><category scheme="http://www.blogger.com/atom/ns#" term="restinstance"/><category scheme="http://www.blogger.com/atom/ns#" term="robot framework basic authentication"/><category scheme="http://www.blogger.com/atom/ns#" term="robotframework"/><category scheme="http://www.blogger.com/atom/ns#" term="software testing"/><category scheme="http://www.blogger.com/atom/ns#" term="testing"/><title type='text'>RESTinstance - How to Set Headers</title><content type='html'>&lt;h2&gt;
Tip of the day&lt;/h2&gt;
Setting headers in the RESTinstance library was surprisingly difficult for me at first, but it&#39;s actually quite simple. Initially, I had been passing in an entire JSON object with multiple values as you would normally for a header like you would in Postman, but in this case you only need to pass in a key value pair one at a time.&lt;br /&gt;
&lt;br /&gt;
Let me demonstrate with an example of how to sign in as a user, retrieve the JWT token that gets returned, and reusing that JWT token so that I have authorized access to make a `GET` call to query the users list.&lt;br /&gt;
&lt;pre style=&quot;background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;   POST      /auth/login   body={&quot;email&quot;:&quot;${username}&quot;,&quot;password&quot;:&quot;${password}&quot;}  
   ${jwt_token} = String   response body token    
   Set Headers   {&quot;Authorization&quot;:&quot;JWT ${jwt_token}&quot;}  
   GET           /users  &lt;/code&gt;&lt;/pre&gt;
If you wanted to add more headers, you can just do the following...
&lt;br /&gt;
&lt;pre style=&quot;background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;   Set Headers   {&quot;Authorization&quot;:&quot;JWT ${jwt_token}&quot;}  
   Set Headers   {&quot;Accept-Encoding&quot;:&quot;gzip&quot;}  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
And that&#39;s all there is to Setting Headers in RESTinstance! Good luck!&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH2pv-lreUM04S4YY_UtxUt9bvB5DUQhMCfCfkyQnLwV8KwAF3EWn8cAjw0fMGnus-PAhVBr_GXkXvFR0i4LPArU7J8yMlfhrGOT5svUBux-Sww_cJRrPps7b4VN0dVIrYGZbLoso_d2k/s1600/gears.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;443&quot; data-original-width=&quot;750&quot; height=&quot;189&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH2pv-lreUM04S4YY_UtxUt9bvB5DUQhMCfCfkyQnLwV8KwAF3EWn8cAjw0fMGnus-PAhVBr_GXkXvFR0i4LPArU7J8yMlfhrGOT5svUBux-Sww_cJRrPps7b4VN0dVIrYGZbLoso_d2k/s320/gears.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/1183173476973368099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2018/05/restinstance-how-to-set-headers.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/1183173476973368099'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/1183173476973368099'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2018/05/restinstance-how-to-set-headers.html' title='RESTinstance - How to Set Headers'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH2pv-lreUM04S4YY_UtxUt9bvB5DUQhMCfCfkyQnLwV8KwAF3EWn8cAjw0fMGnus-PAhVBr_GXkXvFR0i4LPArU7J8yMlfhrGOT5svUBux-Sww_cJRrPps7b4VN0dVIrYGZbLoso_d2k/s72-c/gears.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-7364023082616013474</id><published>2018-05-12T17:57:00.002-04:00</published><updated>2018-06-02T23:52:56.597-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="api testing"/><category scheme="http://www.blogger.com/atom/ns#" term="automation"/><category scheme="http://www.blogger.com/atom/ns#" term="automation tutorial"/><category scheme="http://www.blogger.com/atom/ns#" term="endpoint testing"/><category scheme="http://www.blogger.com/atom/ns#" term="restful"/><category scheme="http://www.blogger.com/atom/ns#" term="restinstance"/><category scheme="http://www.blogger.com/atom/ns#" term="robot framework basic authentication"/><category scheme="http://www.blogger.com/atom/ns#" term="robotframework"/><category scheme="http://www.blogger.com/atom/ns#" term="testing"/><title type='text'>RESTinstance - How to access my response fields</title><content type='html'>&lt;h2&gt;
Tip of the day&lt;/h2&gt;
Often times when we are testing APIs, we need to validate specific response fields or reuse them in some fashion. This could be reusing an authentication token after signing in, or just validating that the response returned &quot;potatoes&quot; in the field &quot;delicious&quot;. Not the greatest example, but you get the point. In this article, I hope to show you how to do field validation using the RESTinstance library for Robotframework.&lt;br /&gt;
&lt;br /&gt;
Here is a breakdown of an example test case that we will be using to demonstrate a GET call that will output the response body and validate a specific set of fields. The full example will be provided at the end.&lt;br /&gt;
&lt;pre style=&quot;background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; GET Existing User  
   GET      /users/1  
   Output   response body  
&lt;/code&gt;&lt;/pre&gt;
Firstly, we make the `GET` call to the `/users/1` endpoint, and we expect user 1 to have a specific set of data. Before we go further though, we first `OUTPUT` the response body to see what is returned. As you can see below, the entire response body is outputted.&lt;br /&gt;
&lt;pre style=&quot;background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; JSON for &#39;response body&#39; is:  
 {  
   &quot;id&quot;: 1,  
   &quot;name&quot;: &quot;Leanne Graham&quot;,  
   &quot;username&quot;: &quot;Bret&quot;,  
   &quot;email&quot;: &quot;Sincere@april.biz&quot;,  
   &quot;address&quot;: {  
     &quot;street&quot;: &quot;Kulas Light&quot;,  
     &quot;suite&quot;: &quot;Apt. 556&quot;,  
     &quot;city&quot;: &quot;Gwenborough&quot;,  
     &quot;zipcode&quot;: &quot;92998-3874&quot;,  
     &quot;geo&quot;: {  
       &quot;lat&quot;: &quot;-37.3159&quot;,  
       &quot;lng&quot;: &quot;81.1496&quot;  
     }  
   },  
   &quot;phone&quot;: &quot;1-770-736-8031 x56442&quot;,  
   &quot;website&quot;: &quot;hildegard.org&quot;,  
   &quot;company&quot;: {  
     &quot;name&quot;: &quot;Romaguera-Crona&quot;,  
     &quot;catchPhrase&quot;: &quot;Multi-layered client-server neural-net&quot;,  
     &quot;bs&quot;: &quot;harness real-time e-markets&quot;  
   }  
 }  
&lt;/code&gt;&lt;/pre&gt;
Now that we have the response body, we can pick and choose what we want to validate. In our case, we want to verify the following fields.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Verify the returned id is `1`&lt;/li&gt;
&lt;li&gt;Verify the name is `Leanne Graham`&lt;/li&gt;
&lt;li&gt;Verify the street is `Kulas Light`&lt;/li&gt;
&lt;li&gt;Verify the lat is `-37.3159`, we do this so we can demonstrate how to traverse the tree. Notice the pattern yet?&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Our final test case will look something like this.&lt;/div&gt;
&lt;div&gt;
&lt;pre style=&quot;background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; GET Existing User  
   GET      /users/1  
   Integer  response body id               1  
   String   response body name             Leanne Graham  
   String   response body address street   Kulas Light  
   String   response body address geo lat  -37.3159  
&lt;/code&gt;&lt;/pre&gt;
Here we remove the Output, as we no longer need it to figure out what fields to validate. We then verify each individual field by validating both its type and its value. In our case, we want to ensure that the id that is being returned is an Integer and has the value of 1. As for the remaining items, we ensure that they are strings, and we traverse down the json tree to validate each individual value. I hope this brief tutorial helped!&lt;/div&gt;
&lt;br /&gt;
For more examples, &lt;a href=&quot;https://github.com/jjwong/RESTinstance_starter_project/blob/master/tests/test_crud_with_faker.robot&quot; target=&quot;_blank&quot;&gt;visit the github page&lt;/a&gt;!&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlQj_8qCFh2ro3ropYwTtcPb-PLSx6up7MuNgCBepXlHq0yeH_cnKpRlNNrgsd-DH6l4V8yfgVP37kapEl8DqoLQtTAi7ssLHIXxbS1tVT3kiD9sa28LezgB9YMddjUit1dRTf-H6rvZs/s1600/gear2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlQj_8qCFh2ro3ropYwTtcPb-PLSx6up7MuNgCBepXlHq0yeH_cnKpRlNNrgsd-DH6l4V8yfgVP37kapEl8DqoLQtTAi7ssLHIXxbS1tVT3kiD9sa28LezgB9YMddjUit1dRTf-H6rvZs/s640/gear2.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/7364023082616013474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2018/05/restinstance-how-to-access-my-response.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/7364023082616013474'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/7364023082616013474'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2018/05/restinstance-how-to-access-my-response.html' title='RESTinstance - How to access my response fields'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlQj_8qCFh2ro3ropYwTtcPb-PLSx6up7MuNgCBepXlHq0yeH_cnKpRlNNrgsd-DH6l4V8yfgVP37kapEl8DqoLQtTAi7ssLHIXxbS1tVT3kiD9sa28LezgB9YMddjUit1dRTf-H6rvZs/s72-c/gear2.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-825020976946022104</id><published>2018-05-11T11:45:00.001-04:00</published><updated>2018-06-02T23:53:33.970-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="api testing"/><category scheme="http://www.blogger.com/atom/ns#" term="automation tutorial"/><category scheme="http://www.blogger.com/atom/ns#" term="restinstance"/><category scheme="http://www.blogger.com/atom/ns#" term="robot framework basic authentication"/><category scheme="http://www.blogger.com/atom/ns#" term="robotframework"/><category scheme="http://www.blogger.com/atom/ns#" term="schema testing"/><category scheme="http://www.blogger.com/atom/ns#" term="testing"/><title type='text'>RESTinstance - RESTful Basic Authentication</title><content type='html'>&lt;h2&gt;
Tip of the Day&lt;/h2&gt;
When using the RESTinstance library, it is incredibly easy to do basic authentication login.&lt;br /&gt;
Todays example will demonstrate how to login to a RESTful API service without passing in any added headers (if you want an example of that, let me know), but will use the json schema to validate the returned response from your POST call.&lt;br /&gt;
&lt;h3&gt;
Test Example&lt;/h3&gt;
&lt;pre style=&quot;background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; *** Test Cases ***  
 POST Login Valid User  
   Expect Response   ${CURDIR}/schemas/valid/basic_auth_schema.json  
   POST  /api/login  body={&quot;email&quot;:&quot;ex@g.com&quot;,&quot;password&quot;:&quot;example&quot;}  
&lt;/code&gt;&lt;/pre&gt;
Usually, you would want to test the status code after your `POST` by using the `Integer` call, but by calling `Expect Response` and using the schema, you can have all of your status code and required response fields all in one!&lt;br /&gt;
&lt;h3&gt;
JSON Schema&lt;/h3&gt;
&lt;pre style=&quot;background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; {  
   &quot;body&quot;:{  
    &quot;type&quot;:&quot;object&quot;,  
    &quot;properties&quot;:{  
      &quot;token&quot;:{  
       &quot;type&quot;:&quot;string&quot;  
      }  
    },  
    &quot;required&quot;:[  
      &quot;token&quot;  
    ]  
   },  
   &quot;status&quot;:{  
    &quot;type&quot;:&quot;integer&quot;,  
    &quot;example&quot;:200,  
    &quot;enum&quot;:[  
      200  
    ]  
   }  
 }  
&lt;/code&gt;&lt;/pre&gt;
When a `POST` call is made, the schema is asserting that the status code should return a 200 response code, and the token should be returned as a string.&lt;br /&gt;
&lt;br /&gt;
And that&#39;s all there is to it! Easy right? Good luck!&lt;br /&gt;
&lt;br /&gt;
You can download a fully working example and more!&lt;br /&gt;
&lt;a href=&quot;https://github.com/jjwong/RESTinstance_starter_project/blob/master/tests/test_basic_authentication.robot&quot; target=&quot;_blank&quot;&gt;Download on github&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiipoSAR0p9-4AJznL39sINu8GJ9PfoDC2c4YrWyk_hDHfW5dX78Ka18AJCbDNKKDH5xAWNGQStqLlzwj-dVmkTECT5LUpwgbiRhp8Q0DA9HuUNu_8sZRK3JwnmU-89NLmLF2Yv3BHoq6A/s1600/gear3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiipoSAR0p9-4AJznL39sINu8GJ9PfoDC2c4YrWyk_hDHfW5dX78Ka18AJCbDNKKDH5xAWNGQStqLlzwj-dVmkTECT5LUpwgbiRhp8Q0DA9HuUNu_8sZRK3JwnmU-89NLmLF2Yv3BHoq6A/s640/gear3.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/825020976946022104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2018/05/api-testing-restful-basic-authentication.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/825020976946022104'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/825020976946022104'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2018/05/api-testing-restful-basic-authentication.html' title='RESTinstance - RESTful Basic Authentication'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiipoSAR0p9-4AJznL39sINu8GJ9PfoDC2c4YrWyk_hDHfW5dX78Ka18AJCbDNKKDH5xAWNGQStqLlzwj-dVmkTECT5LUpwgbiRhp8Q0DA9HuUNu_8sZRK3JwnmU-89NLmLF2Yv3BHoq6A/s72-c/gear3.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-3308264490959304537</id><published>2018-05-07T15:49:00.002-04:00</published><updated>2018-06-02T23:53:56.720-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="api testing"/><category scheme="http://www.blogger.com/atom/ns#" term="automation tutorial"/><category scheme="http://www.blogger.com/atom/ns#" term="endpoint testing"/><category scheme="http://www.blogger.com/atom/ns#" term="json"/><category scheme="http://www.blogger.com/atom/ns#" term="rest"/><category scheme="http://www.blogger.com/atom/ns#" term="restinstance"/><category scheme="http://www.blogger.com/atom/ns#" term="robotframework"/><category scheme="http://www.blogger.com/atom/ns#" term="schema testing"/><title type='text'>RESTinstance - How to do Schema Validation</title><content type='html'>&lt;h2&gt;
&lt;b&gt;Tip of the day&lt;/b&gt;&lt;/h2&gt;
When you are testing schemas using the RESTinstance library, you need to ensure that the `&lt;b&gt;Expect Response&lt;/b&gt;` call is always made before your actual REST verb call. Generally, you will want to make your `&lt;b&gt;Expect Response&lt;/b&gt;` call in the Test Setup since most of your test cases will likely have the same schema response.&lt;br /&gt;
&lt;br /&gt;
If you tried using the `&lt;b&gt;Expect Response&lt;/b&gt;` call after a REST verb, the keyword will always pass since there is no response for it to actually verify. This is because the `&lt;b&gt;Expect Response&lt;/b&gt;` call is only checked during the REST verb call, so if you call it after a response has been made, then nothing will occur!! Don&#39;t fall into the trap of keywords passing without first verifying it with a known good and bad state! Hope this helps!&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
&lt;b&gt;Example Test Case Usage&lt;/b&gt;&lt;/h3&gt;
&lt;pre style=&quot;background-color: #2b2b2b; color: #a9b7c6; font-family: &#39;DejaVu Sans Mono&#39;; font-size: 11.3pt;&quot;&gt;&lt;span style=&quot;color: #cc7832; font-weight: bold;&quot;&gt;POST Sign Up&lt;/span&gt;&lt;span style=&quot;color: #cc7832; font-weight: bold;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #ffc66d;&quot;&gt;Expect Response     &lt;/span&gt;&lt;span style=&quot;color: #77b767;&quot;&gt;${CURDIR}&lt;/span&gt;&lt;span style=&quot;color: #9876aa; font-style: italic;&quot;&gt;/schemas/valid/signup_schema.json&lt;/span&gt;&lt;span style=&quot;color: #ffc66d;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ffc66d;&quot;&gt;    POST        &lt;/span&gt;&lt;span style=&quot;color: #9876aa; font-style: italic;&quot;&gt;/signup             body=&lt;/span&gt;{&quot;user&quot;: &quot;Bob&quot;, &quot;pw&quot;: &quot;badpw&quot;}&lt;/pre&gt;
&lt;pre style=&quot;background-color: #2b2b2b; color: #a9b7c6; font-family: &#39;DejaVu Sans Mono&#39;; font-size: 11.3pt;&quot;&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;h3&gt;
&lt;b&gt;Example Schema&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;pre style=&quot;background-color: #2b2b2b;&quot;&gt;&lt;span style=&quot;color: #a9b7c6; font-family: &amp;quot;dejavu sans mono&amp;quot;;&quot;&gt;&lt;span style=&quot;font-size: 15.0667px;&quot;&gt;{
   &quot;status&quot;:{
      &quot;type&quot;:&quot;integer&quot;,
      &quot;enum&quot;:[
         200,
         201,
         204
      ]
   },
   &quot;body&quot;:{
      &quot;type&quot;:&quot;object&quot;,
      &quot;properties&quot;:{
         &quot;token&quot;:{
            &quot;type&quot;:&quot;string&quot;
         },
         &quot;email&quot;:{
            &quot;type&quot;:&quot;string&quot;
         },
         &quot;id&quot;:{
            &quot;type&quot;:&quot;string&quot;
         }
      },
      &quot;required&quot;:[
         &quot;id&quot;,
         &quot;token&quot;
      ]
   }
}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiRf6YByNg_9E6vVGBMHwnodzehQ90bc6J3e9_DdlISp8WJPu5WbWFcdQuDQ_uC0_R-q-ByrHGdeyGknPPuYKmvEr1rred-DEQLIu9GaqBxBA5Os3G4alQbgMkGVIXcskVqBZ8pTElQiw/s1600/gear4.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiRf6YByNg_9E6vVGBMHwnodzehQ90bc6J3e9_DdlISp8WJPu5WbWFcdQuDQ_uC0_R-q-ByrHGdeyGknPPuYKmvEr1rred-DEQLIu9GaqBxBA5Os3G4alQbgMkGVIXcskVqBZ8pTElQiw/s640/gear4.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/3308264490959304537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2018/05/api-testing-restinstance-schema.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/3308264490959304537'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/3308264490959304537'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2018/05/api-testing-restinstance-schema.html' title='RESTinstance - How to do Schema Validation'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiRf6YByNg_9E6vVGBMHwnodzehQ90bc6J3e9_DdlISp8WJPu5WbWFcdQuDQ_uC0_R-q-ByrHGdeyGknPPuYKmvEr1rred-DEQLIu9GaqBxBA5Os3G4alQbgMkGVIXcskVqBZ8pTElQiw/s72-c/gear4.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-7651124558343732307</id><published>2018-04-15T15:30:00.001-04:00</published><updated>2018-06-02T23:54:44.172-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="api testing"/><category scheme="http://www.blogger.com/atom/ns#" term="automation tutorial"/><category scheme="http://www.blogger.com/atom/ns#" term="restful"/><category scheme="http://www.blogger.com/atom/ns#" term="restinstance"/><category scheme="http://www.blogger.com/atom/ns#" term="robot framework basic authentication"/><category scheme="http://www.blogger.com/atom/ns#" term="robotframework"/><title type='text'>RESTinstance - How to disable SSL Verification </title><content type='html'>When I started to use the RESTinstance library, it was super easy to do schema and RESTful API testing. However, my next task was to do some basic authentication API testing for one of our development environments. Initially, when I connected to our basic auth. endpoint, I was getting a domain certification error. SSL certification verification is enabled by default in the RESTinstance library, which is a good thing, but since we didn&#39;t have a certificate ready yet, we needed to disable it for the time being.&lt;br /&gt;
&lt;br /&gt;
Luckily, its super easy to disable SSL certificate verification in the RESTinstance library! It&#39;s just a simple boolean you pass in when you import the library.&lt;br /&gt;
&lt;br /&gt;
In our example below, we disable verification by adding the boolean `ssl_verify=False` in our import, and to demonstrate Basic Authentication using the RESTinstance library, we also pass in the user credentials to a login endpoint. We then check the response codes for a successful login. The example below will not work with the website listed,&amp;nbsp; it is just there to demonstrate the concept of how it would work with your own endpoint. Good luck!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Example&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f6f8fa; border-radius: 3px; box-sizing: border-box; color: #24292e; font-family: SFMono-Regular, Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 11.9px; line-height: 1.45; overflow: auto; padding: 16px; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: transparent; border-radius: 3px; border: 0px; box-sizing: border-box; display: inline; font-family: SFMono-Regular, Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 11.9px; line-height: inherit; margin: 0px; overflow: visible; padding: 0px; word-break: normal; word-wrap: normal;&quot;&gt;** Settings ***
Library         REST     https://example.com    ssl_verify=false

*** Test Cases ***
Basic Auth Example
    POST            /user/login    body={ &quot;username&quot;: &quot;Batman&quot;, &quot;password&quot;: &quot;robinpwd1940&quot; }
    Output          response
    Integer         response status                 200&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxZzmIhrZnq1KLWz_gIw-A2h4MWaAyKCzIrQVpptSMNfDmLG4LyPsfxOowJva_4ThsKCeAUmYixrnYxpY0HTktFoVzkAoKQNGtmdW07VQvXuPFLpmocve65LC5NfP2O5DZcONTYdv_3OI/s1600/gear5.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;540&quot; data-original-width=&quot;960&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxZzmIhrZnq1KLWz_gIw-A2h4MWaAyKCzIrQVpptSMNfDmLG4LyPsfxOowJva_4ThsKCeAUmYixrnYxpY0HTktFoVzkAoKQNGtmdW07VQvXuPFLpmocve65LC5NfP2O5DZcONTYdv_3OI/s640/gear5.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/7651124558343732307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2018/04/api-testing-how-to-disable-ssl.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/7651124558343732307'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/7651124558343732307'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2018/04/api-testing-how-to-disable-ssl.html' title='RESTinstance - How to disable SSL Verification '/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxZzmIhrZnq1KLWz_gIw-A2h4MWaAyKCzIrQVpptSMNfDmLG4LyPsfxOowJva_4ThsKCeAUmYixrnYxpY0HTktFoVzkAoKQNGtmdW07VQvXuPFLpmocve65LC5NfP2O5DZcONTYdv_3OI/s72-c/gear5.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-5494387144452929757</id><published>2018-03-01T19:48:00.000-05:00</published><updated>2018-06-02T23:55:04.897-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="automation"/><category scheme="http://www.blogger.com/atom/ns#" term="collections"/><category scheme="http://www.blogger.com/atom/ns#" term="robotframework"/><category scheme="http://www.blogger.com/atom/ns#" term="selenium"/><category scheme="http://www.blogger.com/atom/ns#" term="testing"/><title type='text'>How To Access A Specific Index In A Robot Framework Collection</title><content type='html'>&lt;span style=&quot;color: #6a8759;&quot;&gt;*** Test Cases ***&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;color: #cc7832; font-weight: bold;&quot;&gt;How To Access A Specific Index In A Robot Framework Collection&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp; &amp;nbsp; # Create the collection for consumption&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; ${collection} =&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffc66d;&quot;&gt;Create List&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #9876aa; font-style: italic;&quot;&gt;A&amp;nbsp; B&amp;nbsp; C&amp;nbsp; D&amp;nbsp; E&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp; &amp;nbsp; # Demonstrate the use of accessing the index with assertions&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffc66d;&quot;&gt;Should Be Equal As Strings&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #77b767;&quot;&gt;${collection[0]}&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #9876aa; font-style: italic;&quot;&gt;A&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffc66d;&quot;&gt;Should Be Equal As Strings&amp;nbsp;&lt;/span&gt; &lt;span style=&quot;color: #77b767;&quot;&gt;${collection[1]}&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #9876aa; font-style: italic;&quot;&gt;B&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffc66d;&quot;&gt;Should Be Equal As Strings&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #77b767;&quot;&gt;${collection[2]}&amp;nbsp;&lt;/span&gt; &lt;span style=&quot;color: #9876aa; font-style: italic;&quot;&gt;C&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffc66d;&quot;&gt;Should Be Equal As Strings&amp;nbsp;&lt;/span&gt; &lt;span style=&quot;color: #77b767;&quot;&gt;${collection[3]}&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #9876aa; font-style: italic;&quot;&gt;D&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffc66d;&quot;&gt;Should Be Equal As Strings&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #77b767;&quot;&gt;${collection[4]}&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #9876aa; font-style: italic;&quot;&gt;E&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;# View in log.html&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffc66d;&quot;&gt;Log&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #77b767;&quot;&gt;${collection[0]}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;# View in Console Command&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffc66d;&quot;&gt;Log To Console&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #77b767;&quot;&gt;${collection[3]}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #77b767;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #77b767;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqT43jlLFLAfa3OCeZrZgGgY0AmVBtQtNCx2FVcWH7JD4urGTdEIOgermQflVZVjZHhM0jRZ0J9ciBLKmshNPe1RtYsND_7_hnuakFn1TZWjW36zNYkWv0rETp_2qrlSeDhdU3uYPUMew/s1600/gear6.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;345&quot; data-original-width=&quot;610&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqT43jlLFLAfa3OCeZrZgGgY0AmVBtQtNCx2FVcWH7JD4urGTdEIOgermQflVZVjZHhM0jRZ0J9ciBLKmshNPe1RtYsND_7_hnuakFn1TZWjW36zNYkWv0rETp_2qrlSeDhdU3uYPUMew/s640/gear6.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/5494387144452929757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2018/03/how-to-access-specific-index-in-robot.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/5494387144452929757'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/5494387144452929757'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2018/03/how-to-access-specific-index-in-robot.html' title='How To Access A Specific Index In A Robot Framework Collection'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqT43jlLFLAfa3OCeZrZgGgY0AmVBtQtNCx2FVcWH7JD4urGTdEIOgermQflVZVjZHhM0jRZ0J9ciBLKmshNPe1RtYsND_7_hnuakFn1TZWjW36zNYkWv0rETp_2qrlSeDhdU3uYPUMew/s72-c/gear6.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-7551948764382087598</id><published>2017-01-01T11:14:00.001-05:00</published><updated>2018-06-02T23:55:45.253-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="api testing"/><category scheme="http://www.blogger.com/atom/ns#" term="endpoint testing"/><category scheme="http://www.blogger.com/atom/ns#" term="json"/><category scheme="http://www.blogger.com/atom/ns#" term="restful"/><category scheme="http://www.blogger.com/atom/ns#" term="robotframework"/><title type='text'>Testing JSON Endpoints With Robotframework</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
Below is an example robot file that you can use to experiment with endpoint testing. Responses are returned in JSON.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;***&amp;nbsp;Settings&amp;nbsp;***&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;Documentation&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;Robot&amp;nbsp;Framework&amp;nbsp;JSON&amp;nbsp;and&amp;nbsp;REST&amp;nbsp;Testing&lt;br /&gt;
... &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Author:&amp;nbsp;JJ&amp;nbsp;The&amp;nbsp;Engineer&lt;br /&gt;
... &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;We&amp;nbsp;use&amp;nbsp;a&amp;nbsp;free&amp;nbsp;3rd&amp;nbsp;party&amp;nbsp;site&amp;nbsp;to&amp;nbsp;demo&amp;nbsp;these&amp;nbsp;tests.&lt;br /&gt;
... &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Credits:&amp;nbsp;jsonplaceholder.typicode.com&lt;br /&gt;&lt;br /&gt;
Library&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Collections&lt;br /&gt;
Library&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;HttpLibrary.HTTP&lt;br /&gt;
Library&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DateTime&lt;br /&gt;
Library&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;***&amp;nbsp;Variables&amp;nbsp;***&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;#Breakdown&amp;nbsp;of&amp;nbsp;endpoint&amp;nbsp;below:&amp;nbsp;https://jsonplaceholder.typicode.com/users&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;${HOST}&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;jsonplaceholder.typicode.com&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;${SCHEME}&amp;nbsp;&lt;/span&gt; &amp;nbsp; &amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;https&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;${ENDPOINT}&amp;nbsp;&lt;/span&gt; &amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;/users&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;***&amp;nbsp;Test&amp;nbsp;Cases&amp;nbsp;***&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #e69138;&quot;&gt;Get&amp;nbsp;Users&amp;nbsp;Endpoint&amp;nbsp;Should&amp;nbsp;Be&amp;nbsp;Successful&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;&lt;span style=&quot;color: magenta;&quot;&gt;Create&amp;nbsp;Http&amp;nbsp;Context&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;&amp;nbsp;&lt;/span&gt; &amp;nbsp; &amp;nbsp;&lt;/span&gt; &lt;span style=&quot;color: #6aa84f;&quot;&gt;${HOST}&amp;nbsp; &amp;nbsp; &amp;nbsp; ${SCHEME}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e6db74;&quot;&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #a6e22e;&quot;&gt;&lt;span style=&quot;color: magenta;&quot;&gt;GET&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;${ENDPOINT}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;&lt;span style=&quot;color: magenta;&quot;&gt;Response&amp;nbsp;Status&amp;nbsp;Code&amp;nbsp;Should&amp;nbsp;Equal&lt;/span&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;200&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #e69138;&quot;&gt;Validate&amp;nbsp;JSON&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: #6aa84f;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;${response_body}&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;/span&gt; &lt;span style=&quot;color: magenta;&quot;&gt;Get&amp;nbsp;Response&amp;nbsp;Body&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: magenta;&quot;&gt;Should&amp;nbsp;Be&amp;nbsp;Valid&amp;nbsp;Json&lt;/span&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt; &lt;span style=&quot;color: #6aa84f;&quot;&gt;${response_body}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e6db74;&quot;&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #a6e22e;&quot;&gt;&lt;span style=&quot;color: magenta;&quot;&gt;Log&amp;nbsp;Json&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt; &lt;span style=&quot;color: #6aa84f;&quot;&gt;${response_body}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #e69138;&quot;&gt;Validate&amp;nbsp;Dictionary&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;${response_body}&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;/span&gt; &lt;span style=&quot;color: magenta;&quot;&gt;Get&amp;nbsp;Response&amp;nbsp;Body&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: magenta;&quot;&gt; Log&amp;nbsp;Json&lt;/span&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt; &lt;span style=&quot;color: #6aa84f;&quot;&gt;${response_body}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e6db74;&quot;&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #6aa84f;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;${dictionary}&amp;nbsp;&lt;/span&gt;=&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;&lt;span style=&quot;color: magenta;&quot;&gt;Evaluate&lt;/span&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;json.loads(&#39;&#39;&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&#39;&lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;${response_body}&lt;/span&gt;&#39;&#39;&#39;)&amp;nbsp; json&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e6db74;&quot;&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #a6e22e;&quot;&gt;&lt;span style=&quot;color: magenta;&quot;&gt;Log&amp;nbsp;Dictionary&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt; &lt;span style=&quot;color: #6aa84f;&quot;&gt;${dictionary}&lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-XSejgeHrw_MvGlqwFL25c46X1SbWFRDYNto25J-BAYuC5W2C4gvmONhkkb-xqKSQzI1rejWUNvBHcULpAMUUbCzSIbLKK0opPOwKgRfBuJ4HmJKzazBHeAxsDGwoDvxYQZHARhuYSmU/s1600/gear7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;768&quot; data-original-width=&quot;1366&quot; height=&quot;358&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-XSejgeHrw_MvGlqwFL25c46X1SbWFRDYNto25J-BAYuC5W2C4gvmONhkkb-xqKSQzI1rejWUNvBHcULpAMUUbCzSIbLKK0opPOwKgRfBuJ4HmJKzazBHeAxsDGwoDvxYQZHARhuYSmU/s640/gear7.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/7551948764382087598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2017/01/testing-json-endpoints-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/7551948764382087598'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/7551948764382087598'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2017/01/testing-json-endpoints-with.html' title='Testing JSON Endpoints With Robotframework'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-XSejgeHrw_MvGlqwFL25c46X1SbWFRDYNto25J-BAYuC5W2C4gvmONhkkb-xqKSQzI1rejWUNvBHcULpAMUUbCzSIbLKK0opPOwKgRfBuJ4HmJKzazBHeAxsDGwoDvxYQZHARhuYSmU/s72-c/gear7.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-4737758171344793836</id><published>2016-12-27T17:41:00.003-05:00</published><updated>2018-06-02T23:56:13.138-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="json"/><category scheme="http://www.blogger.com/atom/ns#" term="robotframework"/><category scheme="http://www.blogger.com/atom/ns#" term="selenium"/><title type='text'>How to evaluate JSON in Robot Framework</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
Here is a simple example that will demonstrate how to evaluate JSON in Robot Framework. This can be useful if you are attempting to do some form of API testing that requires you to assert return values.&lt;br /&gt;
&lt;br /&gt;
In our robot file, we will create a JSON variable, and utilize Python&#39;s built-in json loader to retrieve the data. Once we get the JSON loaded, we can use the &quot;password&quot; key to verify the expected value. I&#39;ve added color coding to help show you what parts are matching.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;inconsolata&amp;quot; , &amp;quot;inconsolata&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;consolas&amp;quot; , &amp;quot;courier new&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;font-weight: normal !important;&quot;&gt;***&amp;nbsp;Variables&amp;nbsp;***&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;inconsolata&amp;quot; , &amp;quot;inconsolata&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;consolas&amp;quot; , &amp;quot;courier new&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: normal !important;&quot;&gt;${&lt;span style=&quot;color: #bf9000;&quot;&gt;js&amp;nbsp;string&lt;/span&gt;}=&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;inconsolata&amp;quot; , &amp;quot;inconsolata&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;consolas&amp;quot; , &amp;quot;courier new&amp;quot; , monospace;&quot;&gt;... &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;&lt;span style=&quot;color: #6aa84f;&quot;&gt;random&lt;/span&gt;&quot;:&amp;nbsp;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;inconsolata&amp;quot; , &amp;quot;inconsolata&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;consolas&amp;quot; , &amp;quot;courier new&amp;quot; , monospace;&quot;&gt;... &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;passwd_change_date&quot;:&amp;nbsp;&quot;2016-12-16T11:26:26&quot;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;inconsolata&amp;quot; , &amp;quot;inconsolata&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;consolas&amp;quot; , &amp;quot;courier new&amp;quot; , monospace;&quot;&gt;... &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;passwd_fail_count&quot;:&amp;nbsp;0,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;inconsolata&amp;quot; , &amp;quot;inconsolata&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;consolas&amp;quot; , &amp;quot;courier new&amp;quot; , monospace;&quot;&gt;... &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;&lt;span style=&quot;color: #cc0000;&quot;&gt;password&lt;/span&gt;&quot;:&amp;nbsp;&quot;123456789&quot;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;inconsolata&amp;quot; , &amp;quot;inconsolata&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;consolas&amp;quot; , &amp;quot;courier new&amp;quot; , monospace;&quot;&gt;... &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;status&quot;:&amp;nbsp;0,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;inconsolata&amp;quot; , &amp;quot;inconsolata&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;consolas&amp;quot; , &amp;quot;courier new&amp;quot; , monospace;&quot;&gt;... &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;user_name&quot;:&amp;nbsp;&quot;test@test.com&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;inconsolata&amp;quot; , &amp;quot;inconsolata&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;consolas&amp;quot; , &amp;quot;courier new&amp;quot; , monospace;&quot;&gt;... &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;inconsolata&amp;quot; , &amp;quot;inconsolata&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;consolas&amp;quot; , &amp;quot;courier new&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;font-weight: normal !important;&quot;&gt;... &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;inconsolata&amp;quot; , &amp;quot;inconsolata&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;consolas&amp;quot; , &amp;quot;courier new&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;inconsolata&amp;quot; , &amp;quot;inconsolata&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;consolas&amp;quot; , &amp;quot;courier new&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;font-weight: normal !important;&quot;&gt;***&amp;nbsp;Test&amp;nbsp;cases&amp;nbsp;***&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;inconsolata&amp;quot; , &amp;quot;inconsolata&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;consolas&amp;quot; , &amp;quot;courier new&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;font-weight: normal !important;&quot;&gt;&lt;span style=&quot;color: magenta;&quot;&gt;TC&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;inconsolata&amp;quot; , &amp;quot;inconsolata&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;consolas&amp;quot; , &amp;quot;courier new&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;font-weight: normal !important;&quot;&gt;&lt;span style=&quot;color: #b45f06;&quot;&gt;&amp;amp;{data}&lt;/span&gt;=&amp;nbsp; &amp;nbsp; Evaluate&amp;nbsp; &amp;nbsp; &amp;nbsp;json.loads($&lt;span style=&quot;color: #bf9000;&quot;&gt;js_string&lt;/span&gt;)&amp;nbsp; &amp;nbsp; json&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #b45f06;&quot;&gt;&amp;amp;{data}&lt;/span&gt;=&amp;nbsp; &amp;nbsp; Set&amp;nbsp;variable&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #b45f06;&quot;&gt;&amp;amp;{data}&lt;/span&gt;[&lt;span style=&quot;color: #6aa84f;&quot;&gt;random&lt;/span&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;inconsolata&amp;quot; , &amp;quot;inconsolata&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;consolas&amp;quot; , &amp;quot;courier new&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; Should&amp;nbsp;be&amp;nbsp;equal&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #b45f06;&quot;&gt;&amp;amp;{data}&lt;/span&gt;[&lt;span style=&quot;color: #cc0000;&quot;&gt;password&lt;/span&gt;]&amp;nbsp; &amp;nbsp; 123456789&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;inconsolata&amp;quot; , &amp;quot;inconsolata&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;consolas&amp;quot; , &amp;quot;courier new&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;inconsolata&amp;quot; , &amp;quot;inconsolata&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;consolas&amp;quot; , &amp;quot;courier new&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;b&gt;&lt;u&gt;Source Reference:&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#dictionary-variables&quot;&gt;http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#dictionary-variables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://robotframework.org/robotframework/latest/libraries/BuiltIn.html#Evaluate&quot;&gt;http://robotframework.org/robotframework/latest/libraries/BuiltIn.html#Evaluate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu2eUeklCOd-fHeTZ0E5hmjKvutlMUoRy1ZL30VdQc6FJnhgRZYnE84FrDDSZhqFfPdR81qjNHd4l-H8-pUbt5rya14qKpWOczjQgHCWqbhTs4ZVYYEr3jjBh_Sk7K2Nw23KdzBQ0yjDI/s1600/gear9.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1000&quot; data-original-width=&quot;1600&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu2eUeklCOd-fHeTZ0E5hmjKvutlMUoRy1ZL30VdQc6FJnhgRZYnE84FrDDSZhqFfPdR81qjNHd4l-H8-pUbt5rya14qKpWOczjQgHCWqbhTs4ZVYYEr3jjBh_Sk7K2Nw23KdzBQ0yjDI/s640/gear9.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/4737758171344793836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2016/12/how-to-evaluate-json-in-robot-framework.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/4737758171344793836'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/4737758171344793836'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2016/12/how-to-evaluate-json-in-robot-framework.html' title='How to evaluate JSON in Robot Framework'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu2eUeklCOd-fHeTZ0E5hmjKvutlMUoRy1ZL30VdQc6FJnhgRZYnE84FrDDSZhqFfPdR81qjNHd4l-H8-pUbt5rya14qKpWOczjQgHCWqbhTs4ZVYYEr3jjBh_Sk7K2Nw23KdzBQ0yjDI/s72-c/gear9.jpg" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-4060643667310524240</id><published>2016-12-27T00:31:00.002-05:00</published><updated>2018-06-02T23:56:58.169-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="optional arguments"/><category scheme="http://www.blogger.com/atom/ns#" term="robotframework"/><category scheme="http://www.blogger.com/atom/ns#" term="selenium"/><title type='text'>How To Use Optional Keyword Arguments in Robot Framework</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
The Robot Framework documentation explains how to use optional keywords quite clearly, but I wanted to write up a quick example to display the use of default and optional values.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
.robot file&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div&gt;
*** Test Cases ***&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: magenta;&quot;&gt;Example Vegetable List&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #38761d;&quot;&gt;Fill Grocery List&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #38761d;&quot;&gt;Fill Grocery List&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #b45f06;&quot;&gt;type=Tomato&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
*** Keywords ***&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: magenta;&quot;&gt;Fill Grocery List&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;[Arguments] &amp;nbsp; &amp;nbsp; &amp;nbsp;${type}=Potato &amp;nbsp; &amp;nbsp; ${category}=Vegetable&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #38761d;&quot;&gt;Input Text &lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; id=type &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;${type}&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #38761d;&quot;&gt;Input Text&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; id=category &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;${category}&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Values for Grocery List 1 will be Potato, Vegetable&lt;/li&gt;
&lt;li&gt;Values for Grocery List 2 will be Tomato, Vegetable&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
In Grocery List 2, we only changed the type from Potato to Tomato. Note how we don&#39;t call category at all since we are not changing it. If we wanted to make a change to category, we can add &lt;span style=&quot;color: #b45f06;&quot;&gt;category=Fruit&lt;/span&gt; when we make the &lt;span style=&quot;color: #38761d;&quot;&gt;Fill Grocery List&lt;/span&gt; call.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&quot;&lt;span style=&quot;widows: 1;&quot;&gt;Free keyword arguments support variables similarly as&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#named-arguments-with-variables&quot; style=&quot;widows: 1;&quot;&gt;named arguments&lt;/a&gt;&lt;span style=&quot;widows: 1;&quot;&gt;. In practice that means that variables can be used both in names and values, but the escape sign must always be visible literally. For example, both&amp;nbsp;&lt;/span&gt;&lt;code style=&quot;background-color: #f4f4f4; widows: 1;&quot;&gt;foo=${bar}&lt;/code&gt;&lt;span style=&quot;widows: 1;&quot;&gt;&amp;nbsp;and&amp;nbsp;&lt;/span&gt;&lt;code style=&quot;background-color: #f4f4f4; widows: 1;&quot;&gt;${foo}=${bar}&lt;/code&gt;&lt;span style=&quot;widows: 1;&quot;&gt;&amp;nbsp;are valid, as long as the variables that are used exist. An extra limitation is that free keyword argument names must always be strings. Support for variables in names is a new feature in Robot Framework 2.8.6, prior to that possible variables were left un-resolved.&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;widows: 1;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;widows: 1;&quot;&gt;&lt;u&gt;&lt;b&gt;Reference Material:&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#free-keyword-arguments&quot;&gt;http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#free-keyword-arguments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#kwargs-with-user-keywords&quot;&gt;http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#kwargs-with-user-keywords&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2cd0mvWFyIov5c2-i-gNwseVhFvdNxC_3VYmd5liLMRRvaWO-yT5PANEv0_9Y6DJ5yyrjsc1Mrbj4-n4wFuXl8S0tMfn2bhFfggpWgcR23GQDrheqB-I-p9gPfrvuAWQsJHRAetfpC7U/s1600/gear10.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1011&quot; data-original-width=&quot;1600&quot; height=&quot;404&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2cd0mvWFyIov5c2-i-gNwseVhFvdNxC_3VYmd5liLMRRvaWO-yT5PANEv0_9Y6DJ5yyrjsc1Mrbj4-n4wFuXl8S0tMfn2bhFfggpWgcR23GQDrheqB-I-p9gPfrvuAWQsJHRAetfpC7U/s640/gear10.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/4060643667310524240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2016/12/how-to-use-optional-keyword-arguments.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/4060643667310524240'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/4060643667310524240'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2016/12/how-to-use-optional-keyword-arguments.html' title='How To Use Optional Keyword Arguments in Robot Framework'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2cd0mvWFyIov5c2-i-gNwseVhFvdNxC_3VYmd5liLMRRvaWO-yT5PANEv0_9Y6DJ5yyrjsc1Mrbj4-n4wFuXl8S0tMfn2bhFfggpWgcR23GQDrheqB-I-p9gPfrvuAWQsJHRAetfpC7U/s72-c/gear10.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-1719666035963779264</id><published>2016-12-26T12:49:00.004-05:00</published><updated>2016-12-26T12:54:56.130-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="how to install robot framework on jenkins"/><category scheme="http://www.blogger.com/atom/ns#" term="jenkins"/><category scheme="http://www.blogger.com/atom/ns#" term="robotframework"/><category scheme="http://www.blogger.com/atom/ns#" term="robotframework setup"/><category scheme="http://www.blogger.com/atom/ns#" term="selenium 2"/><category scheme="http://www.blogger.com/atom/ns#" term="selenium 3"/><title type='text'>How to setup Jenkins and Robot Framework with Git</title><content type='html'>&lt;div&gt;
This is a quick and dirty guide to setting up Robot Framework in Jenkins. Since we store all of our robot test cases in git, we will utilize Source Control to ensure we are running our latest tests. This guide also assumes you have a remote selenium grid setup to run tests against. For more detailed steps on how some of the steps are done, please review the reference links. And as always, please ensure you have a backup of Jenkins or whatever you are modifying before you start!&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;Required Installations on Jenkins&amp;nbsp;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- git&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- python 2.7+&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- robotframework&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;b&gt;&lt;u&gt;Required Plugins for Jenkins&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- &lt;a href=&quot;https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin&quot; target=&quot;_blank&quot;&gt;Jenkins GIT plugin&lt;/a&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- &lt;a href=&quot;https://wiki.jenkins-ci.org/display/JENKINS/Robot+Framework+Plugin&quot; target=&quot;_blank&quot;&gt;Robot Framework plugin&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;SSH onto the Jenkins machine itself.&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;1)&lt;/b&gt; Verify python is installed (check using &lt;b&gt;&lt;i&gt;which python&lt;/i&gt;&lt;/b&gt;)&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- If not installed, please look for a more detailed python installation guide.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - &lt;a href=&quot;https://www.digitalocean.com/community/tutorials/how-to-set-up-python-2-7-6-and-3-3-3-on-centos-6-4&quot; target=&quot;_blank&quot;&gt;Detailed Python Install Guide 1&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - &lt;a href=&quot;https://github.com/h2oai/h2o-2/wiki/Installing-python-2.7-on-centos-6.3.-Follow-this-sequence-exactly-for-centos-machine-only&quot; target=&quot;_blank&quot;&gt;Detailed Python Install Guide 2&lt;/a&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- Important Note, you can stick with the default version of python, but I opted for version 2.7 and since Jenkins is installed on a CentOS box, version 2.6 should automatically be installed by default. I decided to install a separate 2.7 python package to prevent deprecated command warnings.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;u&gt;Example warnings from 2.6 that are not present in 2.7&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;background-color: white; font-size: 11px; white-space: pre-wrap; widows: 1;&quot;&gt;/usr/lib/python2.6/site-packages/selenium/webdriver/remote/webdriver.py:548: DeprecationWarning: use driver.switch_to.alert instead&lt;/span&gt;&lt;/div&gt;
&lt;pre style=&quot;background-color: white; font-size: 11px; margin-bottom: 0px; margin-top: 0px; white-space: pre-wrap; widows: 1; word-wrap: break-word;&quot;&gt;  warnings.warn(&quot;use driver.switch_to.alert instead&quot;, DeprecationWarning)

     /usr/lib/python2.6/site-packages/selenium/webdriver/remote/webdriver.py:542: DeprecationWarning: use driver.switch_to.default_content instead
  warnings.warn(&quot;use driver.switch_to.default_content instead&quot;, DeprecationWarning)
     /usr/lib/python2.6/site-packages/selenium/webdriver/remote/webdriver.py:536: DeprecationWarning: use driver.switch_to.frame instead
  warnings.warn(&quot;use driver.switch_to.frame instead&quot;, DeprecationWarning)
&lt;/pre&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;u&gt;Below is a simple guide for version 2.7:&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;u&gt;Retrieve and untar python package&lt;/u&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #b45f06;&quot;&gt;&amp;nbsp; wget&amp;nbsp;https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tar.xz&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #b45f06;&quot;&gt;xz -d Python-2.7.10.tar.xz&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #b45f06;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tar -xvf Python-2.7.10.tar&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;u&gt;Build and&amp;nbsp;Install package&lt;/u&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #b45f06;&quot;&gt;cd Python-2.7.10&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #b45f06;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ./configure --prefix=/usr/local&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #b45f06;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; make &amp;amp;&amp;amp; make altinstall&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;u&gt;Install pip&lt;/u&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left; widows: 1;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #b45f06;&quot;&gt;&amp;nbsp;wget https://bootstrap.pypa.io/get-pip.py&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left; widows: 1;&quot;&gt;
&lt;span style=&quot;color: #b45f06;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;python2.7 get-pip.py&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left; widows: 1;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left; widows: 1;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;u&gt;Install Virtualenv&lt;/u&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left; widows: 1;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #b45f06;&quot;&gt;pip2.7 install virtualenv&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left; widows: 1;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;i&gt;If you are having pathing issues, you can always try loading the source of 2.7&lt;/i&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left; widows: 1;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #b45f06;&quot;&gt;&amp;nbsp;sudo /usr/local/bin/pip install virtualenv&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;2)&lt;/b&gt; Verify git is installed (if not installed, a simple &lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: #b45f06;&quot;&gt;yum install git&lt;/span&gt;&lt;/i&gt;&lt;/b&gt; should do the trick)&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;3)&lt;/b&gt; Install robotframework and selenium libraries&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #b45f06;&quot;&gt;pip2.7 install robotframework&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #b45f06;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pip2.7 install robotframework-selenium2library&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;4)&lt;/b&gt; Setup an SSH key pairing (no passphrase) between Jenkins and bitbucket (or wherever your code is hosted)&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- Good reference material&amp;nbsp;&lt;a href=&quot;https://help.github.com/articles/generating-ssh-keys/&quot;&gt;https://help.github.com/articles/generating-ssh-keys/&lt;/a&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- If you are having trouble after setting up the pairing, make sure to run the command that jenkins gives out on the box itself. There is a first time setup message that prompts the user whether or not to trust the source.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;5) &lt;/b&gt;Create a new jenkins job (Check the jenkins robot plugin guide)&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;&lt;u&gt;Example:&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; a)&amp;nbsp;Build free-style &amp;gt; Add build step &amp;gt; Execute Shell&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pybot --variable browser:firefox --output my_robot_results my_test_suite&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; b) Add Post-build Actions &amp;gt; Publish Robot Framework Test Results&lt;/div&gt;
&lt;div&gt;
&lt;b style=&quot;font-style: italic;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Directory of Robot Output &amp;nbsp;&lt;/b&gt;&amp;gt;&lt;b style=&quot;font-style: italic;&quot;&gt;&amp;nbsp;&lt;/b&gt;my_robot_results&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; c) Select &lt;b&gt;&lt;i&gt;Advanced ...&lt;/i&gt;&lt;/b&gt; Options if you want to save&amp;nbsp;screen shots&amp;nbsp;in your reports&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;&lt;i&gt;Output xml name&lt;/i&gt;&lt;/b&gt; &amp;gt; output.xml&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;&lt;i&gt;Report html name&lt;/i&gt;&lt;/b&gt; &amp;gt; report.html&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;&lt;i&gt;Log html name&lt;/i&gt;&lt;/b&gt;&amp;nbsp;&amp;gt; log.html&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;i&gt;&lt;b&gt;Other files to copy&lt;/b&gt;&amp;nbsp;&lt;/i&gt;&amp;gt;&amp;nbsp;*.png&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- The plugin guide mentions that you should have all results return as Exit 0 to let the plugin decide on whether it is a success/failure, but I opted to just have a Build Failure whenever there is a failed test.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- Post-Build Actions &amp;gt; Publish Robot Framework Test Results&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;- Disable thresholds, you should only be writing critical tests&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;5a)&lt;/b&gt; PROTIP: If you want to run multiple browsers with the same jenkins job, instead of using a free-style project, use a multi-configuration project and define your matrix variables for the browser.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;Configuration Matrix &amp;gt; User-defined Axis&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;&lt;i&gt;Name&lt;/i&gt;&lt;/b&gt; &amp;gt; BROWSER&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;&lt;i&gt;Values&lt;/i&gt;&lt;/b&gt; &amp;gt; chrome firefox safari&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;Once you define your matrix, calling robot only requires a small change.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pybot --outputdir my_robot_results --variable BROWSER:$BROWSER my_test_suite&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;6)&lt;/b&gt; You should now be able to run your tests! Results will be displayed under &quot;Robot Results&quot; in the vertical menu options.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;Sample Screenshots&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg3cwZikP0rdgM56cmq0LXIZ7pN4A5g-BZPOz_4grbsjqLSD7m0amSlPJfS4Q34X_feHCoUNMCLvp_JLGXrphMMK8EauMbraczGh-DG0oQn4YQkv5wpn5l8JUnf9KYOuGYSK4szdqGSBM/s1600/11.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;117&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg3cwZikP0rdgM56cmq0LXIZ7pN4A5g-BZPOz_4grbsjqLSD7m0amSlPJfS4Q34X_feHCoUNMCLvp_JLGXrphMMK8EauMbraczGh-DG0oQn4YQkv5wpn5l8JUnf9KYOuGYSK4szdqGSBM/s320/11.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiyIaNHX_q4hj4u_a6nBr8e7fKlVIU-4miWmFmLuUOZRsPSKGnyH-IZ1JVWbtbbcY7Hg6YAH-BmYgEj6H_Gldds7DFBBNNikickf3_-zCUYVhwCsTKw__TWqYk3OcaRo4wyWrGwGQeZH0/s1600/12.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiyIaNHX_q4hj4u_a6nBr8e7fKlVIU-4miWmFmLuUOZRsPSKGnyH-IZ1JVWbtbbcY7Hg6YAH-BmYgEj6H_Gldds7DFBBNNikickf3_-zCUYVhwCsTKw__TWqYk3OcaRo4wyWrGwGQeZH0/s320/12.png&quot; width=&quot;315&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwTU7kE7JnWRIQGeToifzZt1Fsi4FtY6GYOh4lq78Ma54Q8wg84ldpvmEPYT1QVfIYgn6SNadWhF6dWWMymd5u2KO9_dLO3Cwnvv1bypZ-X-1bTkU0JqgGmaRjvxvfHMqOsD30VtfMPMk/s1600/13.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwTU7kE7JnWRIQGeToifzZt1Fsi4FtY6GYOh4lq78Ma54Q8wg84ldpvmEPYT1QVfIYgn6SNadWhF6dWWMymd5u2KO9_dLO3Cwnvv1bypZ-X-1bTkU0JqgGmaRjvxvfHMqOsD30VtfMPMk/s320/13.png&quot; width=&quot;315&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOYuwj8NYBSUZPuXCAvc2rPllcFfITp4l3Wg1H8Fn7l0rhr20yyqSLTQE6RwTaRq31nIigLvtqPKMpoAZXwjTQwUuSXwBHXoX-HvL3O55js630gMZZlDlv9eIT-N1EZcibPdY3oGQVIfQ/s1600/14.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOYuwj8NYBSUZPuXCAvc2rPllcFfITp4l3Wg1H8Fn7l0rhr20yyqSLTQE6RwTaRq31nIigLvtqPKMpoAZXwjTQwUuSXwBHXoX-HvL3O55js630gMZZlDlv9eIT-N1EZcibPdY3oGQVIfQ/s320/14.png&quot; width=&quot;318&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Good luck and have fun with Robot Framework and Jenkins!&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
P.S. If you are running on CentOS and pybot is still running python 2.6, you can force robot to use version 2.7.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;color: #b45f06;&quot;&gt;vim /usr/bin/pybot&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
Change the first line from&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;#!/usr/bin/python&lt;/span&gt;&lt;/i&gt;&lt;/b&gt; to&amp;nbsp;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: #38761d;&quot;&gt;#!/usr/local/bin/python2.7&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/1719666035963779264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2016/12/how-to-install-robot-framework-on.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/1719666035963779264'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/1719666035963779264'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2016/12/how-to-install-robot-framework-on.html' title='How to setup Jenkins and Robot Framework with Git'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg3cwZikP0rdgM56cmq0LXIZ7pN4A5g-BZPOz_4grbsjqLSD7m0amSlPJfS4Q34X_feHCoUNMCLvp_JLGXrphMMK8EauMbraczGh-DG0oQn4YQkv5wpn5l8JUnf9KYOuGYSK4szdqGSBM/s72-c/11.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-9032033459032615870</id><published>2016-12-18T21:31:00.000-05:00</published><updated>2018-06-02T23:59:25.305-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="selenium"/><category scheme="http://www.blogger.com/atom/ns#" term="selenium 2"/><category scheme="http://www.blogger.com/atom/ns#" term="selenium 3"/><category scheme="http://www.blogger.com/atom/ns#" term="selenium grid"/><category scheme="http://www.blogger.com/atom/ns#" term="selenium migration"/><title type='text'>Selenium Grid 3.0 Setup - Migrating from Version 2 to 3</title><content type='html'>&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
If you are migrating from Selenium Grid 2 to 3, there are only a few minor changes that you will need to make in the batch and json config files. The biggest issue I ran into when migrating was getting the node to start without closing immediately. &lt;b&gt;In Selenium 3, you need to make sure that your -Dwebdriver call is before the -jar parameter.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;u&gt;&lt;b&gt;Batch file to start Node in Selenium 3.0&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div&gt;
START &quot;local-node&quot; java&amp;nbsp;&lt;b&gt;-Dwebdriver.chrome.driver=chromedriver.exe &amp;nbsp;-jar&amp;nbsp;&lt;/b&gt;selenium-server-standalone-3.0.1.jar -role node -nodeConfig nodeConfig.json&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;u&gt;&lt;b&gt;Batch file to start Node in Selenium 2.0&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div&gt;
START &quot;local-node&quot; java -jar&amp;nbsp;selenium-server-standalone-3.0.1.jar -role node -nodeConfig nodeConfig.json -port 4451&amp;nbsp;-browser &quot;browserName=chrome,maxInstances=4&quot; -Dwebdriver.chrome.driver=chromedriver.exe&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;i&gt;Take note of how the -Dwebdriver call is now before -jar, and -browser is removed. You can define the browser options in the nodeConfig json.&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Reference Links:&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Example Version 3 Hub JSON&lt;br /&gt;
&lt;a href=&quot;https://github.com/SeleniumHQ/selenium/blob/master/java/server/src/org/openqa/grid/common/defaults/DefaultHub.json&quot;&gt;https://github.com/SeleniumHQ/selenium/blob/master/java/server/src/org/openqa/grid/common/defaults/DefaultHub.json&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Example Version 3 Node JSON&lt;br /&gt;
&lt;a href=&quot;https://github.com/SeleniumHQ/selenium/blob/master/java/server/src/org/openqa/grid/common/defaults/DefaultNodeWebDriver.json&quot;&gt;https://github.com/SeleniumHQ/selenium/blob/master/java/server/src/org/openqa/grid/common/defaults/DefaultNodeWebDriver.json&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
There isn&#39;t a full doc on version 3 - but this link shows some of the differences as well.&amp;nbsp;&lt;a href=&quot;https://github.com/SeleniumHQ/selenium/wiki/Grid2&quot;&gt;https://github.com/SeleniumHQ/selenium/wiki/Grid2&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Hopefully this provides some guidance if you are having trouble getting the grid to run.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Thanks,&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
- JJ The Engineer&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqWLSZXomDWMFxaQRbdAwPCpIxGmy10xvT8ADesoAxuiK3VYUScEBesdekQ3WvfuylngT2rQDDxr26tVwvnKsxFzDzRvHvt3eKAjvxdYGLfQBFc1uBP41yruao0q67QcC8XWDcosa8mm4/s1600/gear7.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;630&quot; data-original-width=&quot;1200&quot; height=&quot;336&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqWLSZXomDWMFxaQRbdAwPCpIxGmy10xvT8ADesoAxuiK3VYUScEBesdekQ3WvfuylngT2rQDDxr26tVwvnKsxFzDzRvHvt3eKAjvxdYGLfQBFc1uBP41yruao0q67QcC8XWDcosa8mm4/s640/gear7.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/9032033459032615870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2016/12/selenium-grid-30-setup-migrating-from.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/9032033459032615870'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/9032033459032615870'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2016/12/selenium-grid-30-setup-migrating-from.html' title='Selenium Grid 3.0 Setup - Migrating from Version 2 to 3'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqWLSZXomDWMFxaQRbdAwPCpIxGmy10xvT8ADesoAxuiK3VYUScEBesdekQ3WvfuylngT2rQDDxr26tVwvnKsxFzDzRvHvt3eKAjvxdYGLfQBFc1uBP41yruao0q67QcC8XWDcosa8mm4/s72-c/gear7.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-5522577771138056699</id><published>2014-08-02T00:10:00.001-04:00</published><updated>2014-08-02T00:20:03.185-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="asic scrypt mining"/><category scheme="http://www.blogger.com/atom/ns#" term="bitcoin"/><category scheme="http://www.blogger.com/atom/ns#" term="dogecoin"/><category scheme="http://www.blogger.com/atom/ns#" term="litecoin"/><category scheme="http://www.blogger.com/atom/ns#" term="mining"/><category scheme="http://www.blogger.com/atom/ns#" term="scrypt mining"/><category scheme="http://www.blogger.com/atom/ns#" term="zeusminer"/><title type='text'>Tutorial: How to setup Zeusminer on Ubuntu</title><content type='html'>Here is a tutorial for those who want to run the Zeusminer on Ubuntu.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Backstory:&amp;nbsp;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
I was having a very tough time finding a tutorial on how to setup the Blizzard Zeusminer. After fiddling with the default cgminer that you can download from the main Zeus support site and ultimately failing, I opted to try something else. One of the errors that I couldn&#39;t overcome was the dreaded, &quot;all devices disabled, cannot mine!&quot; After several hours of research, I finally got my brand new Zeusminer to work! The setup is fairly simple and should take only ~10 minutes (assuming you&#39;ve already downloaded everything).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Software that I used:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
- OS: &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;Ubuntu 14.04 LTS x64&lt;/b&gt; version(&lt;a href=&quot;https://wiki.ubuntu.com/TrustyTahr/ReleaseNotes&quot; target=&quot;_blank&quot;&gt;wiki&lt;/a&gt; - &lt;a href=&quot;http://www.ubuntu.com/download/desktop&quot; target=&quot;_blank&quot;&gt;download latest desktop version&lt;/a&gt;)&lt;br /&gt;
- Miner: &amp;nbsp;&lt;b&gt;BFGMiner 4.3.1 &lt;/b&gt;- &lt;a href=&quot;https://mega.co.nz/#!S04CTBDC!diZ9mVO9TraWCBRGRJSGP0_7ybV2mAwI47zV9DZfZ6c&quot; target=&quot;_blank&quot;&gt;Precompiled Ubuntu x64 version by &lt;i&gt;worldly&lt;/i&gt; download&lt;/a&gt;&lt;br /&gt;
- &lt;a href=&quot;https://litecointalk.org/index.php?topic=20477.0&quot; target=&quot;_blank&quot;&gt;BFGMiner Resource Topic&lt;/a&gt;&amp;nbsp;- The fork is currently frozen, but in the event it melts, refer to this guide for reference.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Chips-Count (--zeus-cc)&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Blizzard: 6&lt;/li&gt;
&lt;li&gt;Cyclone: 96&lt;/li&gt;
&lt;li&gt;Hurricane X2: 48 (2*24)&lt;/li&gt;
&lt;li&gt;Hurricane X3: 64 (2*32)&lt;/li&gt;
&lt;li&gt;Thunder X2: 96 (4*24)&lt;/li&gt;
&lt;li&gt;Thunder X3: 128 (4*32)&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;Step by Step Guide:&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
This will assume that you already have Ubuntu 14.04 LTS installed. I installed Ubuntu onto my 16GB flash drive instead of using a regular hard disk or an SSD.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;You will need to &lt;/span&gt;&lt;a href=&quot;https://mega.co.nz/#!S04CTBDC!diZ9mVO9TraWCBRGRJSGP0_7ybV2mAwI47zV9DZfZ6c&quot; style=&quot;font-family: inherit;&quot; target=&quot;_blank&quot;&gt;download the BFGMiner 4.3.1&lt;/a&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;, if this is no longer working, please get the latest link from the BFGMiner Resource Topic.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Once you have it downloaded, drag and drop the file from your &lt;/span&gt;&lt;i style=&quot;font-family: inherit;&quot;&gt;Downloads&lt;/i&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt; directory into your &lt;/span&gt;&lt;i style=&quot;font-family: inherit;&quot;&gt;Documents&lt;/i&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt; directory.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Now, open up a terminal and navigate to the &lt;/span&gt;&lt;i style=&quot;font-family: inherit;&quot;&gt;Documents&lt;/i&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt; directory&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;You need to enable BFGMiner, so this requires you to make the program an executable. To do that, enter the following command: &lt;/span&gt;&lt;b style=&quot;font-family: inherit;&quot;&gt;chmod&amp;nbsp;+x bfgminer&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;At this point, you should already have your shiny new Zeus miner plugged in via USB and all juiced up from the AC adapter. (It doesn&#39;t matter when you decide to plugin the USB or AC adapter, this is just a friendly reminder in case you forgot!)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Now you just need to execute the newly enabled BFGMiner with the Zeusminer configurations and your pool information.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;&lt;b&gt;Blizzard Zeusminer Example: &lt;/b&gt;(Make sure to replace hostname, port, username and password with your own information)&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
./bfgminer --scrypt -o stratum+tcp://hostname.jj:1234 -u user.worker -p password --zeus-cc 6 --zeus-clk 340 -S zeus:/dev/ttyUSB0&lt;br /&gt;
&lt;br /&gt;
7. Enjoy mining your scrypt coin! Good luck :)&lt;br /&gt;
&lt;br /&gt;
If you found this tutorial helpful and would like to leave a tip, thanks :)&lt;br /&gt;
BTC - 16fDkF46r85s4ej3Ecf9a5wNqbfXuc41a&lt;br /&gt;
LTC -&amp;nbsp;LTZHjty9FtzCLzupBkevNF51D3S8XjN2Fi&lt;br /&gt;
Doge -&amp;nbsp;DT8gD24ZirccSrWigAJEXWkBfk9C9ciuej&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Pictures of Zeusminer Blizzard:&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyHJlMz88RY5oTZ0MHDs31wZ2ZPNGVlFmzQeQzBbQvZXfo2pmAOnTH5XoB0C9ZlbstRYuqedvBoEzhu8qkHABPq2sokNhRF5ADcEIZO626sHl_iyNkTklhS-DR4I-yZg5zLeup8lv4hSI/s1600/IMG_20140730_171931.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyHJlMz88RY5oTZ0MHDs31wZ2ZPNGVlFmzQeQzBbQvZXfo2pmAOnTH5XoB0C9ZlbstRYuqedvBoEzhu8qkHABPq2sokNhRF5ADcEIZO626sHl_iyNkTklhS-DR4I-yZg5zLeup8lv4hSI/s1600/IMG_20140730_171931.jpg&quot; height=&quot;240&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Zeusminer Blizzard&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEis7FhMnWMgdvTEcGRl_5RjleNUqCLnlcEtb8MrP8K0ppnZBEfivvFL9bH4TAPLLP76V0O-Eeu64gwyIcz-KTt4g5hwxLez_siDPIbXr8UbDFakDoyL6JfF2zDwStRMZbWZXYWkdhZVROs/s1600/IMG_20140730_171949.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEis7FhMnWMgdvTEcGRl_5RjleNUqCLnlcEtb8MrP8K0ppnZBEfivvFL9bH4TAPLLP76V0O-Eeu64gwyIcz-KTt4g5hwxLez_siDPIbXr8UbDFakDoyL6JfF2zDwStRMZbWZXYWkdhZVROs/s1600/IMG_20140730_171949.jpg&quot; height=&quot;240&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Zeusminer Blizzard, USB cord and Power Adapter&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/5522577771138056699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2014/08/tutorial-how-to-setup-zeusminer-on.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/5522577771138056699'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/5522577771138056699'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2014/08/tutorial-how-to-setup-zeusminer-on.html' title='Tutorial: How to setup Zeusminer on Ubuntu'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyHJlMz88RY5oTZ0MHDs31wZ2ZPNGVlFmzQeQzBbQvZXfo2pmAOnTH5XoB0C9ZlbstRYuqedvBoEzhu8qkHABPq2sokNhRF5ADcEIZO626sHl_iyNkTklhS-DR4I-yZg5zLeup8lv4hSI/s72-c/IMG_20140730_171931.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-3545156587189725308</id><published>2014-05-07T19:03:00.002-04:00</published><updated>2014-05-10T09:39:40.227-04:00</updated><title type='text'>How to wire your house with ethernet</title><content type='html'>&lt;h2&gt;
&lt;u&gt;Reason/Need&lt;/u&gt;&lt;/h2&gt;
This post is made specifically to document the networking portions of my house wiring that I recently had to do (5/3/14). I basically wanted to install Ethernet wall outlets in all of the bedrooms, the living room and \ the basement. By providing an Ethernet outlet in each room, I no longer needed to rely exclusively on WiFi for my Internet connections. A hard wire also provides a more reliable network connection which is something that was necessary since WiFi was in the basement and my desktop was on the first floor.&lt;br /&gt;
&lt;br /&gt;
The basis of what I had to do was cut holes into my walls and then use the open basement ceilings to do the wiring. I then connected all of my outlets to a main switch which connected to my WiFi router (so that they can all be in the same LAN) and then to the cable modem. It is important to use the router for DHCP so your LAN can share files across different devices, unless of course you don&#39;t want to do that...&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;b&gt;&lt;u&gt;Required Items&lt;/u&gt;&lt;/b&gt;&lt;/h2&gt;
For this project I opted for 2 Ethernet jacks per outlet, Cat6 cables for future proofing and super fast LAN file transfer speeds. There are 5 rooms that needed to have outlets installed, but the basement required 2 outlets. I also had two spools to make wiring easier through the house easier. It adds to the cost, but it saves you a lot of work if you are doing two Ethernet jacks per outlet.&lt;br /&gt;
&lt;br /&gt;
1&amp;nbsp;&lt;a href=&quot;http://www.amazon.com/gp/product/B008I8AF88/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B008I8AF88&amp;amp;linkCode=as2&amp;amp;tag=biin0b-20&amp;amp;linkId=KGMI47NVG2GNMRAC&quot; target=&quot;_blank&quot;&gt;Green Ethernet Spool of Cat6&lt;/a&gt;&amp;nbsp;$128&lt;br /&gt;
1&amp;nbsp;&lt;a href=&quot;http://www.amazon.com/gp/product/B008I8AHL8/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B008I8AHL8&amp;amp;linkCode=as2&amp;amp;tag=biin0b-20&amp;amp;linkId=Q7NPHHPVTRLYYV24&quot; target=&quot;_blank&quot;&gt;Orange Ethernet Spool of Cat6&lt;/a&gt;&amp;nbsp;$128&lt;br /&gt;
6&amp;nbsp;&lt;a href=&quot;http://www.amazon.com/gp/product/B001E7H9A2/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B001E7H9A2&amp;amp;linkCode=as2&amp;amp;tag=biin0b-20&amp;amp;linkId=4IZCMAGNXM5ZGTSU&quot; target=&quot;_blank&quot;&gt;Cat6 RJ-45 Toolless Keystone - Green&lt;/a&gt;&amp;nbsp;$5.38 x 6 = $33&lt;br /&gt;
6&amp;nbsp;&lt;a href=&quot;http://www.amazon.com/gp/product/B002JSY5CA/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B002JSY5CA&amp;amp;linkCode=as2&amp;amp;tag=biin0b-20&amp;amp;linkId=223AWEFEI55O6RIC&quot; target=&quot;_blank&quot;&gt;Cat6 RJ-45 Toolless Keystone - Orange&lt;/a&gt;&amp;nbsp;$5.24 x 6 = $32&lt;br /&gt;
6&amp;nbsp;&lt;a href=&quot;http://www.amazon.com/gp/product/B00ANAQHZY/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B00ANAQHZY&amp;amp;linkCode=as2&amp;amp;tag=biin0b-20&amp;amp;linkId=65QTDYURV6AX3X5Q&quot; target=&quot;_blank&quot;&gt;1-Gang Low Voltage Mounting Bracket&lt;/a&gt;&amp;nbsp;$7.29 x 6 = $44&lt;br /&gt;
6&amp;nbsp;&lt;a href=&quot;http://www.amazon.com/gp/product/B00ANAV1ZU/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B00ANAV1ZU&amp;amp;linkCode=as2&amp;amp;tag=biin0b-20&amp;amp;linkId=MAUE6DDD3KUEPQL5&quot; target=&quot;_blank&quot;&gt;Wall Plates for Keystones, 2 Hole&lt;/a&gt;&amp;nbsp;$6.45 x 6 = $39&lt;br /&gt;
1 &lt;a href=&quot;http://www.amazon.com/gp/product/B009GUNIX6/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B009GUNIX6&amp;amp;linkCode=as2&amp;amp;tag=biin0b-20&amp;amp;linkId=SC3JYTHB3TY6EHJ6&quot; target=&quot;_blank&quot;&gt;RJ-45 Modular Plug Tester&lt;/a&gt;&amp;nbsp;$10&lt;br /&gt;
1 &lt;a href=&quot;http://www.amazon.com/gp/product/B005E2Y6BS/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B005E2Y6BS&amp;amp;linkCode=as2&amp;amp;tag=biin0b-20&amp;amp;linkId=VMDKUZIDU2WTTVXD&quot; target=&quot;_blank&quot;&gt;Bag of 100pc Cat6 Plug Solid W/Insert 50U&lt;/a&gt;&amp;nbsp;$12&lt;br /&gt;
1 &lt;a href=&quot;http://www.amazon.com/gp/product/B001TUAWH6/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B001TUAWH6&amp;amp;linkCode=as2&amp;amp;tag=biin0b-20&amp;amp;linkId=QES5UI7XGTY7ENCZ&quot; target=&quot;_blank&quot;&gt;8P8C RJ-45 Network Cable Crimper&lt;/a&gt;&amp;nbsp;$10&lt;br /&gt;
1 &lt;a href=&quot;http://www.amazon.com/gp/product/B002HAJQGA/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B002HAJQGA&amp;amp;linkCode=as2&amp;amp;tag=biin0b-20&amp;amp;linkId=PZEET3QGESFYDXY7&quot; target=&quot;_blank&quot;&gt;16 port Gigabit Switch&lt;/a&gt;&amp;nbsp;$70&lt;br /&gt;
1 &lt;a href=&quot;http://www.amazon.com/gp/product/B006QB1RPY/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B006QB1RPY&amp;amp;linkCode=as2&amp;amp;tag=biin0b-20&amp;amp;linkId=AQWHTZGZEJDSZIXO&quot; target=&quot;_blank&quot;&gt;Wireless Gigabit Router&lt;/a&gt;&amp;nbsp;$137&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;
Estimated Cost: &lt;/b&gt;~$643&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
&lt;u&gt;
Picture Walkthrough&lt;/u&gt;&lt;/h2&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYIFLsrftLV-blGsUswW9rKlnv76Hci6-M8RvRAyE8ieQmQntX3Vz_C6Z6uNCdWzacG28M3G0P7myR6wx_VfWCS-7mU2xoYKxwXL2H2yjT6EHBu4PXzV99po6e_fMcU1zRFqJDGNssDUs/s1600/1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYIFLsrftLV-blGsUswW9rKlnv76Hci6-M8RvRAyE8ieQmQntX3Vz_C6Z6uNCdWzacG28M3G0P7myR6wx_VfWCS-7mU2xoYKxwXL2H2yjT6EHBu4PXzV99po6e_fMcU1zRFqJDGNssDUs/s1600/1.jpg&quot; height=&quot;320&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Here we have a hole that we cut in the wall with a 1 Gang Low Volt Bracket installed. These are pretty simple to install, just make sure the back piece is against the top and bottom of the wall. We already snaked the Ethernet cord down from the ceiling.&amp;nbsp;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZMrQq56HYkqf0ZyuQ-xqugI8jMUU68B8tngJEN_LCj2dR8m1T5wZCbY5pZPhmI6HphqP4H7Vxu6bGMS1V116i7Zvpgp7lCR6hQch53cRexro6hzkNsN0U63CYt_WnBHOIAzBK7W_no28/s1600/2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZMrQq56HYkqf0ZyuQ-xqugI8jMUU68B8tngJEN_LCj2dR8m1T5wZCbY5pZPhmI6HphqP4H7Vxu6bGMS1V116i7Zvpgp7lCR6hQch53cRexro6hzkNsN0U63CYt_WnBHOIAzBK7W_no28/s1600/2.jpg&quot; height=&quot;320&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Here is a green keystone that I have already wired up. Basically, you will just need to strip the outer layer, snake the 4 pairs through the small opening, place them in according to pattern B and then close the top. I recommend using a wrench of some form to close the top and bottom. I had a lot of trouble doing this which just my fingers. Please note, you MUST follow the B pattern on the keystone. As this will be very important when you need to crimp the other side of the cable to plug into the switch. If you need help with crimping the other end of the keystone cable, I have written a &lt;a href=&quot;http://jjtheengineer.blogspot.com/2014/05/how-to-crimp-cat6-cable.html&quot; target=&quot;_blank&quot;&gt;tutorial which you can find in this link.&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDHyLmMDZrlMx7uPA_LUtZ7t-9gTmbVYSg46w6Vehss_LCfKMEGktz9ThxWv6lDwzkNYaBmG6DKBuULWeKKNfxOVpIxX6eDd-F_oHmQ02ok5r8NhAa63fZS1SXlReNrmrxSsUSCeWFkbE/s1600/3.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDHyLmMDZrlMx7uPA_LUtZ7t-9gTmbVYSg46w6Vehss_LCfKMEGktz9ThxWv6lDwzkNYaBmG6DKBuULWeKKNfxOVpIxX6eDd-F_oHmQ02ok5r8NhAa63fZS1SXlReNrmrxSsUSCeWFkbE/s1600/3.jpg&quot; height=&quot;320&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Closer view of the keystones #1.&amp;nbsp;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9jUEUDRqm0Fbo_2L8dJqTJmAH_NlyZqacp02xIJdMR4C9-Dw4uOukzz1XDuxM4XUYUqG9c6jEYmkRXOCf4I8eIoS3Nd9ctyeTOJaJDwDcKL6LUxDS6bYdkbt39zy_f7Wrj0CwtzsoySI/s1600/4.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9jUEUDRqm0Fbo_2L8dJqTJmAH_NlyZqacp02xIJdMR4C9-Dw4uOukzz1XDuxM4XUYUqG9c6jEYmkRXOCf4I8eIoS3Nd9ctyeTOJaJDwDcKL6LUxDS6bYdkbt39zy_f7Wrj0CwtzsoySI/s1600/4.jpg&quot; height=&quot;320&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Closer view of the keystones #2.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqUkNXPerBxgffCEiXJZ12FshyX7MaJGhPKCUKS5ncC2-gMTjkE1IGpCDYaYfHSfWf_3KhdMuhSvYSnHsiVOmA1A1SeqOWZycnanD_IacGd4WErHd9wnm9WWMTmNlhzl-3vryYXyZHHAk/s1600/5.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqUkNXPerBxgffCEiXJZ12FshyX7MaJGhPKCUKS5ncC2-gMTjkE1IGpCDYaYfHSfWf_3KhdMuhSvYSnHsiVOmA1A1SeqOWZycnanD_IacGd4WErHd9wnm9WWMTmNlhzl-3vryYXyZHHAk/s1600/5.jpg&quot; height=&quot;320&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Closer view of the keystones #3.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkh5u4AQiPdcKGrp799ZMRRcThfE1_Vlvx7MtYTBHhpCPrCotpkpRHiP88jzXLgttFlL8PA2nZdfgxWn8CC-YvNv4G4dBAwSfc3EnKjdby0c4humzjzzBcVGBRWR5MdTPh-mOjCAoDJbE/s1600/6.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkh5u4AQiPdcKGrp799ZMRRcThfE1_Vlvx7MtYTBHhpCPrCotpkpRHiP88jzXLgttFlL8PA2nZdfgxWn8CC-YvNv4G4dBAwSfc3EnKjdby0c4humzjzzBcVGBRWR5MdTPh-mOjCAoDJbE/s1600/6.jpg&quot; height=&quot;320&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Once you have all of the keystones setup, place them into the wall plate and mount it onto the low volt bracket.&amp;nbsp;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBYp3EGdFgcpA1ixmziDRUUVJSHcFACBvF_xj_yn7Wk3QA2AtZmXxF8kMLSeZlQIEPVqcFP3PAwF5jJ0gNABgbYgUy5NiJtEpRxklCvC9IqE9gsduq4g2fkbUXKmgLnCC6aJ4HlhThlL0/s1600/7.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBYp3EGdFgcpA1ixmziDRUUVJSHcFACBvF_xj_yn7Wk3QA2AtZmXxF8kMLSeZlQIEPVqcFP3PAwF5jJ0gNABgbYgUy5NiJtEpRxklCvC9IqE9gsduq4g2fkbUXKmgLnCC6aJ4HlhThlL0/s1600/7.jpg&quot; height=&quot;320&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Wall Plate with Keystones all setup.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidj7l2F4YoBePiS2DZsEvh8MQbqq9_GifA6goKdOeaQM31YLMvP0f1iz_O_x6GA-xnCF2WBpymoTHEc_yg0JeInF9ipOcJL3m9t5ehdHxXSi2GO4AScN9LAdvfIupKgB57X2kRqBecFnY/s1600/9.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidj7l2F4YoBePiS2DZsEvh8MQbqq9_GifA6goKdOeaQM31YLMvP0f1iz_O_x6GA-xnCF2WBpymoTHEc_yg0JeInF9ipOcJL3m9t5ehdHxXSi2GO4AScN9LAdvfIupKgB57X2kRqBecFnY/s1600/9.jpg&quot; height=&quot;320&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Now you want to test to see if everything is working properly.&amp;nbsp;In order to test, just plug in a known working cables into the outlet and into the cable tester as seen above. Then on the opposite end, plug in the other half of the cable tester into the end of keystone wire that you had just crimped. If the numbers on the second cable tester goes from 1-8 sequentially, then your wire is working properly!&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh399jCqC9SrUm5SDkRfsBF2b3i6J2E-w73U3rnvRYf6b2vP43VNQfQmkBRsDETyN-hLguJ18PDy80Vb2kGJrDvJPTGIC9enFP6blObUJOCzSprublKdUcvqIP6zb1e3c4KWhNCnY-_KMM/s1600/10.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh399jCqC9SrUm5SDkRfsBF2b3i6J2E-w73U3rnvRYf6b2vP43VNQfQmkBRsDETyN-hLguJ18PDy80Vb2kGJrDvJPTGIC9enFP6blObUJOCzSprublKdUcvqIP6zb1e3c4KWhNCnY-_KMM/s1600/10.jpg&quot; height=&quot;320&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Here is a picture of the ceiling area with all of the Ethernet wiring.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKnbTEByoSok14lh8cRO_Y0G1OzIiVTpA0NqnhqoihllfULwP861xc3-XUoyQBQwSHizu2s38Hr5aRbVOKZQsPbwrVuSoYUYiwMZYLzRSwXfqj0JqEcH5W7sqb3XsuSa4VC0MHF1RKbJc/s1600/11.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKnbTEByoSok14lh8cRO_Y0G1OzIiVTpA0NqnhqoihllfULwP861xc3-XUoyQBQwSHizu2s38Hr5aRbVOKZQsPbwrVuSoYUYiwMZYLzRSwXfqj0JqEcH5W7sqb3XsuSa4VC0MHF1RKbJc/s1600/11.jpg&quot; height=&quot;320&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;More wiring, but bunched up and hidden away along the top of the basement ceiling.&amp;nbsp;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbF5jRqODBjuNtxQsYrnB1Vcqqe0UoMWsp1bmUZKm1gOUoSNkIxzU9AQ74iH3K6hHul03FRG1LAh6w27xMJYDCis6Mps7UJFA0UzLhsLZmmR3-zFgLQ-jeaMAbKd6rFc0xIZf9hlDcI8M/s1600/12.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbF5jRqODBjuNtxQsYrnB1Vcqqe0UoMWsp1bmUZKm1gOUoSNkIxzU9AQ74iH3K6hHul03FRG1LAh6w27xMJYDCis6Mps7UJFA0UzLhsLZmmR3-zFgLQ-jeaMAbKd6rFc0xIZf9hlDcI8M/s1600/12.jpg&quot; height=&quot;320&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;The ends of each keystone fully tested and plugged into my switch.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;
&lt;u&gt;End Notes&lt;/u&gt;&lt;/h2&gt;
&lt;div&gt;
This was my first experience doing a home networking project of this scale, but I think it worked out pretty well. I now live in a place that has Ethernet outlets across all rooms, so if wireless ever becomes an issue, I can always add in a wireless router on the first floor. I can also get internet reliably using Ethernet for my desktop which was one of my main requirements. File sharing and having media stream across different rooms will now be much faster and more reliable. Overall, this project made the Internet more accessible for devices that did not have WiFi and cost me under $700 in equipment costs to fully network my home. I would like to thank those who have helped me with this project because 4 people doing wiring is much easier than doing it all yourself. I hope this project document will help others in the future who are also looking to install Ethernet wall plates in their homes.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If you have any questions about anything networking related in this post, please feel free to ask. :)&lt;br /&gt;
&lt;br /&gt;
Special thanks to Adam, Eric and Erik!&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/3545156587189725308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2014/05/how-to-wire-your-house-with-ethernet.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/3545156587189725308'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/3545156587189725308'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2014/05/how-to-wire-your-house-with-ethernet.html' title='How to wire your house with ethernet'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYIFLsrftLV-blGsUswW9rKlnv76Hci6-M8RvRAyE8ieQmQntX3Vz_C6Z6uNCdWzacG28M3G0P7myR6wx_VfWCS-7mU2xoYKxwXL2H2yjT6EHBu4PXzV99po6e_fMcU1zRFqJDGNssDUs/s72-c/1.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505607283157969070.post-9118453020840747701</id><published>2014-05-06T20:37:00.001-04:00</published><updated>2014-05-06T20:41:16.558-04:00</updated><title type='text'>How to Crimp Cat6 cable</title><content type='html'>&lt;h2&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Recently, I have had a need to crimp my own cables for wiring up a house to install ethernet outlets across a house. Since all the wires require a different length, I opted to order two giant spools of Cat6 for all my wiring needs. So you may be wondering why I opted for Cat6 and not Cat5e. Well the answer is simple, future proofing. Since Cat6 can support 1Gbps, and Cat5e can only 100Mbps, it made sense to spend the money now than have to upgrade the cables later. With Cat6, local LAN transfer speeds will be super fast! A tutorial on how to setup ethernet outlets will be in another article. For now we will focus on how to crimp cables.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h2&gt;
&lt;b&gt;&lt;u&gt;Requirements&lt;/u&gt;&lt;/b&gt;&lt;/h2&gt;
In order to crimp a Cat6 cable, you will need the following items:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;1&amp;nbsp;&lt;a href=&quot;http://www.amazon.com/gp/product/B008I8AF88/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B008I8AF88&amp;amp;linkCode=as2&amp;amp;tag=biin0b-20&amp;amp;linkId=KGMI47NVG2GNMRAC&quot; target=&quot;_blank&quot;&gt;Desired length of 23AWG &lt;b&gt;Cat6&lt;/b&gt; 500MHz UTP Solid Riser Rated Ethernet Cable&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;1&amp;nbsp;&lt;a href=&quot;http://www.amazon.com/gp/product/B009GUNIX6/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B009GUNIX6&amp;amp;linkCode=as2&amp;amp;tag=biin0b-20&amp;amp;linkId=SC3JYTHB3TY6EHJ6&quot; target=&quot;_blank&quot;&gt;RJ45 Modular Plug Tester&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;1&amp;nbsp;&lt;a href=&quot;http://www.amazon.com/gp/product/B001TUAWH6/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B001TUAWH6&amp;amp;linkCode=as2&amp;amp;tag=biin0b-20&amp;amp;linkId=QES5UI7XGTY7ENCZ&quot; target=&quot;_blank&quot;&gt;8P8C RJ-45 Network Cable Crimper&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;1 or 2 depending on wire&amp;nbsp;&lt;a href=&quot;http://www.amazon.com/gp/product/B005E2Y6BS/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B005E2Y6BS&amp;amp;linkCode=as2&amp;amp;tag=biin0b-20&amp;amp;linkId=VMDKUZIDU2WTTVXD&quot; target=&quot;_blank&quot;&gt;Cat6 Plug Solid W/Insert 50U&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
The items listed are the exact tools that I have ordered and used to crimp Cat6 cables in this tutorial. Since Cat6 uses RJ-45, this will work with other Ethernet cords as well such as Cat5 and Cat5e.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;b&gt;&lt;u&gt;Instructions&lt;/u&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRywserVX3T3JnzR_kcunT_rI1mP9QJ18rjkU0ln3d18ARbxhJPPfex0d7lpC7-KLvB3w4KjqcKEyf2woPJTcK_DHuICRbwnzJLv81qmPiuQ72dIWK-NF2xgh6BNPH5lwCgTbdvlvDRqU/s1600/IMG_20140506_170944.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRywserVX3T3JnzR_kcunT_rI1mP9QJ18rjkU0ln3d18ARbxhJPPfex0d7lpC7-KLvB3w4KjqcKEyf2woPJTcK_DHuICRbwnzJLv81qmPiuQ72dIWK-NF2xgh6BNPH5lwCgTbdvlvDRqU/s1600/IMG_20140506_170944.jpg&quot; height=&quot;320&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;i&gt;RJ-45 Connector(top) with Insert Holder(bottom).&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small; text-align: start;&quot;&gt;Here is the Cat6 Plug for the ethernet end. You will notice that there are two pieces which is not typical when ordering RJ-45 connectors, but the second small piece will make crimping much easier. The smaller piece called the &lt;b&gt;insert holder&lt;/b&gt; will help you organize your wires in place when inserting it into the rest of the RJ-45 connector.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitsCng1ndR4BUqsay1dbeCkxeAVgCfs2u34pRUdh2Akxe_pdjPGeIz_XvL7ihscVXdC-6C9zyBD7tl-DwxbkC5tuC4wA9FaOCGZtT58VEHNbXDNHHwuTRiHbljChmpilyq0LO48evQgcM/s1600/IMG_20140506_171024.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitsCng1ndR4BUqsay1dbeCkxeAVgCfs2u34pRUdh2Akxe_pdjPGeIz_XvL7ihscVXdC-6C9zyBD7tl-DwxbkC5tuC4wA9FaOCGZtT58VEHNbXDNHHwuTRiHbljChmpilyq0LO48evQgcM/s1600/IMG_20140506_171024.jpg&quot; height=&quot;320&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Cat6 Ethernet Cable with unfinished end&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbL4N_BwsRoYaLFF37o461RVpxIXTGbaI0ANNo199gpF2jOgV48AyX1XVrwSkPmownaFCbZFePqk215TODfeNeWI7mtjg8mlLhewdC-QRzMJGhtgKoyRcEzPGcelHVN8mTgCrg3ShP18I/s1600/IMG_20140506_172421.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbL4N_BwsRoYaLFF37o461RVpxIXTGbaI0ANNo199gpF2jOgV48AyX1XVrwSkPmownaFCbZFePqk215TODfeNeWI7mtjg8mlLhewdC-QRzMJGhtgKoyRcEzPGcelHVN8mTgCrg3ShP18I/s1600/IMG_20140506_172421.jpg&quot; height=&quot;320&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;The first thing you want to do is to strip about an inch of the outer coating to make organizing and wiring easier.&amp;nbsp;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUkH9sjXd1Fj75rescOZUo7FSn5z8nOroYpmuBI-PPeQ7avwxayufcnGkZSX-0-FssuCjUviDNnrfw222KCdcD1NskOA1EvZo9yNlz0vnCJExSvP6CDVVAj0L2tPn1eUv3Oqa0F39bt5w/s1600/IMG_20140506_172539.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUkH9sjXd1Fj75rescOZUo7FSn5z8nOroYpmuBI-PPeQ7avwxayufcnGkZSX-0-FssuCjUviDNnrfw222KCdcD1NskOA1EvZo9yNlz0vnCJExSvP6CDVVAj0L2tPn1eUv3Oqa0F39bt5w/s1600/IMG_20140506_172539.jpg&quot; height=&quot;320&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Once you strip the outer coating, you should get something similar to this in Cat6. There will be a clear plastic piece inside that separates the 4 pairs and a string. You want to cut the clear plastic piece and string out before you begin organizing your wires.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgT41ivBMe9ZaPnJJWF6QwYzIsVUvBARyp49ighRGg-OrYQnIMERMQX6KFSf4YlnxJZOv5JMfZLb-SJtMz3ZMvAlNkJjAzM8ZZ6n6iuOBfjjw9usJNRGohkybdhE8PhFIJ743wi2LkftcM/s1600/IMG_20140506_172653.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgT41ivBMe9ZaPnJJWF6QwYzIsVUvBARyp49ighRGg-OrYQnIMERMQX6KFSf4YlnxJZOv5JMfZLb-SJtMz3ZMvAlNkJjAzM8ZZ6n6iuOBfjjw9usJNRGohkybdhE8PhFIJ743wi2LkftcM/s1600/IMG_20140506_172653.jpg&quot; height=&quot;320&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Once you cut out the clear plastic piece and string, just untangle the wires so you can use the insert holder in the next step. Also note there there is still a little bit of clear plastic at the end, but that is okay!&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggpTsgiM-nTWdo2oyrjb6rjEfGhade-ndVQSrj-F3ZRq9ZcDXoBldSi3i348t2MgVhm8uK1qc7_sDbgeKVA1a6KIlEUVMiwaVuzlNJjBh8M7dDkpUOC4dsYnAXNTUQU8WN3AiiG8xE3fA/s1600/IMG_20140506_172911.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggpTsgiM-nTWdo2oyrjb6rjEfGhade-ndVQSrj-F3ZRq9ZcDXoBldSi3i348t2MgVhm8uK1qc7_sDbgeKVA1a6KIlEUVMiwaVuzlNJjBh8M7dDkpUOC4dsYnAXNTUQU8WN3AiiG8xE3fA/s1600/IMG_20140506_172911.jpg&quot; height=&quot;320&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Now you want to insert the wires into the insert holder with the &lt;b&gt;smooth back on the bottom&lt;/b&gt;, and the side with the ridges and metal on top. Organize the wires from left to right in the order shown above.&lt;br /&gt;&lt;b&gt;Half Orange, Orange, Half Green, Blue, Half Blue, Green, Half Brown, Brown.&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq-OA-eDzpJ4zcR_WsGYBDGuxQDpvKYCLVOJnLtg9ba0lKgNgYyx7Dq1ymHhzyhfFmLoTf47cLkJ74x7Xchqn0O_Op9Aa-XQCu2RNQtjokqd1HLq00g12zARk8N8bSJ_zBKZO6S6sqVyo/s1600/IMG_20140506_173121.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq-OA-eDzpJ4zcR_WsGYBDGuxQDpvKYCLVOJnLtg9ba0lKgNgYyx7Dq1ymHhzyhfFmLoTf47cLkJ74x7Xchqn0O_Op9Aa-XQCu2RNQtjokqd1HLq00g12zARk8N8bSJ_zBKZO6S6sqVyo/s1600/IMG_20140506_173121.jpg&quot; height=&quot;240&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Make sure you push the wires through the insert holder with about a cm between the insert holder and the outer coating as seen above. From there you will want to make an even cut with your crimper as seen above. Make sure the crimper blades are not super close to the insert holder, give it a tiny bit of space.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYjSmTQ_fks9CNS7VqzmGEsBhemcLx3W3v-wyNbEtaprTKew_2a3dOAOOoR9bKjggTvjHX0IIbsHZucvplQB2BdXrkDIZ5zx36OYfABRtoirjGcl9E7Ov-UTwjTFAJpP-gIvy4M86ZDeA/s1600/IMG_20140506_173139.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYjSmTQ_fks9CNS7VqzmGEsBhemcLx3W3v-wyNbEtaprTKew_2a3dOAOOoR9bKjggTvjHX0IIbsHZucvplQB2BdXrkDIZ5zx36OYfABRtoirjGcl9E7Ov-UTwjTFAJpP-gIvy4M86ZDeA/s1600/IMG_20140506_173139.jpg&quot; height=&quot;240&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Nice even cut with the crimper. You will notice that we left a little bit of space at the end of the connector, and this is intentional.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsS1jMRyOJMvFtyTSZzwMogusfECDeeqM-aFLwzy_Dyome3ih3jPqu5RLM5Z1aaK4Ph43wEykich-p0VV3NcV6u_EqIFfGMQU7AJmP3g0saLgWISl79WC7yRT69yZQF5DICvt3Skghrts/s1600/IMG_20140506_173218.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsS1jMRyOJMvFtyTSZzwMogusfECDeeqM-aFLwzy_Dyome3ih3jPqu5RLM5Z1aaK4Ph43wEykich-p0VV3NcV6u_EqIFfGMQU7AJmP3g0saLgWISl79WC7yRT69yZQF5DICvt3Skghrts/s1600/IMG_20140506_173218.jpg&quot; height=&quot;320&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Now you want to push the wire into the RJ-45 connector. Make sure that the insert holder sits evenly inside and you can see the ends of the wires in front of the connector.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpllmDho3EU0o2ZEsV6uwvtQm7-J_UcNo3wU2oQ5ToFGn_j29KompeqCBA4KDYAkOJJ0Q62-yA0vgxxzxkYLYpSoQbgAQplNlXGaz6V3O3cHN4wqQhSBrQP8H3OIbr3gb3Y2I_q_EQ5E8/s1600/IMG_20140506_173251.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpllmDho3EU0o2ZEsV6uwvtQm7-J_UcNo3wU2oQ5ToFGn_j29KompeqCBA4KDYAkOJJ0Q62-yA0vgxxzxkYLYpSoQbgAQplNlXGaz6V3O3cHN4wqQhSBrQP8H3OIbr3gb3Y2I_q_EQ5E8/s1600/IMG_20140506_173251.jpg&quot; height=&quot;320&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Once you have verified that you can see the ends of the wires in front of the RJ-45 connector. You now want to use your crimper to actually crimp the cable as shown above. Make sure the RJ-45 connector is in all the way and squeeze the crimper to finish the connection between the wire and RJ-45 connector.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoGfDXh0QMC2puNXHmJXR0Rt2T6WGI3CAPHRuQVVlIz3xxX4jYaVBnxgdnqW0OPrWFHDVshOUWVLr12eF604IG-S5Yx1DXIPal4fVynRxmAz_mpn9Jq1dsqN0a98itwpKIHZTooq8_vq0/s1600/IMG_20140506_173332.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoGfDXh0QMC2puNXHmJXR0Rt2T6WGI3CAPHRuQVVlIz3xxX4jYaVBnxgdnqW0OPrWFHDVshOUWVLr12eF604IG-S5Yx1DXIPal4fVynRxmAz_mpn9Jq1dsqN0a98itwpKIHZTooq8_vq0/s1600/IMG_20140506_173332.jpg&quot; height=&quot;320&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;The final step is to test your cable! If they match from 1-8, then you have successfully crimped that cable! Congrats!&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='https://jjtheengineer.blogspot.com/feeds/9118453020840747701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://jjtheengineer.blogspot.com/2014/05/how-to-crimp-cat6-cable.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/9118453020840747701'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7505607283157969070/posts/default/9118453020840747701'/><link rel='alternate' type='text/html' href='https://jjtheengineer.blogspot.com/2014/05/how-to-crimp-cat6-cable.html' title='How to Crimp Cat6 cable'/><author><name>JJ The Engineer</name><uri>http://www.blogger.com/profile/02382227807617994525</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRywserVX3T3JnzR_kcunT_rI1mP9QJ18rjkU0ln3d18ARbxhJPPfex0d7lpC7-KLvB3w4KjqcKEyf2woPJTcK_DHuICRbwnzJLv81qmPiuQ72dIWK-NF2xgh6BNPH5lwCgTbdvlvDRqU/s72-c/IMG_20140506_170944.jpg" height="72" width="72"/><thr:total>3</thr:total></entry></feed>