How do you test your web site? With a visit to a few pages, or by waiting for customer feedback if something's not working? That's a very risky approach, and what you really need is a planned and systematic testing regime, with unit tests that must be passed (but will flag fails) run on a regular basis.
There are a number of tools that use Ruby scripting to describe and run tests. Both
Selinium and
Watir are well know names, and you can also use
Cucumber on top of Watir's Webdriver to describe your tests in an English-like way that will be good for your customer to understand. At the end of yesterday's
Learning to program in Ruby course, we used the
watir-webdriver to automate browsing and test some of the results - choosing the Well House Consultants quotation page to check out.
I wrote my tests into a hash:
quote_checks = {'Armagh' => "Northern Ireland",
'E18 4RT' => "London - East",
"Cumbria" => "Carlisle",
'SN12 7NY' => "Well House Manor",
'66554' => "Kansas"}

That's five tests of the onsite quote system, with a check to be made that the location has been identified correctly.
I created a browser object, and this starts Firefox in the background, which is then driven by the watir-webdriver for the rest of the tests.
browser = Watir::Browser.new
Finally, I drive my browser to pages, fill in forms, submit them, and look at the results
browser.goto 'www.wellho.net/index.html'
browser.text_field(:name => 'where').set location
browser.button(:value => 'Go!').click
if browser.text =~ /Venue requested:(.*)/
The rest of code is regular ruby - you can find the complete source used to write this article
[here].
Screen output, when run:
munchkin:rs grahamellis$ irb
>> require 'onsite'
Testing On site quotation pages from home page
Passed - 66554
FAILED - 002 [Venue text not matched] Cumbria
Passed - E18 4RT
Passed - SN12 7NY
Passed - Armagh
Passed 4
FAILED 1
(Total 5)
>>
With futher output avaialble in a log file. (
[sample])
I installed the watir-webdriver on my Mac using
sudo gem install watir-webdriver
You may link to our home page (the one on which this script fills in the form to ask for a quotation)
[here], and the quotation generated for E18 - the one that's pictured above - is
[here]
Testing is important! and with facilities like Cucumber, Watir, and Selenium, you can automate much of this work, with the programatic elements giving you just a whispered background commentary as tests tun correctly and then shouting at you when something doesn't work as specified / required / predicted.
(written 2011-09-09)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
R118 - Ruby Sources and Resources [550] 2006 - Making business a pleasure - (2006-01-01)
[2610] Cheat Sheet - what do you need for Ruby on Rails? - (2010-01-31)
[2621] Ruby collections and strings - some new examples - (2010-02-03)
[2931] Syncronise - software, trains, and buses. Please! - (2010-08-22)
[3435] Sorta sorting a hash, and what if an exception is NOT thrown - Ruby - (2011-09-12)
[3622] Loading Ruby classes - where does Ruby look? - (2012-02-24)
[3783] Load path, load and require in Ruby, and a change from 1.8 to 1.9 - (2012-06-24)
H311 - Testing your PHP [3623] Some TestWise examples - helping use Ruby code to check your web site operation - (2012-02-24)
[3958] Testing classes for your PHP website with PHPUnit - (2012-12-20)
[3959] Testing code coverage (have I tested everything?) in PHP - (2012-12-21)
[4652] Testing new algorithms in PHP - (2016-02-20)
G902 - Well House Consultants - Web site techniques, utility and visibility [23] Skills and responsibilities - (2004-08-22)
[32] Web design platoon - (2004-08-29)
[98] No more 'Error 404' pages. Something better. - (2004-10-24)
[109] URLs - a service and not a hurdle - (2004-11-04)
[117] A case of case - (2004-11-14)
[142] Colour for access - (2004-12-06)
[165] Implementing an effective site search engine - (2005-01-01)
[173] Data Mining - (2005-01-09)
[179] The hunt for unique words - (2005-01-16)
[182] Your personal Google ranking - (2005-01-19)
[197] Allow for peak traffic on your web site - (2005-02-01)
[202] Searching for numbers - (2005-02-04)
[222] Who are all these visitors? - (2005-02-20)
[259] Responding to spam - (2005-03-27)
[261] Putting a form online - (2005-03-29)
[268] Information request forms, cleaning up spam - (2005-04-05)
[274] Our most popular resources - (2005-04-10)
[276] An apology to Mr Boneparte - (2005-04-11)
[278] Cover all the options - (2005-04-13)
[284] The Iconish language - (2005-04-19)
[288] Colour blindness for web developers - (2005-04-22)
[311] Growth pains - (2005-05-14)
[314] What language is this written in? - (2005-05-17)
[320] Ordnance Survey - using a 'Get a map' - (2005-05-22)
[322] More maps - (2005-05-23)
[347] Frightening and from-friend viruses and spams - (2005-06-14)
[348] Graveyard pages - (2005-06-15)
[369] CMS - the minefield of Choices - (2005-07-05)
[376] What brings people to my web site? - (2005-07-13)
[414] Form Madness - (2005-08-14)
[492] New Navigation Aid - Launch of My Wellho - (2005-11-11)
[510] Dynamic Web presence - next generation web site - (2005-11-29)
[528] Getting favicon to work - avoiding common pitfalls - (2005-12-14)
[533] Bigger Box Campaign - (2005-12-18)
[649] Denial of Service ''attack'' - (2006-03-17)
[658] Keeping the visitors happy and browsing - (2006-03-26)
[681] Mirroring a dynamic site - (2006-04-12)
[718] Protecting images from theft - (2006-05-12)
[732] Where is a web site visitor browsing from - (2006-05-24)
[757] Horse and Python training - (2006-06-12)
[767] Finding the language preference of a web site visitor - (2006-06-18)
[800] Effective web campaign? - (2006-07-12)
[893] Visibility - (2006-10-14)
[916] Driving customers away - (2006-11-07)
[976] Santa at the station - (2006-12-09)
[994] Training on Cascading Style Sheets - (2006-12-17)
[1015] Search engine placement - long term strategy and success - (2006-12-30)
[1029] Our search engine placement is dropping. - (2007-01-11)
[1055] Above the fold - (2007-01-28)
[1104] Drawing dynamic graphs in PHP - (2007-03-09)
[1177] Sorting out for a site map - (2007-05-05)
[1184] Finding resources - some pointers - (2007-05-13)
[1186] Two new pages / sites - (2007-05-14)
[1198] From Web to Web 2 - (2007-05-21)
[1207] Simple but effective use of mod_rewrite (Apache httpd) - (2007-05-27)
[1212] What brought YOU to our web site? - (2007-06-01)
[1237] What proportion of our web traffic is robots? - (2007-06-19)
[1297] Stuffing content into a web page - easy maintainance - (2007-08-09)
[1437] Above the fold with First Great Western - (2007-11-19)
[1494] A time to update pictures - (2008-01-03)
[1505] Script to present commonly used images - PHP - (2008-01-13)
[1506] Ongoing Image Copyright Issues, PHP and MySQL solutions - (2008-01-14)
[1513] Perl, PHP or Python? No - Perl AND PHP AND Python! - (2008-01-20)
[1534] Where in the world / country is my visitor from? - (2008-02-07)
[1541] Colour, Composition or Content - (2008-02-16)
[1554] Online hotel reservations - Melksham, Wiltshire (near Bath) - (2008-02-24)
[1610] PHP course dot co, dot uk - (2008-04-13)
[1630] To provide external links, or not? - (2008-05-04)
[1634] Kiss and Book - (2008-05-07)
[1653] How do Google Ads work? - (2008-05-25)
[1711] Rapid growth leads to server move - (2008-07-17)
[1747] Who is watching you? - (2008-08-10)
[1756] Ever had One of THOSE mornings? - (2008-08-16)
[1793] Which country does a search engine think you are located in? - (2008-09-11)
[1797] I have been working hard but I do not expect you noticed - (2008-09-14)
[1833] Web Bloopers - good form design - avoiding pitfalls - (2008-10-11)
[1856] A few of my favourite things - (2008-10-26)
[1888] Find the link - (2008-11-16)
[1955] How to avoid duplicating web page maintainance - (2008-12-20)
[1961] Making our things easier to find - (2008-12-26)
[1970] Plagarism - who is copying my pages? - (2009-01-02)
[1982] Cooking bodies and URLs - (2009-01-08)
[2056] Web Site Loading - experiences and some solutions shared - (2009-02-26)
[2065] Static mirroring through HTTrack, wget and others - (2009-03-03)
[2225] How important is a front page ranking on a search engine? - (2009-06-09)
[2332] Formation, des langages Open Source - (2009-08-09)
[2333] Formaci[83][c2]ón, de los lenguajes de c[83][c2]ódigo abierto - (2009-08-09)
[2334] Formazione, Open Source computer lingue - (2009-08-09)
[2335] Ausbildung, die Open-Source-Sprachen - (2009-08-09)
[2336] Forma[83][c2]ç[83][c2]ão, Open Source computador l[83][c2]ínguas - (2009-08-09)
[2337] Opleiding, Open Source computertalen - (2009-08-09)
[2338] Uddannelse, Open Source computer sprog - (2009-08-09)
[2339] Oppl[83][c2]æring, Open Source datamaskinen spr[83][c2]åk - (2009-08-09)
[2340] ldning, Open Source dator spr[83][c2]åk - (2009-08-09)
[2341] Koulutus, Open Source tietokone kielill[83][c2]ä - (2009-08-09)
[2389] Writing with our customers words - (2009-09-01)
[2410] Removal of technical resources from this site - (2009-09-19)
[2519] Status Page / breaks of service in early December - (2009-11-30)
[2532] Analysing Google arrivals by country of origin - (2009-12-10)
[2552] Web site traffic - real users, or just noise? - (2009-12-26)
[2569] How to run a successful online poll / petition / survey / consultation - (2010-01-10)
[2668] Is it worth it? - (2010-03-09)
[2981] How to set up short and meaningfull alternative URLs - (2010-10-02)
[3022] Retaining web site visitors - reducing the one page wonders - (2010-10-31)
[3087] Making the most of critical emails - reading behind the scene - (2010-12-16)
[3149] Looking back at www.wellho.net - (2011-01-28)
[3197] Finding and diverting image requests from rogue domains - (2011-03-08)
[3367] Google +1 - what is it? - (2011-07-22)
[3491] Who is knocking at your web site door? Are you well set up to deal with allcomers? - (2011-10-21)
[3532] Sharing the user experience - designing a form with the customer in mind - (2011-11-29)
[3554] Learning more about our web site - and learning how to learn about yours - (2011-12-17)
[3563] How big is a web page these days? Does the size of your pages matter? - (2011-12-26)
[3589] Promoting a single one of your domains on the search engines - (2012-01-22)
[3734] QR codes with marketing logos embedded - (2012-05-16)
[3744] Short Web Addresses for Melksham - (2012-05-30)
[3745] Legal change - You need to obtain user consent if you use cookies on your website - (2012-06-01)
[3776] Some traps it's so easy to fall into in designing your web site - (2012-06-23)
[3896] An email marathon - (2012-10-15)
[3974] TV show appearance - how does it effect your web site? - (2013-01-13)
[4001] Helping search engines with appropriate 400 error codes - (2013-02-11)
[4076] Web site - fully back! - (2013-04-29)
[4115] More or less back - what happened to our server the other day - (2013-06-14)
[4136] How do I post automatically from a PHP script to my Twitter account? - (2013-07-10)
[4239] Facebook marketing - early experiences - (2014-01-19)
[4376] Well House Consultants, Well House Manor, First Great Western Coffee shop, TransWilts / 2014 web site reports - (2015-01-01)
[4401] Selecting RECENT and POPULAR news and trends for your web site users - (2015-01-19)
[4474] Effect on external factors on traffic to our web sites - an update - (2015-04-26)
[4492] Almost so wrong, but perhaps it's right for some? - (2015-05-11)
A602 - Web Application Deployment - Apache httpd - Sourcing, Installation, Testing [523] Apache httpd release 2.2 - (2005-12-10)
[526] Apache httpd - serving web documents from different directories - (2005-12-12)
[660] Stopping and restarting Apache httpd cleanly - (2006-03-29)
[907] Browser -> httpd -> Tomcat -> MySQL. Restarting. - (2006-10-28)
[982] Notes from the white board - (2006-12-14)
[1095] Apache httpd , browser, MySQL and MySQL client downloads - (2007-02-28)
[1292] DHCP automatic IP address v Static IP - (2007-08-06)
[1449] Upgrade Mac OSX to Leopard, Web Server Apache httpd config lost - (2007-11-29)
[1455] Connecting to MySQL 5 from PHP on Mac OSX Leopard - (2007-12-03)
[1707] Configuring Apache httpd - (2008-07-12)
[1731] Apache httpd, MySQL, PHP - installation procedure - (2008-08-01)
[1768] What is built in to this httpd and PHP? - (2008-08-23)
[1945] Summary - Apache httpd build on Linux - (2008-12-14)
[2080] Using ApacheBench and jconsole to test and monitor Tomcat - (2009-03-14)
[2096] Where is my new Apache httpd installed - (2009-03-22)
[2184] Choosing the right version of Java and Tomcat - (2009-05-16)
[2520] Global and Enable - two misused words! - (2009-11-30)
[4437] Adding a PHP build option, rotating an image based on camera data, and a new look at thumbnails in PHP - (2015-02-22)
R222 - Ruby - Cucumber / web site testing with watir webdrivers and capybara [4387] Regression Testing my website - Cucumber and Watir - (2015-01-07)
[4389] Cucumber example - test::unit, scenario outlines, datafile driven test - (2015-01-09)
[4501] Defining the behaviour of your web site and testing that it works - (2015-05-30)
Some other Articles
Sigils - the characters on the start of variable names in Perl, Ruby and FortranSearching through all the files in or below a directory - Ruby, Tcl, PerlHow many days to Christmas?What is on the Melksham Agenda?Automed web site testing scripted in Ruby using watir-webdriverOur National Autograss Champion, from MelkshamDivide 10000 by 17. Do you get 588.235294117647, 588.24 or 588? - Ruby and PHP1 + 1 + 1 + 1 = 12?Assigning values to variables within other statements - RubyRuby off the Rails?