<?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">Mathew Aniyan's Blog</title><subtitle type="html">Program Manager for Coded UI Test.</subtitle><id>http://blogs.msdn.com/mathew_aniyan/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mathew_aniyan/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/mathew_aniyan/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2009-02-09T10:18:42Z</updated><entry><title>Generate Code for Coded UI Test [Beta2]</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mathew_aniyan/archive/2009/11/05/generate-code-for-coded-ui-test-beta2.aspx" /><id>http://blogs.msdn.com/mathew_aniyan/archive/2009/11/05/generate-code-for-coded-ui-test-beta2.aspx</id><published>2009-11-05T03:09:03Z</published><updated>2009-11-05T03:09:03Z</updated><content type="html">&lt;p&gt;When a Coded UI Test is created, a set of files are added to the Project. Code can then be generated and added to the Coded UI Test project&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;By using an action recording associated with a test case. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;When a manual tester runs a test case in Microsoft Test Runner and publishes the results to Team Foundation Server, an action recording is associated with a test case. This action recording is an XML file which describes the controls and actions performed on them. Code will be generated corresponding to actions and controls in the action recording.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;2. By using the Coded UI Test Builder&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Using the Coded UI Test Builder, you can &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;a. Record your test steps &lt;/p&gt;    &lt;p&gt;b. Add controls to a UI Control Map and then use these controls to perform test actions.&lt;/p&gt;    &lt;p&gt;c. Add Assertions on UI Controls&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;3. By Hand-coding &lt;/p&gt;  &lt;p&gt;In this case, tool does not generate any code. UITesting API can be used to locate controls on a user interface,&amp;#160; perform actions on them and validate its properties.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;These options are available from the &lt;strong&gt;Generate Code for Coded UI Test&lt;/strong&gt; dialog.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/GenerateCodeforCodedUITestBeta2_143E2/image_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="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/GenerateCodeforCodedUITestBeta2_143E2/image_thumb.png" width="353" height="240" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;They can also be accessed from the context menu in a Coded UI Test method.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/GenerateCodeforCodedUITestBeta2_143E2/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/GenerateCodeforCodedUITestBeta2_143E2/image_thumb_1.png" width="431" height="136" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;These options are also available from the menu under Test.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/GenerateCodeforCodedUITestBeta2_143E2/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/GenerateCodeforCodedUITestBeta2_143E2/image_thumb_2.png" width="425" height="139" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9917715" width="1" height="1"&gt;</content><author><name>Mathew Aniyan</name><uri>http://blogs.msdn.com/members/Mathew+Aniyan.aspx</uri></author></entry><entry><title>Tutorial – Coded UI Test [Beta2]</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mathew_aniyan/archive/2009/11/05/tutorial-coded-ui-test-beta2.aspx" /><id>http://blogs.msdn.com/mathew_aniyan/archive/2009/11/05/tutorial-coded-ui-test-beta2.aspx</id><published>2009-11-05T03:02:44Z</published><updated>2009-11-05T03:02:44Z</updated><content type="html">&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;Overview&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;This tutorial guides you through the creation of a Coded UI Test in Visual Studio 2010. &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;Steps&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;1. In &lt;b  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Visual Studio 2010&lt;/b&gt;, click on &lt;b  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Test&lt;/b&gt; menu and choose &lt;b  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;New Test&lt;/b&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;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_2.png" __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;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_thumb.png" width="675" height="315" __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;/a&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;2. In the &lt;b  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Add New Test&lt;/b&gt; dialog, choose Coded UI Test and click&lt;b  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt; OK&lt;/b&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;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_4.png" __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;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_thumb_1.png" width="393" height="351" __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;/a&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;NOTE:- You can choose to create a Visual C# test project or a Visual Basic test project.&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;3. In the &lt;b  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;New Test Project&lt;/b&gt; dialog, change the Test Project name and click &lt;b  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Create&lt;/b&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;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_6.png" __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;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_thumb_2.png" width="330" height="128" __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;/a&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;4. In the &lt;strong  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Generate Code for Coded UI Test&lt;/strong&gt; dialog, choose &lt;b  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Record actions, edit UI Map or add assertions&lt;/b&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;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_10.png" __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;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_thumb_4.png" width="387" height="263" __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;/a&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;5. The &lt;b  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Coded UI Test Builder&lt;/b&gt; will start up.&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;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_18.png" __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;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_thumb_8.png" width="245" height="79" __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;/a&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;6. Click on &lt;strong  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Start Recording&lt;/strong&gt; button to start the recorder.&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;em  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Note: There is a slight delay when the recorder starts. Ensure that the button changes to the Pause Recording before recording test steps.&lt;/em&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;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_20.png" __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;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_thumb_9.png" width="256" height="89" __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;/a&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;7. Now perform the desired test steps. &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;For the purposes of this tutorial, we are going to test the Add function in Calculator.&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;em  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;NOTE: Coded UI Test works on Web (IE 7 &amp;amp; 8), WinForms &amp;amp; WPF apps. I am choosing Calculator as an application which anyone who is evaluating has access to.&lt;/em&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;The Test steps are&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;a. Launch Calculator&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;b. Click 7&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;c. Click the + sign&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;d. Click 2&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;e. Click = button&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;Note that a text description of actions will be shown in the &lt;strong  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Recorded Actions&lt;/strong&gt; window.The Recorded Actions window can be pinned if you want to see the actions being recorded. It will become semi-transparent when you move focus away from it.&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;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_22.png" __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;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_thumb_10.png" width="327" height="172" __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;/a&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;8. Click on the Generate Code button and change the name of the method to TestAdd.&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;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_24.png" __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;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_thumb_11.png" width="340" height="239" __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;/a&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;Click on the &lt;strong  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Add and Generate&lt;/strong&gt; button to add this method to the project.&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;9. Now drag the cross-hair and drop it on result field in the calculator. A blue rectangle is drawn around the selected control.&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;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_26.png" __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;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_thumb_12.png" width="208" height="297" __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;/a&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;10. Properties of the selected control are shown in the Coded UI Test Builder Window. Right click on the &lt;strong  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Display Text&lt;/strong&gt; field and choose &lt;strong  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Add Assertion&lt;/strong&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;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_28.png" __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;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_thumb_13.png" width="339" height="358" __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;/a&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;11. In the Add assertion for DisplayText dialog, click OK.&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;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_30.png" __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;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_thumb_14.png" width="280" height="183" __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;/a&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;12. Click on the&lt;strong  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt; Generate Code&lt;/strong&gt; Button and change the Method Name to AssertSum.&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;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_32.png" __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;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_thumb_15.png" width="312" height="169" __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;/a&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;Click on the &lt;strong  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Add and Generate&lt;/strong&gt; button to add this method to the project. &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;/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;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialHowtocreateaCodedUITest_746E/clip_image028_2.gif" __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;/a&gt;&lt;/p&gt; 16. Close the &lt;b  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Coded UI Test Builder&lt;/b&gt; by clicking on the &lt;b  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;X&lt;/b&gt; button.  &lt;p&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;17. The Coded UI Test is now opened within the Visual Studio IDE.&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;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_34.png" __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;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_thumb_16.png" width="585" height="194" __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;/a&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;NOTE the following characteristics about the generated code.&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;a. The CodedUITest1 class is tagged with a Coded UI Test attribute.&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;b. The CodedUITetMethod1 method is tagged with a Test Method attribute.&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;c. in the CodedUITestMethod1, the methods we created are invoked.&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;&amp;#160;&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;18. Note the following in the Solution Explorer.&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;a. All required references for Coded UI Test are added automatically.&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;b. 5 files are added to the Test Project&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;i. CodedUITest1.cs - main Coded UI Test class, Test Methods and Assertions.&lt;/p&gt; &lt;/blockquote&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;ii. UIMap.uitest – XML Representation of the UI Map (a container of UI Controls) and the recorded actions.&lt;/p&gt; &lt;/blockquote&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;iii. UIMap.Designer.cs - Code generated for the UIMap&lt;/p&gt; &lt;/blockquote&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;iv. UIMap.cs – empty file where UIMap customizations may be added.&lt;/p&gt; &lt;/blockquote&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;iv. UserControls.cs - Specialized classes representing various UI Controls referenced in the Test.&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;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_36.png" __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;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_thumb_17.png" width="224" height="415" __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;/a&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;19. Right-click inside the Coded UI Test Method and choose &lt;b  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Run Tests&lt;/b&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;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_38.png" __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;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_thumb_18.png" width="428" height="367" __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;/a&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;20. The code is compiled and then the test is run.&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;21. All actions recorded earlier will now be played back.&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;22. After the test run is completed, right-click on the Test Run and choose &lt;strong&gt;View Test Results Details&lt;/strong&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;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_40.png" __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;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_thumb_19.png" width="705" height="192" __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;/a&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;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_42.png" __vsttTracked="1"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialCodedUITestBeta2_13A8E/image_thumb_20.png" width="394" height="167" __vsttTracked="1" /&gt;&lt;/a&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;&lt;b  __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;i  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Congratulations. You have successfully created and run a Coded UI Test.&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9917713" width="1" height="1"&gt;</content><author><name>Mathew Aniyan</name><uri>http://blogs.msdn.com/members/Mathew+Aniyan.aspx</uri></author></entry><entry><title>Visual Studio 2010 Beta2 is now available</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mathew_aniyan/archive/2009/10/21/visual-studio-2010-beta2-is-now-available.aspx" /><id>http://blogs.msdn.com/mathew_aniyan/archive/2009/10/21/visual-studio-2010-beta2-is-now-available.aspx</id><published>2009-10-21T03:42:00Z</published><updated>2009-10-21T03:42:00Z</updated><content type="html">&lt;p&gt;You can download it &lt;a href="http://msdn.microsoft.com/hi-in/vstudio/dd582936(en-us).aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;See the official announcements.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/somasegar/archive/2009/10/19/announcing-visual-studio-2010-and-net-fx-4-beta-2.aspx" href="http://blogs.msdn.com/somasegar/archive/2009/10/19/announcing-visual-studio-2010-and-net-fx-4-beta-2.aspx"&gt;http://blogs.msdn.com/somasegar/archive/2009/10/19/announcing-visual-studio-2010-and-net-fx-4-beta-2.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/jasonz/archive/2009/10/19/announcing-vs2010-net-framework-beta-2.aspx" href="http://blogs.msdn.com/jasonz/archive/2009/10/19/announcing-vs2010-net-framework-beta-2.aspx"&gt;http://blogs.msdn.com/jasonz/archive/2009/10/19/announcing-vs2010-net-framework-beta-2.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/amit_chatterjee/archive/2009/10/20/visual-studio-2010-beta-2-is-now-available.aspx" href="http://blogs.msdn.com/amit_chatterjee/archive/2009/10/20/visual-studio-2010-beta-2-is-now-available.aspx"&gt;http://blogs.msdn.com/amit_chatterjee/archive/2009/10/20/visual-studio-2010-beta-2-is-now-available.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;NOTE: &lt;b&gt;Beta 2 is also comes with a “go-live” license, which implies that you can deploy the tools for your “live” projects in production (view the license agreements for more details). This is a really a great opportunity for you to get going with this Visual Studio release!&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;My favorite feature is &lt;a href="http://blogs.msdn.com/jasonz/archive/2009/10/02/announcing-tfs-basic.aspx"&gt;TFS Basic&lt;/a&gt;. I believe this removes the major pain-points in adopting TFS &amp;amp; VSTS 2010 for small teams. I now have it running on my laptop. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The key changes in Coded UI Test are&lt;/p&gt;  &lt;p&gt;1. The code generation (from recorded actions, control in UI Control Map, assertions) have been significantly modified. You will notice that code is better organized now. It is automatically parameterized allowing you to data-drive coded ui test easily.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/VisualStudio2010Beta2isnowavailable_8147/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/VisualStudio2010Beta2isnowavailable_8147/image_thumb_4.png" width="194" height="244" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/VisualStudio2010Beta2isnowavailable_8147/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/VisualStudio2010Beta2isnowavailable_8147/image_thumb_5.png" width="561" height="270" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;2. The user interface for Coded UI Test Builder has been enhanced significantly based on usability feedback.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/VisualStudio2010Beta2isnowavailable_8147/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/VisualStudio2010Beta2isnowavailable_8147/image_thumb.png" width="228" height="66" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/VisualStudio2010Beta2isnowavailable_8147/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/VisualStudio2010Beta2isnowavailable_8147/image_thumb_1.png" width="297" height="152" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/VisualStudio2010Beta2isnowavailable_8147/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/VisualStudio2010Beta2isnowavailable_8147/image_thumb_2.png" width="291" height="148" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/VisualStudio2010Beta2isnowavailable_8147/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/VisualStudio2010Beta2isnowavailable_8147/image_thumb_3.png" width="386" height="230" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;3. Support for WPF controls is much richer now.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9910325" width="1" height="1"&gt;</content><author><name>Mathew Aniyan</name><uri>http://blogs.msdn.com/members/Mathew+Aniyan.aspx</uri></author></entry><entry><title>Configuring Playback in Visual Studio 2010</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mathew_aniyan/archive/2009/08/10/configuring-playback-in-vstt-2010.aspx" /><id>http://blogs.msdn.com/mathew_aniyan/archive/2009/08/10/configuring-playback-in-vstt-2010.aspx</id><published>2009-08-10T15:03:00Z</published><updated>2009-08-10T15:03:00Z</updated><content type="html">&lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;In a previous post, Abhishek had talked about the &lt;a title="Introduction to Record and Playback Engine in VSTT 2010" href="http://blogs.msdn.com/vstsqualitytools/archive/2009/06/21/introduction-to-record-and-playback-engine-in-vstt-2010.aspx" insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;Record and Playback Engine in VSTT 2010&lt;/a&gt;.&amp;#160; The Coded UI Test feature in Visual Studio 2010 also uses this engine to playback UI actions.&amp;#160; In this post, i will describe the various settings for Playback and how you can modify them to improve the resilience of your Coded UI Tests. Playback is configured by modifying the fields in Playback.PlaybackSettings class.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;1. Continue on Error &lt;/h3&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;When you are recording a Coded UI test on a login page, the “Auto Complete passwords” popup may have appeared.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/ConfiguringPlayback_DF3D/image_2.png" insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/ConfiguringPlayback_DF3D/image_thumb.png" width="244" height="132" insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;When you playback actions on the login page, this dialog will *not* come up. So the action that you performed will cause an error. To improve test resilience, the Record &amp;amp; Playback engine automatically marks this action as “Continue on Error”.&amp;#160; When the test is being played back and the error occurs, the engine will continue on to the next action. Specific actions (IE popups, implicit Hovers) when performed by the user are tagged by the engine as “Continue on Error”. &lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160;&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;In Coded UI Test, you have the flexibility to turn on “Continue on Error” for any action. This is done by the following code snippet.&lt;/p&gt;  &lt;blockquote insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;   &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;Playback.PlaybackSettings.ContinueOnError = true;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;Remember to turn this flag to false after the section where there are potential failures.&amp;#160; Otherwise the engine will ignore all errors and your test will return incorrect results. By default this flag is set to false in Coded UI Test.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160;&lt;/p&gt;  &lt;h3 insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;2. Match Exact hierarchy &lt;/h3&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;The Record and Playback Engine uses a hierarchical structure to locate controls.&amp;#160; The Yes button in the dialog above is identified as&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/ConfiguringPlayback_DF3D/image_4.png" insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/ConfiguringPlayback_DF3D/image_thumb_1.png" width="216" height="53" insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;To locate YesButton during playback, the engine will search for AutoCompletePasswordWindow, then for YesWindow in it, and finally YesButton in YesWindow. &lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;Sometimes application may change so that the hierarchy gets modified. Record and Playback engine attempts to locate the control, in such cases, by skipping the intermediate elements in the hierarchy. Thus in the example, if it is unable to locate YesWindow, it will search for YesButton directly under AutoCompletePasswordWindow and all its children.&amp;#160; This behavior can be controlled by the “Match Exact Hierarchy” setting. This is done by the following code snippet.&lt;/p&gt;  &lt;blockquote insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;   &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;Playback.PlaybackSettings.MatchExactHierarchy = true;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;If the flag is set to true, every control is the hierarchy will be searched in order. Any failure will result in failure to locate the control.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;By default, this flag is set to false. Note that this may sometimes lead to false positives i.e an unintended control may be identified. In such cases, you will have to change this setting.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160;&lt;/p&gt;  &lt;h3 insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;3. Search in minimized windows&lt;/h3&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;The Record and Playback Engine searches for controls even inside minimized windows. The minimized window is restored and actions performed on the control inside it. &lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;You have the ability to turn this feature off i.e. prevent the engine from looking at minimized windows.&amp;#160; This is done by the following code snippet.&lt;/p&gt;  &lt;blockquote insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;   &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;Playback.PlaybackSettings.SearchInMinimizedWindows = false;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3 insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160;&lt;/h3&gt;  &lt;h3 insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;4. Smart Match&lt;/h3&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;The Record and Playback Engine identifies controls on the user interface by its search properties.&amp;#160; e.g:- The standard calculator window is identified as below.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160;&lt;/p&gt;  &lt;blockquote insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;   &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;SearchProperties[WinProperties.Window.ControlType] = ControlType.Window.Name;&lt;/p&gt;    &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;SearchProperties[WinProperties.Window.Name] = &amp;quot;Calculator&amp;quot;;      &lt;br insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1" /&gt;SearchProperties[WinProperties.Window.ClassName] = &amp;quot;CalcFrame&amp;quot;;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;Some of the search properties may change over time. Record and Playback engine uses a Smart Match algorithm to identify controls if they cannot be located using the exact properties. The smart match algorithm uses heuristics and attempts to locate the control using variations on the search properties. &lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;You can control when Smart Match should be applied. By default Smart Match is applied for Top Level Windows and all controls. You can turn off Smart match using the following code snippet.&lt;/p&gt;  &lt;blockquote insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;   &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;Playback.PlaybackSettings.SmartMatchOptions = SmartMatchOptions.None;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;The default settings (Smart match top level windows and controls) is optimal for a resilient coded UI test. But sometimes it may lead to false positives and then you will have to modify this setting.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160;&lt;/p&gt;  &lt;h3 insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;5. Wait For Ready Level&lt;/h3&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;The Record and Playback engine ensures that each UI control is ready to be acted upon before performing any action.&amp;#160; The smart “Wait For Ready”&amp;#160; algorithm significantly improves the resilience of your Coded UI Test.&amp;#160; Now you don’t need to add the annoying Sleep statements whenever a UI Control is busy and not ready to receive input. By default, the engine checks the UI Thread (foreground thread) to determine if a control is ready.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160;&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;You can turn off Wait For Ready completely by the following code snippet.&lt;/p&gt;  &lt;blockquote insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;   &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.Disabled;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160;&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;Alternately you may want to wait for all threads including background threads. This may be required if the application is making asynchronous calls that results in UI changes.&amp;#160; You can do this by the following code snippet.&lt;/p&gt;  &lt;blockquote insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;   &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.AllThreads;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;NOTE that this setting will slow down the engine and should be carefully used.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160;&lt;/p&gt;  &lt;h3 insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;6.&amp;#160; Set Property Verification&lt;/h3&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;After setting the property of any UI control, the record and playback engine performs a verification pass to ensure that the set succeeded and the UI control now has the value assigned to it. &lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160;&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;e.g:-&amp;#160; You type the text “MSFT” in the search edit box in Bing. After playing back this action, the engine reads the text property of the search edit box to ensure that this set has succeeded.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160;&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;In certain applications, the set property may trigger off some business logic which then changes that property itself. In such cases, the verification fails. If your application exhibits such a behavior you can turn of the set property verification using the following code snippet.&lt;/p&gt;  &lt;blockquote insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;   &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;Playback.PlaybackSettings.SkipSetPropertyVerification = true;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160;&lt;/p&gt;  &lt;h3 insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;7.&amp;#160; Fail Fast&lt;/h3&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;The Record and playback engine’s search algorithm has a fail fast logic. i.e. If the engine is reasonably confident that the search will not succeed, it will return with a failure. This ensures that you are not waiting for a non-existent control for 2 mins (the default search timeout).&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160;&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;Sometimes you may want to disable fail fast. Typically, you do this along with increasing your search timeout. You are confidant that the UI control will become available within a specified duration&amp;#160; (which is longer than the search timeout) and you want the engine to wait for that duration.&amp;#160; You can do this by using the following code snippet.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;Playback.PlaybackSettings.ShouldSearchFailFast = false;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3 insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160;&lt;/h3&gt;  &lt;h3 insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;8. Misc&lt;/h3&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;Other playback settings which can be modified include&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;a.&amp;#160; Delay Between Actions: How long should the engine wait before performing two successive actions? By default, 100 ms.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;b.&amp;#160; Search timeout – How long should the engine attempt to locate a control? By default, 2 mins.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;c.&amp;#160; Wait for Ready Timeout – How long should the engine continue waiting for a control to be ready?&amp;#160; By Default, 60s&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;d. Think Time multiplier – For slow machines, assign a high multiple so that the recorded think time is scaled up to handle slower application responses.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;e. Send Keys As ScanCode - By default, the engine sends keys to the application under test as Unicode. But in certain cases, it may need to send keys as scancode. Sending Unicode to such applications will result in failure&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;f. Encryption Key Location – When recording password fields, the record and playback engine uses a hard-coded key for encrypting the value.&amp;#160; A custom encryption key can be set using the SetEncryptionKeyLocation()&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;g. IME Languages List – These are the languages&amp;#160; for which IME is enabled and IME ends composition on pressing the {ENTER} key.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160;&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;NOTE: The Test runner tool in VSTT 2010 also uses the Record and Playback Engine. You can configure the playback settings described above in Test runner tool from &lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;a. mtlm.exe.config – located in %VSINSTALLDIR%\Common7\IDE&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;b. Microsoft Test &amp;amp; Lab Manager, navigate to Lab Center –&amp;gt; Test Settings , open the applicable Test Settings, select Data and Diagnostics section and click on the Configure button next to Action Log and Action Recording. In the Advanced section of the dialog, some of the Playback settings described above may be configured.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The managed reference for PlaybackSettings class is &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.uitesting.playbacksettings(VS.100).aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9869570" width="1" height="1"&gt;</content><author><name>Mathew Aniyan</name><uri>http://blogs.msdn.com/members/Mathew+Aniyan.aspx</uri></author></entry><entry><title>Interesting articles on Automated Testing</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mathew_aniyan/archive/2009/06/19/interesting-articles-on-automated-testing.aspx" /><id>http://blogs.msdn.com/mathew_aniyan/archive/2009/06/19/interesting-articles-on-automated-testing.aspx</id><published>2009-06-19T06:09:03Z</published><updated>2009-06-19T06:09:03Z</updated><content type="html">&lt;p&gt;Ed has published some interesting articles on automated Testing.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/edglas/archive/2008/08/15/so-you-want-to-automate-your-test-cases.aspx" href="http://blogs.msdn.com/edglas/archive/2008/08/15/so-you-want-to-automate-your-test-cases.aspx"&gt;http://blogs.msdn.com/edglas/archive/2008/08/15/so-you-want-to-automate-your-test-cases.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/edglas/archive/2009/06/13/increasing-the-roi-of-our-automation.aspx" href="http://blogs.msdn.com/edglas/archive/2009/06/13/increasing-the-roi-of-our-automation.aspx"&gt;http://blogs.msdn.com/edglas/archive/2009/06/13/increasing-the-roi-of-our-automation.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Have a read.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9778583" width="1" height="1"&gt;</content><author><name>Mathew Aniyan</name><uri>http://blogs.msdn.com/members/Mathew+Aniyan.aspx</uri></author></entry><entry><title>Coded UI Test from Microsoft Test &amp; Lab Manager</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mathew_aniyan/archive/2009/05/26/coded-ui-test-from-microsoft-test-lab-manager.aspx" /><id>http://blogs.msdn.com/mathew_aniyan/archive/2009/05/26/coded-ui-test-from-microsoft-test-lab-manager.aspx</id><published>2009-05-26T13:16:46Z</published><updated>2009-05-26T13:16:46Z</updated><content type="html">&lt;p&gt;After you have created a Coded UI Test and added it to a Team Build, you can run the test from a Microsoft Test &amp;amp; Lab Manager (MTLM). In this post, i will describe the steps to enable this.&lt;/p&gt;  &lt;p&gt;NOTE: &lt;i&gt;When run from MTLM, coded UI tests must be run using an &lt;a href="http://msdn.microsoft.com/en-us/library/dd293551(VS.100).aspx"&gt;environment&lt;/a&gt; like any other automated tests. There is no option to run coded UI test locally unless your test agent and controller are installed locally.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;Step 0: Run the Test agent from the command line.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;a. On the Visual Studio Team Test Agent box,&amp;#160; Open the Services Management Console.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_thumb_2.png" width="360" height="190" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;b. Stop the Visual Studio Team Test Agent.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_12.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_thumb_5.png" width="663" height="402" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;c.&amp;#160; Run the Visual Studio Team Test Agent from the command line.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_10.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_thumb_4.png" width="895" height="209" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;Step 1: Associate the Coded UI Test to the Test Case.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;a. In Visual Studio, Open the Coded UI Test Project.&lt;/p&gt;  &lt;p&gt;b. Open the Test Case from Team Explorer.&lt;/p&gt;  &lt;p&gt;c. Navigate to the Associated Automation tab.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_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="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_thumb.png" width="702" height="264" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;d. Click on … button next to Automated Test Name &amp;amp; Choose the&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_thumb_1.png" width="302" height="230" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;e. Choose the CodedUITestMethod and save the test Case.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;Step 2: Setup the environment for running a Coded UI Test.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;a. In Microsoft Test &amp;amp; Lab Manager, Navigate to the Lab Center and choose Controller tab. Add a new Controller.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_14.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_thumb_6.png" width="484" height="272" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Save &amp;amp; Close the Test Agent Controllers activity.&lt;/p&gt;  &lt;p&gt;b. Navigate to the Environment tab and create a new Physical Environment.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_16.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_thumb_7.png" width="486" height="364" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Add the Desktop Client Role.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_18.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_thumb_8.png" width="477" height="366" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Assign the available machine to this role.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_20.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_thumb_9.png" width="478" height="359" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Finish the activity.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;c. Navigate to the Test Settings tab and create a new Test Settings.&lt;/p&gt;  &lt;p&gt;Choose to Run tests using an environment.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_24.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_thumb_11.png" width="487" height="366" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Associate the environment created in the previous step.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_22.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_thumb_10.png" width="506" height="380" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Finish the activity.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;d. Navigate to the Organize Center &amp;amp; choose Test Plans tab.&lt;/p&gt;  &lt;p&gt;Create a new Test Plan and set the Automated Test Settings to the Test Settings created in the previous step.&lt;/p&gt;  &lt;p&gt;Also choose the Build Candidates and assign a Build to the plan.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_28.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_thumb_13.png" width="588" height="433" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;NOTE: the Build Quality can be set for a build by opening it in Visual Studio Team Explorer.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_32.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_thumb_15.png" width="455" height="120" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Save and close the Test Plan.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;e.&amp;#160; Navigate to the Testing Center and click on Plan activity. &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Add the Test Case (seen in Step 1) to the new Test Plan.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_34.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_thumb_16.png" width="499" height="373" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Step 3: Run the Coded UI Test from Microsoft Test &amp;amp; Lab Manager&lt;/p&gt;  &lt;p&gt;Navigate to the Testing Center &amp;amp; choose Test tab.&lt;/p&gt;  &lt;p&gt;Right click on the Test Case and choose Run.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_36.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_thumb_17.png" width="562" height="422" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The status of the Test Run is shown in MTLM.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_38.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestfromMicrosoftTestLabManager_DD2F/image_thumb_18.png" width="617" height="385" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The Coded UI Test will be run on the specified environment.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9641277" width="1" height="1"&gt;</content><author><name>Mathew Aniyan</name><uri>http://blogs.msdn.com/members/Mathew+Aniyan.aspx</uri></author></entry><entry><title>Coded UI Test in a Team Build</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mathew_aniyan/archive/2009/05/26/coded-ui-test-in-a-team-build.aspx" /><id>http://blogs.msdn.com/mathew_aniyan/archive/2009/05/26/coded-ui-test-in-a-team-build.aspx</id><published>2009-05-26T10:28:32Z</published><updated>2009-05-26T10:28:32Z</updated><content type="html">&lt;p&gt;In this post, i will describe the steps required to add a Coded UI Test in a Build Definition. &lt;/p&gt;  &lt;p&gt;Pre-requisites:-&amp;#160; &lt;strong&gt;&lt;em&gt;An existing Coded UI Test Project, A Connection to Team Foundation Server&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&lt;em&gt;0. On the Build Server, run the Team Build Service Host from the command line.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;em&gt;0.a. Open the services management console.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_18.png"&gt;&lt;font color="#333333"&gt;&lt;em&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_thumb_8.png" width="244" height="127" /&gt;&lt;/em&gt;&lt;/font&gt;&lt;/a&gt;&lt;strong&gt;&lt;em&gt; &lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;em&gt;0.b. Stop the Visual Studio Team Foundation Build Service Host.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_20.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_thumb_9.png" width="587" height="368" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&lt;em&gt;0.c. Open a command window and start the Team Build Service Host.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_22.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_thumb_10.png" width="851" height="125" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;1. In the Solution Explorer, right click on the Coded UI Test Solution and choose &lt;strong&gt;&lt;font color="#0000ff"&gt;Add Solution to Source Control&lt;/font&gt;&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_thumb.png" width="310" height="358" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;2. Choose the folder in which you want to add this solution.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_thumb_1.png" width="380" height="392" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;3. In the Pending Changes window, add a Comment and check in the code.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_thumb_2.png" width="686" height="204" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;4. Open Team Explorer and Create a New Build Definition&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_thumb_3.png" width="320" height="375" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;5. Specify a name for the Build.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_thumb_4.png" width="282" height="211" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;6.&amp;#160; Leave the Trigger &amp;amp; Workspace tabs unchanged. [The default values are sufficient]&lt;/p&gt;  &lt;p&gt;7. In the Build defaults tab, specify the Test Controller &amp;amp; a drop folder for the build.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_thumb_5.png" width="566" height="181" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;8. In the Process tab, specify Projects to Build (add the project that you checked in in step 3), Test Assembly Filespec (*test*.dll) &amp;amp; Test Metadata files (choose the vsmdi file that you checked in in Step 3).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_thumb_6.png" width="849" height="544" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;9. Save the Build Definition and Queue a new build.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_16.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_thumb_7.png" width="326" height="334" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;10. In the Build Explorer, you can see the status of the Queued Builds. Double click on a Build to see its log.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_24.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_thumb_11.png" width="908" height="214" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In the detailed log, you can see the Coded UI Test getting compiled and then run.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_26.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_thumb_12.png" width="656" height="455" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_28.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITestinaTeamBuild_B5FE/image_thumb_13.png" width="531" height="461" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9641154" width="1" height="1"&gt;</content><author><name>Mathew Aniyan</name><uri>http://blogs.msdn.com/members/Mathew+Aniyan.aspx</uri></author><category term="VSTS2010" scheme="http://blogs.msdn.com/mathew_aniyan/archive/tags/VSTS2010/default.aspx" /></entry><entry><title>No more UI regressions</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mathew_aniyan/archive/2009/05/26/no-more-ui-regressions.aspx" /><id>http://blogs.msdn.com/mathew_aniyan/archive/2009/05/26/no-more-ui-regressions.aspx</id><published>2009-05-26T09:08:46Z</published><updated>2009-05-26T09:08:46Z</updated><content type="html">&lt;p&gt;During the course of a Application Development Lifecycle,&amp;#160; software goes through many iterations. Frequently, a change in one part of the software impacts another part and the developer remains blissfully unaware. Regression testing seeks to verify that existing functionality is not impacted by new changes.&amp;#160;&amp;#160; Automated Regression testing is a key tool for both the developer and the tester to ensure Product Quality. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Visual Studio Team System 2010 introduces a new test type – Coded UI Test, which enables you to create automated UI tests which can then be added to a regression test suite. Coded UI Tests may be run as part of a Build Verification Test suite, thus giving the developer immediate feedback on any UI regressions. The developer can run these UI Tests before his checkin and ensure that there are &lt;strong&gt;&lt;font color="#0000ff"&gt;No more UI regressions&lt;/font&gt;&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;A Coded UI Test can be created very easily with the tooling support provided in VSTS 2010.&amp;#160; See links below for step by step guidance.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd286608(VS.100).aspx"&gt;Record actions&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd286671(VS.100).aspx"&gt;Locate UI controls add them to a UI Control Map&lt;/a&gt; and &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd286651(VS.100).aspx"&gt;Add validations on controls&lt;/a&gt;. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Generally initial phases in UI Testing is manual. Visual Studio Team System 2010 allows you to reuse the test artifacts created by manual tester. You can &lt;a href="http://msdn.microsoft.com/en-us/library/dd286652(VS.100).aspx"&gt;create a Coded UI Test from an action recording&lt;/a&gt; created by the manual tester. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Coded UI Tests may be created in either Visual Basic or C#.&amp;#160; Multiple platforms can be tested with Coded UI Test. The platform support matrix is shown below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/NomoreUIregressions_A39D/image_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="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/NomoreUIregressions_A39D/image_thumb.png" width="527" height="396" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Once a Coded UI Test is checked into source Control, you can easily add it into a Build Definition. The Build Definition below compiles a Coded UI Test Project and then runs its whenever a build is executed.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/NomoreUIregressions_A39D/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/NomoreUIregressions_A39D/image_thumb_1.png" width="725" height="455" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;It is possible to &lt;a href="http://msdn.microsoft.com/en-us/library/dd380741(VS.100).aspx"&gt;associate a Coded UI Test to a Test Case&lt;/a&gt;. You can then run this test case from Microsoft Test &amp;amp; Lab Manager.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/NomoreUIregressions_A39D/image_8.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/NomoreUIregressions_A39D/image_thumb_3.png" width="919" height="328" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Coded UI Tests may be &lt;a href="http://msdn.microsoft.com/en-us/library/ms182487.aspx"&gt;run from the command line&lt;/a&gt; also.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Summary:&lt;/p&gt;  &lt;p&gt;Visual Studio Team System 2010 allows you to eliminate UI regressions by providing&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;rich tooling and a powerful API for creating a Coded UI Tests. &lt;/li&gt;    &lt;li&gt;multiple easy modes of running Coded UI Tests. &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9641127" width="1" height="1"&gt;</content><author><name>Mathew Aniyan</name><uri>http://blogs.msdn.com/members/Mathew+Aniyan.aspx</uri></author><category term="VSTS2010" scheme="http://blogs.msdn.com/mathew_aniyan/archive/tags/VSTS2010/default.aspx" /></entry><entry><title>TechEd India 2009</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mathew_aniyan/archive/2009/05/15/teched-india-2009.aspx" /><id>http://blogs.msdn.com/mathew_aniyan/archive/2009/05/15/teched-india-2009.aspx</id><published>2009-05-15T13:58:05Z</published><updated>2009-05-15T13:58:05Z</updated><content type="html">&lt;p&gt;I was at &lt;a href="http://www.microsoft.com/india/teched2009/default.aspx"&gt;TechEd India 2009&lt;/a&gt; for the past two days. There were some really interesting talks.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/amit_chatterjee"&gt;Amit Chatterjee&lt;/a&gt; did a talk on Visual Studio Team System. There is a segment in his demo for “No more regressions” where he showed Coded UI Test in action.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I also attended talks on “New features in WPF 3.5” and “Performance Optimizations in .NET”. Some really cool features in WPF. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We had a Technology Tent for Visual Studio Team Test.&amp;#160; There were demos running continuously from 9AM – 1PM.&amp;#160; There were a lot of participants keenly interested and excited about the new features coming out in VSTS 2010. Everyone is anxiously waiting for Beta1.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Here is the Beta 1 landing page for &lt;b&gt;Visual Studio Team System: &lt;/b&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=151798"&gt;http://go.microsoft.com/fwlink/?LinkId=151798&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9618320" width="1" height="1"&gt;</content><author><name>Mathew Aniyan</name><uri>http://blogs.msdn.com/members/Mathew+Aniyan.aspx</uri></author><category term="VSTS2010" scheme="http://blogs.msdn.com/mathew_aniyan/archive/tags/VSTS2010/default.aspx" /></entry><entry><title>Coded UI Test on 10-4</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mathew_aniyan/archive/2009/05/08/coded-ui-test-on-10-4.aspx" /><id>http://blogs.msdn.com/mathew_aniyan/archive/2009/05/08/coded-ui-test-on-10-4.aspx</id><published>2009-05-08T11:58:29Z</published><updated>2009-05-08T11:58:29Z</updated><content type="html">&lt;p&gt;MSDN Channel 9’s 10-4 program now has an episode on Coded UI test.&lt;/p&gt;  &lt;p&gt;Watch it at&lt;strong&gt; &lt;/strong&gt;&lt;a href="http://channel9.msdn.com/shows/10-4/"&gt;http://channel9.msdn.com/shows/10-4/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Excerpt&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://channel9.msdn.com/shows/10-4/10-4-Episode-18-Functional-UI-Testing/"&gt;Episode 18: Functional UI Testing&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;In this 18&lt;sup&gt;th&lt;/sup&gt; episode of 10-4 we look at a new type of test coming in Visual Studio Team System 2010 known as the coded UI test. Coded UI tests can be created to automatically navigate through your application's UI, which in turn can be used to verify that the paths your users might take through your application are working properly. You can also add validation logic along the way to verify the properties of objects within the UI. Much like unit tests can quickly surface regressions on a method or function level, coded UI tests can bring the same level of rapid automated testing capabilities to the UI layer.&lt;/p&gt;  &lt;p&gt;This demo is based on an early build of Visual Studio Team System 2010 Beta 1.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9596345" width="1" height="1"&gt;</content><author><name>Mathew Aniyan</name><uri>http://blogs.msdn.com/members/Mathew+Aniyan.aspx</uri></author><category term="VSTS2010" scheme="http://blogs.msdn.com/mathew_aniyan/archive/tags/VSTS2010/default.aspx" /></entry><entry><title>More on Data Driving Coded UI Tests</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mathew_aniyan/archive/2009/04/16/more-on-data-driving-coded-ui-tests.aspx" /><id>http://blogs.msdn.com/mathew_aniyan/archive/2009/04/16/more-on-data-driving-coded-ui-tests.aspx</id><published>2009-04-16T13:11:47Z</published><updated>2009-04-16T13:11:47Z</updated><content type="html">&lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;In the previous post, i described how we use a CSV file to data drive a Coded UI Test. The functionality is achieved by adding the following Data Source attribute to Coded UI Test.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&lt;font color="#0080c0" insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;[DataSource(&amp;quot;Microsoft.VisualStudio.TestTools.DataSource.CSV&amp;quot;, &amp;quot;|DataDirectory|\\data.csv&amp;quot;, &amp;quot;data#csv&amp;quot;, DataAccessMethod.Sequential), DeploymentItem(&amp;quot;data.csv&amp;quot;), TestMethod]&lt;/font&gt;&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;The Data Source Wizard helps you to construct this attribute and insert it into the code. &lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160;&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;For using a Excel file as the data source, use the following Data Source attribute.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&lt;font color="#0080c0" insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;DataSource(&amp;quot;System.Data.Odbc&amp;quot;, &amp;quot;Dsn=Excel Files;Driver={Microsoft Excel Driver (*.xls)};dbq=|DataDirectory|\\Data.xls;defaultdir=.;driverid=790;maxbuffersize=2048;pagetimeout=5;readonly=true&amp;quot;, &amp;quot;Sheet1$&amp;quot;, DataAccessMethod.Sequential), TestMethod]&lt;/font&gt;&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;NOTE: if you are using the Data Source Wizard, you may have to modify the generated attribute definition to match what is shown in the&amp;#160; line above.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;IN the above Data Source Attribute, you can change the file to a Excel 2007 file (.xlsx) and it will work.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160;&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;If you hit some issues while data driving, I recommend &lt;a href="http://msdn.microsoft.com/en-us/library/ms404700(VS.80).aspx" insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;Troubleshooting Data-Driven Unit Tests&lt;/a&gt;. The tips on this page helped me to fix most of the issues i encountered.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160;&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;For Data driving using an XML file, the data source attribute created by the Wizard will work. A sample XML content is shown below.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;   &lt;br insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1" /&gt;&amp;lt;Iterations&amp;gt;&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;   &lt;br insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1" /&gt;&amp;#160; &amp;lt;Iteration&amp;gt;    &lt;br insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1" /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Add1&amp;gt;6&amp;lt;/Add1&amp;gt;    &lt;br insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1" /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Add2&amp;gt;3&amp;lt;/Add2&amp;gt;    &lt;br insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1" /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Sum&amp;gt;9&amp;lt;/Sum&amp;gt;    &lt;br insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1" /&gt;&amp;#160; &amp;lt;/Iteration&amp;gt;    &lt;br insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1" /&gt;&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160; &amp;lt;Iteration&amp;gt;   &lt;br insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1" /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Add1&amp;gt;5&amp;lt;/Add1&amp;gt;    &lt;br insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1" /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Add2&amp;gt;4&amp;lt;/Add2&amp;gt;    &lt;br insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1" /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Sum&amp;gt;9&amp;lt;/Sum&amp;gt;    &lt;br insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1" /&gt;&amp;#160; &amp;lt;/Iteration&amp;gt;    &lt;br insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1" /&gt;&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;lt;/Iterations&amp;gt;&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;I have two iterations in this XML.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160;&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&lt;strong insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&lt;u insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;Data driving Test Cases authored in Camano&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;When a test case is authored in Camano, we can data-drive a step by prefixing the parameter with the ampersand sign (@)&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;See below screenshot of a&amp;#160; data-driven Test Case authored in Camano. Note that @Zip, @FoodType , @Meal, @Within &amp;amp; @Restaurant are used to indicate data driven parameter values. The actual values are entered in the Parameter Values table below.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/MoreonDataDrivingCodedUITests_DCAA/image_4.png" insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/MoreonDataDrivingCodedUITests_DCAA/image_thumb_1.png" width="690" height="389" insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;In this case the Data is stored in the Test Case itself.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160;&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;When a Coded UI Test is generated from this Test Case, the following Data Source Attribute is added.&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;[DataSource(&amp;quot;Microsoft.VisualStudio.TestTools.DataSource.TestCase&amp;quot;, &amp;quot;&lt;a href="http://vlm13261329:8080/tfs/DefaultCollection;Agile&amp;quot;" insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;http://vlm13261329:8080/tfs/DefaultCollection;Agile&amp;quot;&lt;/a&gt;, &amp;quot;30&amp;quot;, DataAccessMethod.Sequential), TestMethod]&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;This is a new Data Source we have added in Visual Studio 2010. It takes the following arguments&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;1. &lt;a href="http://vlm13261329:8080/tfs/DefaultCollection;Agile" __vsttTracked="1"&gt;http://vlm13261329:8080/tfs/DefaultCollection;Agile&lt;/a&gt; – The Team Foundation Server &amp;amp; the Team Project&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;2. 30 – the Id of the Test Case&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;&amp;#160;&lt;/p&gt;  &lt;p insertadjacenthtml="function(loc, code)&amp;#13;&amp;#10;                    {&amp;#13;&amp;#10;                        // HTML Content changing..&amp;#13;&amp;#10;                        _baseInsertFunction(loc, code);&amp;#13;&amp;#10;&amp;#13;&amp;#10;                        try&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                            vsttTrackHover.NodeAddition();&amp;#13;&amp;#10;                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                        catch (ex)&amp;#13;&amp;#10;                        {&amp;#13;&amp;#10;                        }&amp;#13;&amp;#10;                    }" __vsttTracked="1"&gt;NOTE: Coded UI Test can be generated from a Test Case only if it has an action recording associated with it. This is done by default when you run the Test in “Start Test &amp;amp; Record” mode in Test Runner.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9552550" width="1" height="1"&gt;</content><author><name>Mathew Aniyan</name><uri>http://blogs.msdn.com/members/Mathew+Aniyan.aspx</uri></author><category term="VSTS2010" scheme="http://blogs.msdn.com/mathew_aniyan/archive/tags/VSTS2010/default.aspx" /></entry><entry><title>Data Driving Coded UI Tests</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mathew_aniyan/archive/2009/03/17/data-driving-coded-ui-tests.aspx" /><id>http://blogs.msdn.com/mathew_aniyan/archive/2009/03/17/data-driving-coded-ui-tests.aspx</id><published>2009-03-17T02:47:49Z</published><updated>2009-03-17T02:47:49Z</updated><content type="html">&lt;p&gt;Frequently, we have to repeat a test with different data values. This ‘data-driving’ is made very easy in Coded UI Test. In the &lt;a href="http://blogs.msdn.com/mathew_aniyan/archive/2009/01/21/tutorial-how-to-create-a-coded-ui-test.aspx"&gt;Tutorial&lt;/a&gt;, we created a Coded UI Test to verify the addition of two numbers in the calculator. Let us now see how we can convert it into a data-driven test.&lt;/p&gt;  &lt;p&gt;Step 1:- Create the Coded UI Test – See &lt;a href="http://blogs.msdn.com/mathew_aniyan/archive/2009/01/21/tutorial-how-to-create-a-coded-ui-test.aspx"&gt;Tutorial&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Step 2:- Create the data sets. Coded UI Test supports multiple data sources. The data sets may be defined in a CSV (comma separated values) file, an Excel worksheet, an XML file, database table or from a test case on TFS. For this walkthrough, we will use a CSV file with the following data.   &lt;table cellspacing="0" cellpadding="0" border="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="bottom" width="64"&gt;           &lt;p&gt;&lt;b&gt;Add1&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="64"&gt;           &lt;p&gt;&lt;b&gt;Add2&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="64"&gt;           &lt;p&gt;&lt;b&gt;Sum&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="bottom" width="64"&gt;           &lt;p&gt;7&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="64"&gt;           &lt;p&gt;2&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="64"&gt;           &lt;p&gt;9&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="bottom" width="64"&gt;           &lt;p&gt;5&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="64"&gt;           &lt;p&gt;2&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="64"&gt;           &lt;p&gt;7&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="bottom" width="64"&gt;           &lt;p&gt;3&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="64"&gt;           &lt;p&gt;2&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="64"&gt;           &lt;p&gt;5&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Step 3:- Add the Data Source binding in Coded UI Test.&lt;/p&gt;  &lt;p&gt;a. Open the Test View window (from Test -&amp;gt; Windows -&amp;gt; Test View&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/DataDrivingCodedUITests_4A3C/clip_image002_2.jpg"&gt;&lt;img title="clip_image002" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="299" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/DataDrivingCodedUITests_4A3C/clip_image002_thumb.jpg" width="447" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;b. Choose the Coded UI Test that we created and from the context menu click Properties.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/DataDrivingCodedUITests_4A3C/clip_image004_2.jpg"&gt;&lt;img title="clip_image004" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="345" alt="clip_image004" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/DataDrivingCodedUITests_4A3C/clip_image004_thumb.jpg" width="319" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;c. In the Properties Window click on the button in Data Connection String property to create a new Data Connection.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/DataDrivingCodedUITests_4A3C/clip_image006_2.jpg"&gt;&lt;img title="clip_image006" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="442" alt="clip_image006" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/DataDrivingCodedUITests_4A3C/clip_image006_thumb.jpg" width="419" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;d. This brings up the New Data source Wizard&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/DataDrivingCodedUITests_4A3C/clip_image008_2.jpg"&gt;&lt;img title="clip_image008" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="413" alt="clip_image008" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/DataDrivingCodedUITests_4A3C/clip_image008_thumb.jpg" width="451" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;e. Choose CSV file and click Next&lt;/p&gt;  &lt;p&gt;f. Select the CSV file that we created in Step 2. A preview of the contents is shown in the Wizard.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/DataDrivingCodedUITests_4A3C/clip_image010_2.jpg"&gt;&lt;img title="clip_image010" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="357" alt="clip_image010" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/DataDrivingCodedUITests_4A3C/clip_image010_thumb.jpg" width="453" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;g. Click Finish. A prompt comes up to add the Data file into the project.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/DataDrivingCodedUITests_4A3C/clip_image012_2.jpg"&gt;&lt;img title="clip_image012" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="127" alt="clip_image012" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/DataDrivingCodedUITests_4A3C/clip_image012_thumb.jpg" width="327" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;h. Click Yes.&lt;/p&gt;  &lt;p&gt;i. A Data Source attribute is added to the Coded UI Test.&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;[DataSource(&amp;quot;Microsoft.VisualStudio.TestTools.DataSource.CSV&amp;quot;, &amp;quot;|DataDirectory|\\data.csv&amp;quot;, &amp;quot;data#csv&amp;quot;, DataAccessMethod.Sequential), DeploymentItem(&amp;quot;data.csv&amp;quot;), TestMethod]&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Step 4:- Use the data in the Coded UI Test.&lt;/p&gt;  &lt;p&gt;a. Open the Recorded methods file. The following snippet of code clicks on Button 7 in calculator.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff"&gt;// Click '7' button&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff"&gt;WinWindow item7Window = new WinWindow(calculatorWindow);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff"&gt;#region Search Criteria&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff"&gt;item7Window.SearchProperties.Add(&amp;quot;ControlId&amp;quot;, &amp;quot;131&amp;quot;);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff"&gt;#endregion&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff"&gt;WinButton item7Button = new WinButton(item7Window);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff"&gt;#region Search Criteria&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0080"&gt;&lt;em&gt;item7Button.SearchProperties.Add(&amp;quot;Name&amp;quot;, &amp;quot;7&amp;quot;);&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff"&gt;#endregion&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff"&gt;Mouse.Click(item7Button, new Point(26, 12));&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;b. Change the highlighted line to &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff"&gt;item7Button.SearchProperties.Add(&amp;quot;Name&amp;quot;, testContext.DataRow[&amp;quot;Add1&amp;quot;].ToString());&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;NOTE: Test Context object contains a handle to all the Data that is present in the Data Source. We can reference it with the column name (e.g:- “Add1”)&lt;/p&gt;  &lt;p&gt;c. Similarly the following code snippet clicks Button 2 in calculator&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff"&gt;// Click '2' button&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff"&gt;WinWindow item2Window = new WinWindow(calculatorWindow);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff"&gt;#region Search Criteria&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff"&gt;item2Window.SearchProperties.Add(&amp;quot;ControlId&amp;quot;, &amp;quot;126&amp;quot;);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff"&gt;#endregion&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff"&gt;WinButton item2Button = new WinButton(item2Window);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff"&gt;#region Search Criteria&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#ff0080"&gt;&lt;strong&gt;&lt;em&gt;item2Button.SearchProperties.Add(&amp;quot;Name&amp;quot;, &amp;quot;2&amp;quot;);&lt;/em&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff"&gt;#endregion&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff"&gt;Mouse.Click(item2Button, new Point(23, 11));&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;d. Change the highlighted line to&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff"&gt;item2Button.SearchProperties.Add(&amp;quot;Name&amp;quot;, testContext.DataRow[&amp;quot;Add2&amp;quot;].ToString());&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;e. Open the Coded UI Test file. The following line verifies the result.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff"&gt;// Validate UIItemEdit.Text AreEqual '9. '&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff"&gt;Assert.AreEqual(&amp;quot;9. &amp;quot;, UIMap.UICalculatorWindow.UIItemWindow.UIItemEdit.Text);&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;f. Modify this line to &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff"&gt;StringAssert.StartsWith(UIMap.UICalculatorWindow.UIItemWindow.UIItemEdit.Text, TestContext.DataRow[&amp;quot;Sum&amp;quot;].ToString());&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;NOTE:- We changed the Assert to a StringAssert, the comparator to StartsWith &amp;amp; reversed the order of the arguments.&lt;/p&gt;  &lt;p&gt;Step 5:- Run the data driven test.&lt;/p&gt;  &lt;p&gt;Right click inside the Coded UI Test Method and choose ‘Run Tests’&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/DataDrivingCodedUITests_4A3C/clip_image014_2.jpg"&gt;&lt;img title="clip_image014" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="318" alt="clip_image014" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/DataDrivingCodedUITests_4A3C/clip_image014_thumb.jpg" width="599" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The test will run 3 times (as many iterations as there rows in the Data Source). The Test Results will show each iteration details.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/DataDrivingCodedUITests_4A3C/clip_image016_2.jpg"&gt;&lt;img title="clip_image016" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="259" alt="clip_image016" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/DataDrivingCodedUITests_4A3C/clip_image016_thumb.jpg" width="611" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You have seen in this walkthrough how to create a data driven tests. If the Test Case is authored in Camano, there is an even simpler way to make it data-driven. More about this workflow in the next article.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9482162" width="1" height="1"&gt;</content><author><name>Mathew Aniyan</name><uri>http://blogs.msdn.com/members/Mathew+Aniyan.aspx</uri></author><category term="VSTS2010" scheme="http://blogs.msdn.com/mathew_aniyan/archive/tags/VSTS2010/default.aspx" /></entry><entry><title>Distributed Coded UI Tests</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mathew_aniyan/archive/2009/03/03/distributed-coded-ui-tests.aspx" /><id>http://blogs.msdn.com/mathew_aniyan/archive/2009/03/03/distributed-coded-ui-tests.aspx</id><published>2009-03-03T11:20:25Z</published><updated>2009-03-03T11:20:25Z</updated><content type="html">&lt;p&gt;Coded UI Tests can be run in a distributed fashion. It leverages the existing Load Test architecture.&amp;#160; Read the &lt;a href="http://blogs.msdn.com/vstsloadtestblog/articles/527572.aspx"&gt;Load Test Team&lt;/a&gt; blog for more information.&lt;/p&gt;  &lt;p&gt;Since Coded UI Tests always interact with the UI, the following change has to be made for the Agent on which they has to be run.&lt;/p&gt;  &lt;h4&gt;&lt;font color="#008000"&gt;UI Testing on an Agent&lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;&lt;font color="#008000"&gt;If you want to run a test that has a UI or interacts with the desktop or user settings, you will need to use QTAgentServiceUI on the agent instead of QTAgentService.exe. QTAgentServiceUI works exactly like QTAgentService, except that it runs as a user process rather than a service. We recommend you configure your agent to automatically logon as a test user, and then in the startup for that user run QTAgentServiceUI.bat. This bat file simply runs QTAgentServiceUI over and over, so that if the agent service dies it will be automatically restarted.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In the Coded UI Test Project, double click on the testsettings file.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/DistributedCodedUITests_C277/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/DistributedCodedUITests_C277/image_thumb.png" width="281" height="488" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/DistributedCodedUITests_C277/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/DistributedCodedUITests_C277/image_thumb_2.png" width="640" height="493" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In the Execution Criteria, choose &lt;strong&gt;&lt;font color="#800040"&gt;Execute Tests remotely&lt;/font&gt;&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Select the name of the controller to use for remote test execution.&lt;/p&gt;  &lt;p&gt;If there are multiple agents associated with the controller, we can filter the agents on which the test has to be run based on properties. In the screenshot above, i am using a property named CodedUITest to differentiate agents. I will set this property to true for the agent on which I want to run the Coded UI Test. (Remember this has to be run as the batch file and not as the service).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/DistributedCodedUITests_C277/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/DistributedCodedUITests_C277/image_thumb_3.png" width="421" height="515" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In the screenshot above, see how i have set the property for my agent.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9456177" width="1" height="1"&gt;</content><author><name>Mathew Aniyan</name><uri>http://blogs.msdn.com/members/Mathew+Aniyan.aspx</uri></author><category term="VSTS2010" scheme="http://blogs.msdn.com/mathew_aniyan/archive/tags/VSTS2010/default.aspx" /></entry><entry><title>Hand-coding a Coded UI Test</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mathew_aniyan/archive/2009/02/12/hand-coding-a-coded-ui-test.aspx" /><id>http://blogs.msdn.com/mathew_aniyan/archive/2009/02/12/hand-coding-a-coded-ui-test.aspx</id><published>2009-02-12T13:57:41Z</published><updated>2009-02-12T13:57:41Z</updated><content type="html">&lt;p&gt;1. In &lt;b&gt;Visual Studio Team System 2010&lt;/b&gt;, click on &lt;b&gt;Test&lt;/b&gt; menu and choose &lt;b&gt;New Test&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialHowtocreateaCodedUITest_746E/clip_image002_2.jpg"&gt;&lt;img title="clip_image002" height="355" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialHowtocreateaCodedUITest_746E/clip_image002_thumb.jpg" width="493" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. In the &lt;b&gt;Add New Test&lt;/b&gt; dialog, choose Coded UI Test and click&lt;b&gt; OK&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialHowtocreateaCodedUITest_746E/clip_image004_2.jpg"&gt;&lt;img title="clip_image004" height="205" alt="clip_image004" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialHowtocreateaCodedUITest_746E/clip_image004_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;NOTE:- You can choose to create a Visual C# test project or a Visual Basic test project.&lt;/p&gt;  &lt;p&gt;3. In the &lt;b&gt;New Test Project&lt;/b&gt; dialog, change the Test Project name and click &lt;b&gt;Create&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialHowtocreateaCodedUITest_746E/clip_image006_2.jpg"&gt;&lt;img title="clip_image006" height="81" alt="clip_image006" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialHowtocreateaCodedUITest_746E/clip_image006_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;4. In the &lt;b&gt;Coded UI Test&lt;/b&gt; dialog, click &lt;strong&gt;Don’t generate code&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialHowtocreateaCodedUITest_746E/clip_image008_2.jpg"&gt;&lt;img title="clip_image008" height="160" alt="clip_image008" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialHowtocreateaCodedUITest_746E/clip_image008_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;5. All the required references are added and Coded UI Test file is opened in the editor.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/HandcodingaCodedUITest_E75C/image_2.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="337" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/HandcodingaCodedUITest_E75C/image_thumb.png" width="308" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;6. Now you can start writing Code for a test.&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; For this tutorial, we will write code for the following test.&lt;/p&gt;  &lt;blockquote&gt;   &lt;h5&gt;Test &lt;a name="_Toc217272641"&gt;Steps&lt;/a&gt;&lt;/h5&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;a. Navigate to &lt;a href="http://live.com"&gt;http://live.com&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;b. Search for &amp;quot;MSFT&amp;quot; &lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;c. Verify that MoneyCentral link to Microsoft is present in the results.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We will write the code in CodedUITestMethod1.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The following statement launches the browser and navigates to live.com.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;BrowserWindow browserWindow = BrowserWindow.Launch(new System.Uri(&lt;/strong&gt;&lt;/font&gt;&lt;a href="http://live.com"&gt;&lt;font color="#0000ff"&gt;http://live.com&lt;/font&gt;&lt;/a&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;));&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;BrowserWindow class provides multiple overloads of the static Launch method.&lt;/p&gt;  &lt;p&gt;You can attach to an existing browser window using the static FromProcess method.&lt;/p&gt;  &lt;p&gt;Another option is to Search for an existing Browser based on its properties. IN the following snippet, i search for a browser containing “Blank Page” in its name.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;browserWindow.SearchProperties.Add(new PropertyExpression(UITestControlProperties.Common.Name, &amp;quot;Blank Page&amp;quot;, PropertyExpressionOperator.Contains));&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;browsertWindow.Find();&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The following code block finds the edit box with ID = sb_form_q on the live.com page. It sets the Text property of that Edit box to “MSFT”.&lt;/p&gt;  &lt;p&gt;It then searches for the button with ID = sb_form_go and clicks it.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;// Type 'MSFT' in 'q' text box&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;UITestControl qEdit = new UITestControl(browserWindow);&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;qEdit.TechnologyName = &amp;quot;Web&amp;quot;;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;qEdit.SearchProperties.Add(HtmlProperties.Edit.ControlType, ControlType.Edit.Name,&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HtmlProperties.Edit.Id, &amp;quot;sb_form_q&amp;quot;);&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;qEdit.SetProperty(HtmlProperties.Edit.Text, &amp;quot;MSFT&amp;quot;);&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;// Click 'Search' button&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;UITestControl searchButton = new UITestControl(browserWindow);&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;searchButton.TechnologyName = &amp;quot;Web&amp;quot;;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;searchButton.SearchProperties.Add(HtmlProperties.Button.ControlType,ControlType.Button.Name,&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HtmlProperties.Button.Id, &amp;quot;sb_form_go&amp;quot;);&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;Mouse.Click(searchButton);&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Note that both the edit box and button are represented by the same class UITestControl. This class can be used to refer to any control on the user interface.&lt;/li&gt;    &lt;li&gt;The constructor for UITestControl class accepts an argument which specifies the searchLimitContainer.&amp;#160; The search for the UITestControl will be limited to all the child controls of searchLimitContainer. In the code above, we are limiting search to all children of browserWindow.&lt;/li&gt;    &lt;li&gt;Since Coded UI Test supports multiple technologies (Web, MSAA, UIA), we have to specify the technology name for the control. In the code above we set the technology name to Web. If a technology name is not specified, the search is done in the technology of the search limit container. In this example, it would have been in the technology of browserWindow, which is MSAA.&lt;/li&gt;    &lt;li&gt;We then specify SearchProperties which will be used to find the control.&amp;#160; In the code above, we search based on ControlType and Id. It is possible to discover the various properties of a control using the HtmlProperties class. HtmlProperties.Edit will contain all properties applicable to an edit box.&lt;/li&gt;    &lt;li&gt;There is a Find() method on UITestControl. Normally this is done implicitly whenever an action is performed on a control.&amp;#160; In the code above, the Find method for qEdit is called from within the SetProperty method.&lt;/li&gt;    &lt;li&gt;Mouse actions are performed using the Mouse class. It provides static methods for all possible operations with a Mouse. Similarly there is a Keyboard class for keyboard operations.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The next step is to validate the results. The following code snippet does that.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;// Verify HREF property of mSFTStockQuotefHyperlink&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;UITestControl MSFTStockQuoteHyperlink = new UITestControl(browserWindow);&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;MSFTStockQuoteHyperlink.TechnologyName = &amp;quot;Web&amp;quot;;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;MSFTStockQuoteHyperlink.SearchProperties.Add(HtmlProperties.Hyperlink.ControlType, ControlType.Hyperlink.Name);&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;MSFTStockQuoteHyperlink.SearchProperties.Add(HtmlProperties.Hyperlink.InnerText,&amp;quot;MSN Money&amp;quot;,PropertyExpressionOperator.Contains);&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;string propMSFTStockQuoteHyperlinkHref = ((string)(MSFTStockQuoteHyperlink.GetProperty(HtmlProperties.Hyperlink.Href)));&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;StringAssert.StartsWith(propMSFTStockQuoteHyperlinkHref, &lt;a href="http://moneycentral.msn.com/detail/stock_quote?symbol=MSFT"&gt;http://moneycentral.msn.com/detail/stock_quote?symbol=MSFT&lt;/a&gt;);&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This searches for a Hyperlink which contains MSN Money in its inner-text. It verifies the Href property of the hyperlink.&lt;/p&gt;  &lt;p&gt;Assert and StringAssert classes can be used for validation.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The final Coded UI Test Method should look like below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/HandcodingaCodedUITest_E75C/image_4.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="436" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/HandcodingaCodedUITest_E75C/image_thumb_1.png" width="820" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;7.&amp;#160; Right click inside the Coded UI Test Method and choose &lt;strong&gt;Run Tests&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/HandcodingaCodedUITest_E75C/image_6.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="469" alt="image" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/HandcodingaCodedUITest_E75C/image_thumb_2.png" width="881" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;8. The code is compiled and then the test is run.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialHowtocreateaCodedUITest_746E/clip_image036_2.jpg"&gt;&lt;img title="clip_image036" height="222" alt="clip_image036" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialHowtocreateaCodedUITest_746E/clip_image036_thumb.jpg" width="829" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;9. All actions recorded earlier will now be played back.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialHowtocreateaCodedUITest_746E/clip_image038_2.jpg"&gt;&lt;img title="clip_image038" height="264" alt="clip_image038" src="http://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialHowtocreateaCodedUITest_746E/clip_image038_thumb.jpg" width="731" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9414462" width="1" height="1"&gt;</content><author><name>Mathew Aniyan</name><uri>http://blogs.msdn.com/members/Mathew+Aniyan.aspx</uri></author><category term="VSTS2010" scheme="http://blogs.msdn.com/mathew_aniyan/archive/tags/VSTS2010/default.aspx" /></entry><entry><title>Frequently Asked Questions</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mathew_aniyan/archive/2009/02/09/frequently-asked-questions.aspx" /><id>http://blogs.msdn.com/mathew_aniyan/archive/2009/02/09/frequently-asked-questions.aspx</id><published>2009-02-09T13:18:42Z</published><updated>2009-02-09T13:18:42Z</updated><content type="html">&lt;ol&gt;   &lt;li&gt;I have started the Coded UI Test Recorder. It is not recording any action I perform on my application. Why?&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;em&gt;Verify that &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;- The app is not running at higher privilege than the VS.&amp;#160; (E.g. VS running as normal user but app running as admin.)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;- The app is not running from network path.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;If you are still facing an issue, locate &lt;/em&gt;UITestLog.htm file in %temp%\UITestLogs\LastRun and send it to rnptalk.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Thanks GautamG for this tip.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;2.&amp;#160; Why am i getting a “ControlNotFoundException” when i perform an action on a UITestControl?&lt;/p&gt;  &lt;p&gt;- Verify that the SearchProperties of the UITestControl can be used to uniquely identify a control.&lt;/p&gt;  &lt;p&gt;- Verify that the combination of FilterProperties &amp;amp; SearchProperties will uniquely identify a control. If there are multiple qualifying candidates from the SearchProperties, FilterProperties are used to disambiguate them.&lt;/p&gt;  &lt;p&gt;- verify that the SearchProperties are spelled correctly. The recommended way to specify the name of a search property is to use the *properties class hierarchy. e.g:- HtmlProperties.Button.DisplayText, WinProperties.Edit.Text . &lt;/p&gt;  &lt;p&gt;NOTE:- If an invalid name is specified in SearchProperties, it will throw ControlNotFound exception.&amp;#160; If an invalid property is used in FilterProperties, it will be ignored. If an invalid Property is used in GetProperty/SetProperty, it will throw a NotSupportedException.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9408399" width="1" height="1"&gt;</content><author><name>Mathew Aniyan</name><uri>http://blogs.msdn.com/members/Mathew+Aniyan.aspx</uri></author><category term="VSTS2010" scheme="http://blogs.msdn.com/mathew_aniyan/archive/tags/VSTS2010/default.aspx" /></entry></feed>