| 
 | 
Introduction
eValid is an abstraction of a web browser of a rather unusual kind:
it is a fully "test enabled browser."
Here we describe what a "test enabled browser" means 
from the point of view of eValid's script language interface.
The eValid scripting facility should not be viewed as a programming language but instead as a command language for a generalized automated browser. In this view, the eValid product is one realization (based in the IE/Trident Engine) of the command langauge. The command langauge would be the same for any other type of browser because the abstract commands described represent acctions that user's (simulated users, at test playback time) actually take with any actual browser.
There are several hundred commands in the eValid language definition. This table shows some of the key categories of commands and relates how they work in a test playback as the commands drive an automated browser, of which eValid is an instantiation.
| Action On Whole Pages (URLs) | ||
| Type | Command | Explanation | 
| Navigation | InitLink GotoLink FollowLink GoForwardTo GoBackTo etc. | These commands tell eValid to change
		URLs and when doing so, bring down the entire
		page associated with the URL. This process includes correctly processing HTTP/S primary and secondary requests and not continuing forward in the playback until all of the internal synchronization checks have been completed. | 
| Input Into Pages | InputValue SubmitClick InputImageClick ElementClick KeyText etc. | These commands tell eValid to feed keyboard data
		and/or mouse clicks to fields in a page. Note that there are several other different types of InputValue command handled, to account for all of the types of possible web page input data construction options. | 
| Browser State Controlling Playback | Wait Delay Breakpoint Pause Minimize Maximize Restore DeleteCache DeleteCookies DeleteSession etc. | Separate from the automated processing going on during
		browser operation, these commands reproduce browser
		state changes in a systematic way. The cache, cookie, and session manipulations help establish or restore known initial or intra-test states. | 
| Explicit Synchronization | SyncOnElementProperty SyncOnText SyncOnScreenRect SyncOnURL Lock/Unlock etc. | Explicit synchronization commands
		hold back playback until some internal state
		has been satisfied, 
		or until some specified screen property (e.g. a checksum in a screen area)
		has been obtained. These capabilities are critical to AJAX application testing because without them the asynchronous aspect of AJAX almost certainly causes test playback to de-synchronize. | 
| Specifying The Target of Action | ||
| Type | Command | Explanation | 
| Window Basics | Window number (wid) Element index (idx) FramePath (frame_path) etc. | Every command that needs it specifies the
		window identifier (wid) to indicate if the action is
		to be applied to the parent, or one (of many) child
		windows. When an action has to apply to a particular spot on the page the command includes the at-record-time element index (idx). At playback time, however, Adaptive Playback internally modifies the target index automatically to compensate for page changes within a reasonable range. | 
| Page Internals | DOM attribute names text fragments tag names regular expressions etc. | These components of a command give eValid the essential
		information needed to complete an action. In many commands this information is correlated internally with the current page's DOM for purposes of playback synchronization. | 
| Identifying A Location On Page And Acting On It | ||
| Type | Command | Explanation | 
| Finding An Element | IndexFindElement IndexFindElementEx IndexSet IndexMove etc. | Using information provided by the user, these commands identify the place on a page that matches the request [if any can be found]. When found the value is stored as the local sourceIndex. | 
| Acting On An Element | IndexFollowLink IndexElementClick IndexElementEvent ValueSet ValueGet ValuePut etc. | These commands apply standard actions
		on the element at sourceIndex to produce the
		desired effect. These actions are the same kinds of actions that a user performs. In the case of the IndexElementEvent command, however, it is possible to specify ANY kind of browser event (these events are browser-internal signals). | 
| Measurement & Validation Actions | ||
| Type | Command | Explanation | 
| Performance Timing | ResetTimer ElapsedTime etc. | Measures time (time interval) during playback. | 
| Validation | ValidateSelectedText ValidateSelectedImage ValidateClipboardText ValidateSelectedObjProperty etc. | Confirms that ("validates the value of") required data is present on the page at the specified location. | 
| Save Data For Analysis | SaveRecord SaveSelectedText SaveWindow SaveSelectedObjProperties etc. | For the particular identified element or object in a page, these commands save the value of that element or object in a local file for later analysis. | 
References