Your e-Business Quality Partner eValid™ -- Automated Web Quality Solution
Browser-Based, Client-Side, Functional Testing & Validation,
Load & Performance Tuning, Page Timing, Website Analysis,
and Rich Internet Application Monitoring.

eValid -- YUI (Yahoo! User Interface) -- Demonstration Script #1
eValid Home

Introduction
This page presents an eValid's regression test/monitoring solution that runs on a complex website implemented in the Yahoo! User Interface (YUI).

This interface is important because it includes a wide variety of web ready widgets and supporting elements, and because YUI is used in a number of important commercial websites. By choosing a relatively difficult YUI-built site -- in this case the site for Southwest Airlines -- we can also demonstrate some of eValid's advanced features such as page-layout-independent operations.

Script Description
The demonstration script given below is organized into six steps, described individually. The overall goal of the test script is to identify the costs for a flight between two USA airports and report the fare.

In addition, the script times each of the major steps with annotated ElapsedTime commands so that you can measure how long the target website required to complete each step. This is done to show how eValid would collect performance data if this script was put in use in "monitoring mode".

Here are the step-by-step descriptions of the script. Screen shots after each step are shown below.

  1. After the usual setup operations, navigate to Yahoo's YUI developer network area.

  2. Once the starting page is loaded, navigate to the "Sites Powered by YUI" page. This is the page that shows many YUI examples, among them the Southwest Airlines site. The navigation to this site is done entirely with IndexMotion Commands, which finds the correct location for the link. We used these commands because because we expect that page to change over time, and we want the navigation to always be correct.

  3. Go through the flight reservation selection options to the Book Travel area. Then select the origin an destination cities and the dates of travel (one month in the future). These commands are based on the "from life" recordings, but generalized by replacing them with IndexMotion commands which are immune to page changes.

  4. Click Submit and Wait until the fares results synchronize. The easiest synchronization is on the appearance of a unique TEXT string in the results page (to show it has been completely loaded). In this case we chose to wait for the "Wanna Get Away" section to appear, and then for the "Select Departing Flights" message to show up.

  5. From that page, we now compose a message in fares.txt that extracts the key fare data. This is done by constructing commands that use the IndexMotion commands.

  6. Finally, email the fares.txt message to the designated email address. In monitoring mode this information might be used to continually confirm that the website is NOT mistakenly quoting erroneous fare values.

Example Script
Here is the final working version of the eValid script.

# Recording by eValid 
# Copyright © 2012 by Software Research, Inc. 

ProjectID "Project"
GroupID "Findex"
TestID "yui01"
LogID "AUTO"


ScreenSize 1280 1024
FontSize 0
DeleteCache
DeleteCookies

# Go to the Yahoo's YUI developer network area...
InitLink "http://developer.yahoo.com/yui/"
Wait 4667

ResetTimer
# ----------------------------------------------------------------------
# Step 1: Click on the Yahoo! UI Library link...
#-----------------------------------------------------------------------
FollowLink 0 394 "Powered by YUI" "http:" \
	"//developer.yahoo.com/yui/poweredby/" ""
Wait 5028

ElapsedTime "Step_1: Starting page is up..."

# ----------------------------------------------------------------------
# Step 2: Find the SOUTHWEST.COM website, using index motion commands...
# ----------------------------------------------------------------------
# FollowLink 0 84 "Southwest Airlines" "http://www.southwest.com/" ""
# Recorded FollowLink replaced with IndexMotion equivalent...
IndexFindElement 0 DOWN "id" "southwest" ""
IndexFollowLink 0 ""

Wait 2308

# We will assume that our testing/monitoring scenario is to email 
# the pricing of a round trip for a 14 day stay at the selected destination:
#
# Click on Book Travel tab and wait for reservation menu...
FollowLink 0 38 "" "http://www.southwest.com/cgi-bin/buildItinerary2" \
	"?ref=bktrvl_gn" ""

# Wait 3510
# DOM Synchronization added here because above FollowLink + Wait 
# 	was found to be unreliable...
SyncOnText 0 "Standard Reservation" ""

ElapsedTime "Step_2: Reservation page available..."
Wait 1566

# ----------------------------------------------------------------------
# Step 3: Choose a round trip from OAKLAND, CA to OKLAHOMA CITY, OK...
# ----------------------------------------------------------------------
InputValue 0 213 "SELECT-ONE" "" "s0m3valu3" "Oakland, CA - OAK" "49" ""
Wait 1211
InputValue 0 299 "SELECT-ONE" "" "out_arr_airport" "Oklahoma City, OK - " \
	"OKC" "49" ""
Wait 1904
InputValue 0 377 "SELECT-ONE" "" "return_arrive_airport" "Oakland, CA - " \
	"OAK" "51" ""
Wait 1436

# Choose departure one month in future...
IndexSet 0
IndexFindElement 0 DOWN "name" "outbound_depart_month" ""
IndexInputValue 0 "SELECT-ONE" "" "1" ""

Wait 1857
# Original Input value replaced with today + 1...
# InputValue 0 477 "SELECT-ONE" "" "outbound_depart_month" "August" "1" ""  
# Input departure day for the 1st of the selected month at any time...
InputValue 0 485 "SELECT-ONE" "" "outbound_depart_day" "1" "0" ""
Wait 1856
InputValue 0 528 "RADIO" "" "outbound_depart_time" "4" "TRUE" ""
Wait 1630

# Choose to return one month in the future...
IndexSet 0
IndexFindElement 0 DOWN "name" "return_depart_month" ""
IndexInputValue 0 "SELECT-ONE" "" "1" ""
# InputValue 0 477 "SELECT-ONE" "" "return_depart_month" "August" "1" ""

Wait 1025

# Input return day for the 15th of the selected month...
InputValue 0 544 "SELECT-ONE" "" "return_depart_day" "15" "14" ""
Wait 1704
InputValue 0 587 "RADIO" "" "return_depart_time" "4" "TRUE" ""
Wait 1539

ElapsedTime "Step_3: RT/Month/Day input..."

# ----------------------------------------------------------------------
# Step 4: Submit, then sync/wait "WANNA GET AWAY" fares to appear...
# ----------------------------------------------------------------------
SubmitClick 0 684 "" "C99" "Go To Next Step - Select Flight  >>" ""

# Wait 2501
# SyncOnText added to assure playback synchronization on this AJAX page...
SyncOnText 0 "Wanna\r\nGet Away\r\n" ""
SyncOnText 0 "Select Departing Flight" ""

ElapsedTime "Step_4: Display fares..."

# ----------------------------------------------------------------------
# Step 5: Use motion commands to put fare data in "fares.txt"...
# ----------------------------------------------------------------------
IndexSet 0
IndexFindElement 0 DOWN "id" "fareHeaderDiscountFare" ""
IndexSaveObjProperty 0 "innerText" "fares.txt" ""
SaveRecord "fares.txt" "\n" APPEND
Wait 1000
IndexMove +1
IndexFindElement 0 DOWN "id" "fareHeaderDiscountFare" ""
IndexSaveObjProperty 0 "innerText" "fares.txt" "" APPEND
Wait 1000

ElapsedTime "Step_5: Fares composed OK..."

# ----------------------------------------------------------------------
# Step 6: EMAIL the saved file (requires email SETTINGS values)...
# ----------------------------------------------------------------------
#
# NOTE TO USER: Please edit in your own valid email address!
Email "address@domain.com" "Discount Fares for OAK - OHK" "Website " \
	"Reservations" "fares.txt" 

ElapsedTime "Step_6: Fares data result emailed out..."

# End of script.

Screen Shots
When the script is played back you will see a series of actions that reflect all of the steps. Here are some selected screen shots that show the progress of playback.