Monday, January 16, 2012

Visual Studio Web Test: Excluding resources that are failing the test

I had a recorded scenario that when running back, one resource was giving 404 error, and because of that the test was failing

this resource was not important, it was just a css file, I looked on how to exclude such non-important resources from the test, I found some useful information here http://blogs.msdn.com/b/densto/archive/2007/06/27/webtestrequest-dependentrequests-collection.aspx

so first I converted my test to web coded test, then I looked for the request that was causing the problem, then I added this line before the yeld command for the request

request4.PostRequest += new EventHandler<PostRequestEventArgs>(request4_PostRequest);

Then added the request4_PostRequest implementation at the end

void request4_PostRequest(object sender, PostRequestEventArgs e)
{
    List<WebTestRequest> remove = new List<WebTestRequest>();
    foreach (WebTestRequest dependent in e.Request.DependentRequests)
    {
        if (dependent.Url.EndsWith("template.css"))
        {
            remove.Add(dependent);
        }
    }

    foreach (WebTestRequest dependent in remove)
    {
        e.Request.DependentRequests.Remove(dependent);
    }
}

Doing the above, I am able to run the test and getting pass as a final result

Another easier way I found later from Ed Glas post http://blogs.msdn.com/b/edglas/archive/2008/08/06/masking-a-404-error-in-a-dependent-request.aspx

This way can be done on the recorded scenario directly without converting to coded test