<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Rituparna's Blog</title><subtitle type="html">Rituparna's Blog on Life @ Microsoft and outside ;)</subtitle><id>http://blogs.msdn.com/rituparna/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/rituparna/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/rituparna/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2006-03-09T12:54:00Z</updated><entry><title>Installing Windows Automation API 3.0 for enabling CodedUITest on WPF Applications</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/rituparna/archive/2009/12/06/installing-windows-automation-api-3-0-for-enabling-codeduitest-on-wpf-applications.aspx" /><id>http://blogs.msdn.com/rituparna/archive/2009/12/06/installing-windows-automation-api-3-0-for-enabling-codeduitest-on-wpf-applications.aspx</id><published>2009-12-06T09:46:00Z</published><updated>2009-12-06T09:46:00Z</updated><content type="html">&lt;p&gt;If you are using CodedUITest to test WPF applications then installing Windows Automation API 3.0 is a pre-requisite. Without this the virtualized controls in WPF wont be played back correctly and since lot of the WPF controls like ListBox/Datagrid are virtualized by default , this will lead to failures.&lt;/p&gt;  &lt;p&gt;Windows automation API is pre-installed on WIN7 and can be installed on Vista/XP as well. This &lt;a href="http://blogs.msdn.com/winuiautomation/default.aspx"&gt;blog&lt;/a&gt; has all the details on howto get Windows Automation API 3.0 installed.&lt;/p&gt;  &lt;p&gt;In case the machine does not have WAA3.0 code generated on doing action on WPF application will have the following comment&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#008000"&gt;// An update for Windows Automation API 3.0 must be installed to enable automation on Windows Presentation Foundation controls. Please refer &lt;/font&gt;&lt;/strong&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=162159"&gt;&lt;strong&gt;&lt;font color="#008000"&gt;http://go.microsoft.com/fwlink/?LinkId=162159&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;font color="#008000"&gt; for more information.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Similar comment is displayed in the MTLM UI for viewing recorded action as well.&lt;/p&gt;  &lt;p&gt;This&amp;#160; let’s the user know that the recording is not proper and user has to install WAA3.0 and re-record. Also a useful way to identify if the machine actually has Windows Automation API 3.0 installed :)&lt;/p&gt;  &lt;p&gt;ciao&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9933116" width="1" height="1"&gt;</content><author><name>rituparna</name><uri>http://blogs.msdn.com/members/rituparna.aspx</uri></author><category term="VSTT" scheme="http://blogs.msdn.com/rituparna/archive/tags/VSTT/default.aspx" /></entry><entry><title>Recording Hover’s in CodedUITest</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/rituparna/archive/2009/11/23/recording-hover-s-in-codeduitest.aspx" /><id>http://blogs.msdn.com/rituparna/archive/2009/11/23/recording-hover-s-in-codeduitest.aspx</id><published>2009-11-23T10:39:48Z</published><updated>2009-11-23T10:39:48Z</updated><content type="html">&lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Mouse Hover is an important part of a Application WorkFlow. Hovering on a control brings about changes in the application which leads to Controls appearing/disappearing , Properties of the controls being changed ,new windows coming up etc. Needless to say it is pertinent that all the Hover Actions are identified correctly during recording to ensure a proper Playback.&lt;/p&gt;  &lt;h3  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;IMPLICIT HOVER&lt;/h3&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;For recordings on WEB Applications&amp;#160; CodedUITest intelligently identifies that an Hover action has been performed on the application and records a Hover-Action on the control on which the Mouse was hovered . This type of auto-generated Hover-Action is referred to as IMPLICIT HOVER. The action such generated was not explicitly performed by the User (however not recording the action would most certainly lead to a faulty recording) and as such is tagged with the ContinueOnError flag. This indicates that even if the action is not played back the Test wont fail and execution will pass on to the next Step. The code generated for Implicit Hovers will look like&lt;/p&gt;  &lt;blockquote  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;   &lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;font color="#00ff00" __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;// Set flag to allow play back to continue if non-essential actions fail. (For example, if a mouse hover action fails.)        &lt;br  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;Playback.PlaybackSettings.ContinueOnError = true; &lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;font color="#00ff00" __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Mouse hover 'My Bay' link at (56, 3)      &lt;br  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Mouse.Hover(uIMyBayHyperlink, new Point(56, 3));&lt;/font&gt;&lt;/p&gt;  &lt;blockquote  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;   &lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;font color="#00ff00" __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;// Reset flag to ensure that play back stops if there is an error.        &lt;br  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;Playback.PlaybackSettings.ContinueOnError = false;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Implicit Hover is a very cool feature in CodedUITest and greatly improves User experience.&lt;/p&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;The Implicit Hovers can be turned off&amp;#160; by modifying the CodedUITestBuilder.exe.config and changing the value of the RecordImplicitHover key. By Default it is turned ON.&lt;/p&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;font color="#00ff00" __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&amp;lt;!--Use this to enable/disable recording of implicithovers.--&amp;gt;      &lt;br  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;add key=&amp;quot;RecordImplicitHover&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;This can be similarly turned OFF in the Fast-Forward a Manual Test scenario by updating the mtlm.exe.config.&lt;/p&gt;  &lt;h3  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;EXPLICIT HOVER&lt;/h3&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;For Client Side Applications Hover-Actions are not recorded implicitly. User has to record the Action Explicitly by Hovering the Mouse on the desired location and pressing a combination of keys to record the Hover-Action. The default Key combination are CTRL + SHIFT + R. The default value can be changed by updating the config files as mentioned above. Explicit Hovers are actual User Actions and are not marked with ContinueOnError flag as a result.&lt;/p&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;font color="#00ff00" __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&amp;lt;!-- HoverKey to use. --&amp;gt;      &lt;br  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;add key=&amp;quot;HoverKeyModifier&amp;quot; value=&amp;quot;Control, Shift , Alt&amp;quot;/&amp;gt;       &lt;br  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;add key=&amp;quot;HoverKey&amp;quot; value=&amp;quot;R&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Explicit Hover action can be generated for Web Applications as well..&lt;/p&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;ciao&lt;/p&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Rituparna&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9927193" width="1" height="1"&gt;</content><author><name>rituparna</name><uri>http://blogs.msdn.com/members/rituparna.aspx</uri></author><category term="VSTT" scheme="http://blogs.msdn.com/rituparna/archive/tags/VSTT/default.aspx" /></entry><entry><title>VSTT ThinkTime</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/rituparna/archive/2009/11/14/thinktime-in-rnp.aspx" /><id>http://blogs.msdn.com/rituparna/archive/2009/11/14/thinktime-in-rnp.aspx</id><published>2009-11-14T16:12:00Z</published><updated>2009-11-14T16:12:00Z</updated><content type="html">&lt;P&gt;ThinkTime by definition is the time spent by a User thinking about his next step. This has been leveraged in VSTT&amp;nbsp;CodedUITest and Fast-Forward a Test feature in MTLM&amp;nbsp;(as also in VSTT Web Test) to make the Playback more resilient.&lt;/P&gt;
&lt;P&gt;If the ThinkTime is turned ON then the delay between each actions is identified and stored in the XML (for MTLM ) incase the delay is greater than a User Specified Interval (ThinkTime Threshold). In CodedUITest an function Call with the ThinkTime Interval is added.&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;// Wait for 14 seconds for user delay between actions; Click 'Start' button &lt;BR&gt;Playback.Wait(14000);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;During Playback RnP will wait for the ThinkTime Interval for the action before doing the Playback for that action. This will ensure that if waiting for that particular instance sparks off a particular change in the Application (Or the Environment like a Pop-up Coming up) then the playback will happen on the changed Settings.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;User Can Specify a ThinkTime Multiplier as well. During Playback the User may decide that the interval needed to wait may be a multiple/fraction of the original WAIT Time and can alter that as per his convenience. This comes in handy if the Network/Hardware Configuration changes between Recording and Playback and may need differential delay during playback.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;So Far alls well but what if during Recording User needed to take a break or his Manager dropped in for a quick chat :).. In such scenarios a ThinkTime of a large duration would have been recorded and would make the Playback Slower… However for such Scenarios User needs to modify the ThinkTimeUpperCutOFF to a high enough duration he will never think for and if the ThinkTime exceeds that duration it will be removed.&lt;/FONT&gt;&lt;/P&gt;
&lt;H2&gt;Usage Scenarios and Recommendation&lt;/H2&gt;
&lt;P&gt;ThinkTime is especially useful when a Client-Side Application is making a background thread Call (Web Service Call/DatabBase Service requests) and that results in the UI being updated. For such Scenarios the in-built Wait For Ready (WFR from now on) mechanism of RnP fails sometimes and the recommendation is to use ThinkTime in such scenarios. For Web Applications recommendation is to turn-Off ThinkTime as the built-IN WFR is good enough and ThinkTime adds extra delays making the Playback Slower.&lt;/P&gt;
&lt;P&gt;To summarize &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Turn ON ThinkTime for Client Applications (both Winforms and WPF). &lt;/LI&gt;
&lt;LI&gt;Turn OFF ThinkTime for Web Applications. &lt;/LI&gt;&lt;/UL&gt;
&lt;H2&gt;Configuring ThinkTime Settings&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;MTLM&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In MTLM user can set it in the following way :&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#00ff00&gt;LabManager -&amp;gt; TestSettings -&amp;gt; New/Open Test Settings -&amp;gt; DataAndDiagnostics -&amp;gt; Action Recording and Action Log&lt;/FONT&gt;.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/rituparna/WindowsLiveWriter/ThinkTimeinRnP_13135/clip_image001_2.png" mce_href="http://blogs.msdn.com/blogfiles/rituparna/WindowsLiveWriter/ThinkTimeinRnP_13135/clip_image001_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=clip_image001 border=0 alt=clip_image001 src="http://blogs.msdn.com/blogfiles/rituparna/WindowsLiveWriter/ThinkTimeinRnP_13135/clip_image001_thumb.png" width=440 height=458 mce_src="http://blogs.msdn.com/blogfiles/rituparna/WindowsLiveWriter/ThinkTimeinRnP_13135/clip_image001_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;TABLE border=1 cellSpacing=0 cellPadding=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=175&gt;
&lt;P&gt;&lt;B&gt;RecordThinkTime&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=463&gt;
&lt;P&gt;User can enable recording think time by checking the option displayed in the first highlighted area and by setting a value. Default is 10 seconds.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=175&gt;
&lt;P&gt;&lt;B&gt;ThinkTimeThreshold&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=175&gt;
&lt;P&gt;&lt;B&gt;ThinkTimeMultiplier&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=463&gt;
&lt;P&gt;The next highlighted part is for ThinkTimeMultiplier&lt;B&gt; &lt;/B&gt;whose default value is set to 1.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=175&gt;
&lt;P&gt;&lt;B&gt;ThinkTimeUpperCutOff&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=463&gt;
&lt;P&gt;ThinkTimeUpperCutOff property can only be configured using MTLM.exe.config after adding the following key&lt;/P&gt;
&lt;P&gt;&amp;lt;!-- Think time upper cut-off in milliseconds. &lt;/P&gt;
&lt;P&gt;This represents the maximum think time value. --&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;add key="ThinkTimeUpperCutoff" value="120000" /&amp;gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;H5&gt;&amp;nbsp;&lt;/H5&gt;
&lt;H5&gt;&lt;A title=_Toc245891857 name=_Toc245891857&gt;&lt;/A&gt;CodedUITest&lt;/H5&gt;
&lt;P&gt;Following are the properties provided to user to configure/change think time settings. 
&lt;TABLE border=1 cellSpacing=0 cellPadding=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=169&gt;
&lt;P&gt;&lt;B&gt;RecordThinkTime&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=469&gt;
&lt;P&gt;This Boolean key exists in CodedUITestBuilder.exe.config. The default value is false.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=169&gt;
&lt;P&gt;&lt;B&gt;ThinkTimeThreshold&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=469&gt;
&lt;P&gt;User can configure it through CodedUITestBuilder.exe.config. The default value is 10 seconds.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=169&gt;
&lt;P&gt;&lt;B&gt;ThinkTimeMultiplier&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=469&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;User can change the DefaultValue of 1 by&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#00ff00&gt;Playback.PlaybackSettings.ThinkTimeMultiplier = MULTIPLIERVALUE ;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=169&gt;
&lt;P&gt;&lt;B&gt;ThinkTimeUpperCutOff&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=469&gt;
&lt;P&gt;It can be configured in CodedUITestBuilder.exe.config. Default value is set to 2 minutes.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;ciao&lt;/P&gt;
&lt;P&gt;Rituparna&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9922480" width="1" height="1"&gt;</content><author><name>rituparna</name><uri>http://blogs.msdn.com/members/rituparna.aspx</uri></author><category term="VSTT" scheme="http://blogs.msdn.com/rituparna/archive/tags/VSTT/default.aspx" /></entry><entry><title>Accessibility Issues with WPF Overlay Frame</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/rituparna/archive/2009/11/13/accessibility-issues-with-wpf-overlay-frame.aspx" /><id>http://blogs.msdn.com/rituparna/archive/2009/11/13/accessibility-issues-with-wpf-overlay-frame.aspx</id><published>2009-11-13T15:44:00Z</published><updated>2009-11-13T15:44:00Z</updated><content type="html">&lt;P&gt;Overlay &lt;A href="http://msdn.microsoft.com/en-us/library/system.windows.controls.frame.aspx" mce_href="http://msdn.microsoft.com/en-us/library/system.windows.controls.frame.aspx"&gt;Frames&lt;/A&gt; in WPF are sweet and present endless opportunity to innovate on the Application UI. I have seen some neat usage of it with great result. However there are some accessibility issues ( Wherein the ElementFromPoint returned is wrong )with Frame that renders Record and Play Unusable. However if the Frame is used in correct way then Record and Play will work just fine…&lt;/P&gt;
&lt;P&gt;If the XAML structure is like &lt;/P&gt;
&lt;P&gt;&amp;lt;Grid&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="42,40,0,0" Name="button1" VerticalAlignment="Top" Width="75" /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Frame Height="100" HorizontalAlignment="Left" Margin="12,0,0,0" Name="frame1" VerticalAlignment="Top" Width="200" /&amp;gt; &lt;BR&gt;&amp;lt;/Grid&amp;gt;&lt;/P&gt;
&lt;P&gt;then&amp;nbsp; there is a accessibility issue with the application. If we look at the UI Tree using &lt;A href="http://msdn.microsoft.com/en-us/library/ms727247.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms727247.aspx"&gt;UISpy&lt;/A&gt; and Hover over the Button Control we will see that the element we get at that point is the Frame and not the button. This is clearly wrong as if you send a click it will goto the button.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/rituparna/WindowsLiveWriter/AccessibilityIssueswithWPFOverlayFrame_12A87/Incorrect.png" mce_href="http://blogs.msdn.com/blogfiles/rituparna/WindowsLiveWriter/AccessibilityIssueswithWPFOverlayFrame_12A87/Incorrect.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=Incorrect border=0 alt=Incorrect src="http://blogs.msdn.com/blogfiles/rituparna/WindowsLiveWriter/AccessibilityIssueswithWPFOverlayFrame_12A87/Incorrect_thumb.png" width=475 height=235 mce_src="http://blogs.msdn.com/blogfiles/rituparna/WindowsLiveWriter/AccessibilityIssueswithWPFOverlayFrame_12A87/Incorrect_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;However things are not bleak and black and there is a easy workaround to get this working. If instead of the XAML structure mentioned above the structure is &lt;/P&gt;
&lt;P&gt;&amp;lt;Grid&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Frame Height="100" HorizontalAlignment="Left" Margin="12,0,0,0" Name="frame1" VerticalAlignment="Top" Width="200" /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="42,40,0,0" Name="button1" VerticalAlignment="Top" Width="75" /&amp;gt; &lt;BR&gt;&amp;lt;/Grid&amp;gt;&lt;/P&gt;
&lt;P&gt;then the accessibility is absolutely correct. If we look at the UI Tree using &lt;A href="http://msdn.microsoft.com/en-us/library/ms727247.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms727247.aspx"&gt;UISpy&lt;/A&gt; now we get the following&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/rituparna/WindowsLiveWriter/AccessibilityIssueswithWPFOverlayFrame_12A87/Correct.png" mce_href="http://blogs.msdn.com/blogfiles/rituparna/WindowsLiveWriter/AccessibilityIssueswithWPFOverlayFrame_12A87/Correct.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=Correct border=0 alt=Correct src="http://blogs.msdn.com/blogfiles/rituparna/WindowsLiveWriter/AccessibilityIssueswithWPFOverlayFrame_12A87/Correct_thumb.png" width=482 height=238 mce_src="http://blogs.msdn.com/blogfiles/rituparna/WindowsLiveWriter/AccessibilityIssueswithWPFOverlayFrame_12A87/Correct_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In the above scenario if you try to click on the Button all you will get is click on the FRAME.&amp;nbsp; So if you encounter such issues in your application you should try and see if the above is the case.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9922005" width="1" height="1"&gt;</content><author><name>rituparna</name><uri>http://blogs.msdn.com/members/rituparna.aspx</uri></author><category term="VSTT" scheme="http://blogs.msdn.com/rituparna/archive/tags/VSTT/default.aspx" /></entry><entry><title>Back For Good</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/rituparna/archive/2009/11/07/back-for-good.aspx" /><id>http://blogs.msdn.com/rituparna/archive/2009/11/07/back-for-good.aspx</id><published>2009-11-07T15:24:00Z</published><updated>2009-11-07T15:24:00Z</updated><content type="html">&lt;P&gt;Its been more than 3 years that i started this blog and really it died on me…i started stopped and then stayed stopped.. However with the product i been involved in on the final home run i think now i have lots to blog about.. Hopefully now that i have re-started this blog, it stays that way :)&lt;/P&gt;
&lt;P&gt;All this while me and my teammates have been working on the next release of Visual Studio Team System&amp;nbsp; and BETA2 of VSTS has already hit the web.. You can get more info from &lt;A href="http://msdn.microsoft.com/hi-in/vstudio/dd582936(en-us).aspx" mce_href="http://msdn.microsoft.com/hi-in/vstudio/dd582936(en-us).aspx"&gt;VSTS 2010 BETA2 Home&lt;/A&gt;. We have been working on developing an entire new set of Testing tools to power up the Test offering of VSTS. I have been working in particular on the Record and Play Engine that will power the &lt;A href="http://msdn.microsoft.com/en-us/library/dd286681(VS.100).aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd286681(VS.100).aspx"&gt;Coded UI Test&lt;/A&gt; and&amp;nbsp; the Fast Forward a Manual Test feature that comes with Microsoft Test and lab Manager.&lt;/P&gt;
&lt;P&gt;Every week i plan to post at least 1 Blog detailing Record and Playback (RnP from now on )…Hopefully i will better that..&lt;/P&gt;
&lt;P&gt;Signing Off..&lt;/P&gt;
&lt;P&gt;Rituparna&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9919066" width="1" height="1"&gt;</content><author><name>rituparna</name><uri>http://blogs.msdn.com/members/rituparna.aspx</uri></author></entry><entry><title>Impossible is Nothing !</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/rituparna/archive/2006/03/13/550173.aspx" /><id>http://blogs.msdn.com/rituparna/archive/2006/03/13/550173.aspx</id><published>2006-03-13T07:02:00Z</published><updated>2006-03-13T07:02:00Z</updated><content type="html">&lt;P&gt;Well after seeing the run chase by South-Africa yesterday i am feeling really high. Not because they have ended Australia's run of winning tournaments but because they have really shown that nothing is out of reach if u r willing ...&lt;/P&gt;
&lt;P&gt;Really inspirational..&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=550173" width="1" height="1"&gt;</content><author><name>rituparna</name><uri>http://blogs.msdn.com/members/rituparna.aspx</uri></author></entry><entry><title>Hello World !!!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/rituparna/archive/2006/03/09/547105.aspx" /><id>http://blogs.msdn.com/rituparna/archive/2006/03/09/547105.aspx</id><published>2006-03-09T15:54:00Z</published><updated>2006-03-09T15:54:00Z</updated><content type="html">&lt;P&gt;This is my post and like most programmers and authors do couldnt find a better subject to start my first blog...I sometimes wonder who was the first to write a "Hello World" program. any ideas anyone.&lt;/P&gt;
&lt;P&gt;Well about myself&amp;nbsp; joined Microsoft last month and am working in Developer tools division. &lt;/P&gt;
&lt;P&gt;Through this blog will try to let everyone get a glimpse of the Super Cool stuff we are doing here &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=547105" width="1" height="1"&gt;</content><author><name>rituparna</name><uri>http://blogs.msdn.com/members/rituparna.aspx</uri></author></entry></feed>