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 -- Testing Microsoft Outlook.com Email
eValid Home

Overview
This example illustrates use of eValid commands, including specialized structural testing commands, to test the new Microsoft replacement for Hotmail: www.Outlook.com.

Test Description
The sequence of steps for this example is very simple:

  1. Start at the www.Outlook.com home page.
  2. Log in using our eValid@Outlook.com credentials.
  3. Create a new message addressed to ourselves and saying "Hello World."
  4. Send the message.
  5. Wait for the message to arrive at the top of the input queue.
  6. Confirm that the message arrived OK.
  7. Log out of the account.

ScreenShots with Explanation
Here is a set of screenshot taken during playback of the script. Screenshots open in a new window when you click on them.

  1. Navigate to the Outlook.com login page...

    eValid Outlook.com Example: Screenshot 01

  2. Now you are at the Inbox area...

    eValid Outlook.com Example: Screenshot 02

  3. Compose a new message and sent it to eValid@Outlook.com...

    eValid Outlook.com Example: Screenshot 03

  4. Confirm a new message arriving at the Inbox...

    eValid Outlook.com Example: Screenshot 04

  5. Open the newly received message and confirm content...

    eValid Outlook.com Example: Screenshot 05

  6. Sign Out...

    eValid Outlook.com Example: Screenshot 06

Test Script Details
Here is the actual test script used to create the sequence above. This recorded-from-life script has been converted into pure-structural form to assure reliability and to confirm playback synchronization. This script has been confirmed operational on Windows XP and Windows Vista.

Because the JavaScript in the Outlook.com application is so sophisticated, some passages include special DOM-based synchronization steps using such commands as SyncOnElementProperty" and "SyncOnText".

Also, the script assumes general consistency (stability) in the naming of internal classes and/or variable names. For example, at one point to identify the target where "Hello World" is to be placed in the outbound message, the script searches for the element containing the property/value pair: className=ia_i_p_1. If this property/value pair changes then the test will FAIL, and for monitoring purposes the command will have to be updated to the new value.

# Copyright (c) Software Research, Inc. 
# Recording made on: Microsoft Windows XP (IE 9.0.8112.16421)
# Script updated to newest Outlook.com

ProjectID "Project"
GroupID "Group"
TestID "outlook_testing08"
LogID "AUTO"

DeleteCache
DeleteCookies

# Start by navigating to www.Outlook.com...
InitLink "about:blank"
Wait 3056
GotoLink 0 "http://www.Outlook.com/" ""
Wait 3629

# Confirm the AJAX has settled by syncing on an ID tag...
SyncOnElementProperty 0 "id" "brandModeTD" ""

# Proceed to log in...regular eValid navigation is sufficient...
InputValue 0 59 "TEXT" "i0116" "login" "evalid@Outlook.com" "" ""
Wait 5862
InputValue 0 66 "TEXT" "i0118" "passwd" "XXXXXXXXX" "" ""
Wait 2735
Delay 1000
SubmitClick 0 73 "idSIButton9" "SI" "Sign in" "" NAV
Wait 5150

# Syncing on an ID tag to make sure page is ready...
SyncOnElementProperty 0 "id" "icTmMeControlXXL_bar" ""
Wait 2735

# Convert the from-life recorded FollowLink to structural equivalents...
# FollowLink 0 225 "New" "https://bay167.mail.live.com/mail/#" ""
IndexSet 0
IndexFindElement 0 DOWN "id" "NewMessage" ""
IndexFollowLink 0 ""
Delay 1000
SyncOnText 0 "Add a subject" ""

# Now find where to insert details of the outbound message...
IndexSet 0
IndexFindElement 0 DOWN "className" "cp_primaryInput cp_anyInput t_urtc" ""
IndexInputValue 0 TEXT "evalid@Outlook.com" "" ""

Wait 4866
InputValue 0 2150 "TEXT" "fSubject" "fSubject" "testing" "" ""
Wait 4703

# Confirm the AJAX has settled by syncing on an ID tag...
SyncOnElementProperty 0 "id" "ComposeRteEditor_surface" ""
Wait 1000

# Find where to drop in the message...
IndexSet 0
IndexFindElement 0 DOWN "className" "RichText PlaceholderText" ""
IndexElementClick 0 ""
Wait 4373
TabKey 0
Wait 1749
KeyText 0 "Hello World...."
EnterKey 0 6 "" "number:6"
Wait 7737

# Convert the from-life recorded FollowLink to structural equivalents...
# FollowLink 0 122 "Send" "https://bay167.mail.live.com/mail/#" ""
Delay 1000
IndexSet 0
IndexFindElement 0 DOWN "id" "SendMessage" ""
IndexElementClick 0 ""

Wait 11144

# Confirm the AJAX has settled by syncing on an ID tag...
SyncOnText 0 "testing" ""

# Now find the target into which to put the body of the message...
IndexSet 0
IndexFindElement 0 DOWN "className" "ia_i_p_1" ""
IndexMove +5
IndexFollowLink 0 ""
Wait 14165

# Confirm the AJAX has settled by syncing on an ID tag...
SyncOnText 0 "Hello World...." ""
Wait 936

# Confirm that "Hello World" shows up in the message area...
Delay 1000
ValidateSelectedText 0 1672 0 "Hello World...." ""
Wait 2234

# Convert the from-life recorded FollowLink to structural equivalents...
# FollowLink 0 430 "SR Inc" "https://bay167.mail.live.com/mail/#" ""
IndexSet 0
IndexFindElement 0 DOWN "id" "c_melink" ""
IndexFollowLink 0 ""
Wait 1712

# Convert the from-life recorded FollowLink to structural equivalents...
# FollowLink 0 508 "Sign out" "https://login.live.com/logout.srf?" \
#	"ct=1369529800&rver=6.1.6206.0&lc=1033&id=64855&" \
#	"ru=http:%2F%2Fbay167.mail.live.com%2Fhandlers%2F" \
#	"Signout.mvc%3Fservice%3DLive.Mail%26mkt%3Den-us" ""
Delay 1000
IndexSet 0 
IndexFindElement 0 DOWN "id" "c_signout" ""
IndexFollowLink 0 ""

# Confirm the AJAX has settled by syncing on an ID tag...
Delay 1000
SyncOnText 0 "You're signed out." ""
ValidateSelectedText 0 13 0 "You're signed out." ""

# End of script.

Updated: Wednesday 16 August 2017