How do you test web applications? You can use Selenium, but Selenium is very heavy.
I tried wget.
To find out what exactly to send to the app, I started Firebug inside Firefox, went to the “Network” section and recorded what I would do, to see, whether the application works. Then I took the accessed URLs together with the parameters and first tried to send them manually from the command line. Observe, that Firebug lets you copy the exact POST/GET parameter as was sent by the browser, when you right click on the POST/GET command in the Firebug Network log. Once I managed to redo all the steps manuall from the commandline I transferred what I did into a script and edited it until it was nice and would run through:
$ history > test_my_web_app
test_my_web_app now looks as follows:
#!/bin/bash
#
# check availability of:
url="http://www.example.org/my-app"
# exit immediately if something goes wrong -> test fails!
set -e
echo "Testing $url"
# save an error log in case there's an error so that
# we can analyse it further
error_log=$( mktemp )
cookies=$( mktemp )
echo "In case the tests fail, you'll find the error log under $error_log"
# send everything that goes to STDERR to the log
exec 2>$error_log
echo "Getting a cookie..."
wget --save-cookies $cookies "$url" -O /dev/null
# we could put username/password directly into the script but we're cautuous and don't
echo -n "please enter user for $url: "; read user
echo -n "please enter password for $url: "; read -s pass
echo
echo "Logging in..."
# if we logged in successfully, then the webapp will send us an html page
# that contains the following string:
to_verify="You're logged in"
# POST to the webapp:
wget --load-cookies $cookies \
--post-data "login=Login&user_login=$user&user_password=$pass" \
--save-cookies $cookies \
--keep-session-cookies \
"$url/login" \
-O - \
| grep -q "$to_verify"
# now we're logged in
echo "Query component DB..."
# First search the DB (parameters need to be URI encoded...)
num_components_found=$(
wget --load-cookies $cookies \
--save-cookies $cookies \
--post-data 'action=set_params&crit%5Bcolor%5D=red&crit%5Bmin_size%5D=0' \
"$url/prepare-picture" \
-O - \
| grep 'Number of matching components:' \
| sed 's/.*Number of matching components:<\/td><td>//; s/<.*//' )
echo "Make sure that the app found something..."
[ $num_components_found -gt 0 ]
echo "Generate and get picture..."
wget --load-cookies $cookies \
--save-cookies $cookies \
--post-data 'index=0' \
"$url/get-pic" \
-O /dev/null
echo "Hooray, $url successfully tested"
rm $error_log
rm $cookies
<pre>
Surprisingly easy, isn't it?

Services
Sources
About us