public override IEnumerator <WebTestRequest> GetRequestEnumerator()
        {
            //if ((this.Context.ValidationLevel >= Microsoft.VisualStudio.TestTools.WebTesting.ValidationLevel.Low))
            //{
            //    ValidateResponseUrl validationRule1 = new ValidateResponseUrl();
            //    this.ValidateResponse += new EventHandler<ValidationEventArgs>(validationRule1.Validate);
            //}
            //this.UserName = Config.adminUser;
            //this.Password = Config.adminPass;
            WebTestRequest request1 = new WebTestRequest(this.siteURL + this.webURL + "/default.aspx");

            yield return(request1);

            request1 = null;


            WebTestRequest      request99       = new WebTestRequest(this.siteURL + this.webURL + "/Lists/TrainingCourses/NewForm.aspx");
            ExtractHiddenFields extractionRule1 = new ExtractHiddenFields();

            extractionRule1.Required             = true;
            extractionRule1.HtmlDecode           = true;
            extractionRule1.ContextParameterName = "1";
            request99.ExtractValues += new EventHandler <ExtractionEventArgs>(extractionRule1.Extract);
            ExtractText extractionRule99 = new ExtractText();

            extractionRule99.StartsWith           = "ctl00_m_g_";
            extractionRule99.EndsWith             = "_ctl";
            extractionRule99.IgnoreCase           = false;
            extractionRule99.UseRegularExpression = true;
            extractionRule99.Required             = true;
            extractionRule99.ExtractRandomMatch   = false;
            extractionRule99.Index      = 0;
            extractionRule99.HtmlDecode = true;

            extractionRule99.ContextParameterName = "guid";
            request99.ExtractValues += new EventHandler <ExtractionEventArgs>(extractionRule99.Extract);



            yield return(request99);

            string guidPrefix = "ctl00$m$g_";
            string guid       = Context["guid"].ToString();

            request99 = null;

            WebTestRequest request2 = new WebTestRequest(this.siteURL + this.webURL + "/Lists/TrainingCourses/NewForm.aspx");

            request2.Method = "POST";
            FormPostHttpBody request2Body = new FormPostHttpBody();

            request2Body.FormPostParameters.Add("MSO_PageHashCode", this.Context["$HIDDEN1.MSO_PageHashCode"].ToString());
            request2Body.FormPostParameters.Add("MSOWebPartPage_PostbackSource", this.Context["$HIDDEN1.MSOWebPartPage_PostbackSource"].ToString());
            request2Body.FormPostParameters.Add("MSOTlPn_SelectedWpId", this.Context["$HIDDEN1.MSOTlPn_SelectedWpId"].ToString());
            request2Body.FormPostParameters.Add("MSOTlPn_View", this.Context["$HIDDEN1.MSOTlPn_View"].ToString());
            request2Body.FormPostParameters.Add("MSOTlPn_ShowSettings", this.Context["$HIDDEN1.MSOTlPn_ShowSettings"].ToString());
            request2Body.FormPostParameters.Add("MSOGallery_SelectedLibrary", this.Context["$HIDDEN1.MSOGallery_SelectedLibrary"].ToString());
            request2Body.FormPostParameters.Add("MSOGallery_FilterString", this.Context["$HIDDEN1.MSOGallery_FilterString"].ToString());
            request2Body.FormPostParameters.Add("MSOTlPn_Button", this.Context["$HIDDEN1.MSOTlPn_Button"].ToString());
            request2Body.FormPostParameters.Add("__EVENTTARGET", this.Context["$HIDDEN1.__EVENTTARGET"].ToString());
            request2Body.FormPostParameters.Add("__EVENTARGUMENT", this.Context["$HIDDEN1.__EVENTARGUMENT"].ToString());
            request2Body.FormPostParameters.Add("__REQUESTDIGEST", this.Context["$HIDDEN1.__REQUESTDIGEST"].ToString());
            request2Body.FormPostParameters.Add("MSOSPWebPartManager_DisplayModeName", this.Context["$HIDDEN1.MSOSPWebPartManager_DisplayModeName"].ToString());
            request2Body.FormPostParameters.Add("MSOWebPartPage_Shared", this.Context["$HIDDEN1.MSOWebPartPage_Shared"].ToString());
            request2Body.FormPostParameters.Add("MSOLayout_LayoutChanges", this.Context["$HIDDEN1.MSOLayout_LayoutChanges"].ToString());
            request2Body.FormPostParameters.Add("MSOLayout_InDesignMode", this.Context["$HIDDEN1.MSOLayout_InDesignMode"].ToString());
            request2Body.FormPostParameters.Add("MSOSPWebPartManager_OldDisplayModeName", this.Context["$HIDDEN1.MSOSPWebPartManager_OldDisplayModeName"].ToString());
            request2Body.FormPostParameters.Add("MSOSPWebPartManager_StartWebPartEditingName", this.Context["$HIDDEN1.MSOSPWebPartManager_StartWebPartEditingName"].ToString());
            request2Body.FormPostParameters.Add("__LASTFOCUS", this.Context["$HIDDEN1.__LASTFOCUS"].ToString());
            request2Body.FormPostParameters.Add("__VIEWSTATE", this.Context["$HIDDEN1.__VIEWSTATE"].ToString());
            request2Body.FormPostParameters.Add("__EVENTVALIDATION", this.Context["$HIDDEN1.__EVENTVALIDATION"].ToString());



            request2Body.FormPostParameters.Add("InputKeywords", "");
            request2Body.FormPostParameters.Add(guidPrefix + guid + "$ctl00$ctl04$ctl00$ctl00$ctl00$ctl0" +
                                                "4$ctl00$ctl00$TextField", "");
            request2Body.FormPostParameters.Add(guidPrefix + guid + "$ctl00$ctl04$ctl01$ctl00$ctl00$ctl0" +
                                                "4$ctl00$ctl00$TextField", "");
            request2Body.FormPostParameters.Add(guidPrefix + guid + "$ctl00$ctl04$ctl02$ctl00$ctl00$ctl0" +
                                                "4$ctl00$ctl00$TextField", "<div></div>");
            request2Body.FormPostParameters.Add(guidPrefix + guid + "$ctl00$ctl04$ctl02$ctl00$ctl00$ctl0" +
                                                "4$ctl00$ctl00$TextField_spSave", "<DIV></DIV>");
            request2Body.FormPostParameters.Add(guidPrefix + guid + "$ctl00$ctl04$ctl03$ctl00$ctl00$ctl0" +
                                                "4$ctl00$ctl00$DateTimeField$DateTimeFieldDate", "");
            request2Body.FormPostParameters.Add(guidPrefix + guid + "$ctl00$ctl04$ctl04$ctl00$ctl00$ctl0" +
                                                "4$ctl00$ctl00$DateTimeField$DateTimeFieldDate", "");
            request2Body.FormPostParameters.Add(guidPrefix + guid + "$ctl00$ctl04$ctl05$ctl00$ctl00$ctl0" +
                                                "4$ctl00$ctl00$DateTimeField$DateTimeFieldDate", "");
            request2Body.FormPostParameters.Add(guidPrefix + guid + "$ctl00$ctl04$ctl06$ctl00$ctl00$ctl0" +
                                                "4$ctl00$ctl00$TextField", "");
            request2Body.FormPostParameters.Add(guidPrefix + guid + "$ctl00$ctl07$ctl00$owshiddenversion" +
                                                "", this.Context["$HIDDEN1." + guidPrefix + guid + "$ctl00$ctl07$ctl00$owshidd" +
                                                                 "enversion"].ToString());
            request2Body.FormPostParameters.Add("attachmentsToBeRemovedFromServer", this.Context["$HIDDEN1.attachmentsToBeRemovedFromServer"].ToString());
            request2Body.FormPostParameters.Add("RectGifUrl", this.Context["$HIDDEN1.RectGifUrl"].ToString());
            request2Body.FormPostParameters.Add("fileupload0", "");
            request2Body.FormPostParameters.Add("__spDummyText1", "");
            request2Body.FormPostParameters.Add("__spDummyText2", "");
            request2Body.FormPostParameters.Add(guidPrefix + guid + "$ctl00$ctl04$ctl07$ctl00$ctl00$ctl0" +
                                                "4$ctl00$ctl03.x", "5");
            request2Body.FormPostParameters.Add(guidPrefix + guid + "$ctl00$ctl04$ctl07$ctl00$ctl00$ctl0" +
                                                "4$ctl00$ctl03.y", "8");
            request2.Body = request2Body;
            ExtractHiddenFields extractionRule2 = new ExtractHiddenFields();

            extractionRule2.Required             = true;
            extractionRule2.HtmlDecode           = true;
            extractionRule2.ContextParameterName = "1";
            request2.ExtractValues += new EventHandler <ExtractionEventArgs>(extractionRule2.Extract);
            yield return(request2);

            request2 = null;


            WebTestRequest request6 = new WebTestRequest(this.siteURL + this.webURL + "/Lists/TrainingCourses/NewForm.aspx");

            request6.Method = "POST";
            request6.ExpectedResponseUrl = this.siteURL + this.webURL + "/Lists/TrainingCourses/AllItems.aspx";
            FormPostHttpBody request6Body = new FormPostHttpBody();

            request6Body.FormPostParameters.Add("MSO_PageHashCode", this.Context["$HIDDEN1.MSO_PageHashCode"].ToString());
            request6Body.FormPostParameters.Add("MSOWebPartPage_PostbackSource", this.Context["$HIDDEN1.MSOWebPartPage_PostbackSource"].ToString());
            request6Body.FormPostParameters.Add("MSOTlPn_SelectedWpId", this.Context["$HIDDEN1.MSOTlPn_SelectedWpId"].ToString());
            request6Body.FormPostParameters.Add("MSOTlPn_View", this.Context["$HIDDEN1.MSOTlPn_View"].ToString());
            request6Body.FormPostParameters.Add("MSOTlPn_ShowSettings", this.Context["$HIDDEN1.MSOTlPn_ShowSettings"].ToString());
            request6Body.FormPostParameters.Add("MSOGallery_SelectedLibrary", this.Context["$HIDDEN1.MSOGallery_SelectedLibrary"].ToString());
            request6Body.FormPostParameters.Add("MSOGallery_FilterString", this.Context["$HIDDEN1.MSOGallery_FilterString"].ToString());
            request6Body.FormPostParameters.Add("MSOTlPn_Button", this.Context["$HIDDEN1.MSOTlPn_Button"].ToString());
            request6Body.FormPostParameters.Add("__EVENTTARGET", guidPrefix + guid + "$ctl00$toolBarTbl$RightRptControls$" +
                                                "ctl00$ctl00$diidIOSaveItem");
            request6Body.FormPostParameters.Add("__EVENTARGUMENT", this.Context["$HIDDEN1.__EVENTARGUMENT"].ToString());
            request6Body.FormPostParameters.Add("__REQUESTDIGEST", this.Context["$HIDDEN1.__REQUESTDIGEST"].ToString());
            request6Body.FormPostParameters.Add("MSOSPWebPartManager_DisplayModeName", this.Context["$HIDDEN1.MSOSPWebPartManager_DisplayModeName"].ToString());
            request6Body.FormPostParameters.Add("MSOWebPartPage_Shared", this.Context["$HIDDEN1.MSOWebPartPage_Shared"].ToString());
            request6Body.FormPostParameters.Add("MSOLayout_LayoutChanges", this.Context["$HIDDEN1.MSOLayout_LayoutChanges"].ToString());
            request6Body.FormPostParameters.Add("MSOLayout_InDesignMode", this.Context["$HIDDEN1.MSOLayout_InDesignMode"].ToString());
            request6Body.FormPostParameters.Add("MSOSPWebPartManager_OldDisplayModeName", this.Context["$HIDDEN1.MSOSPWebPartManager_OldDisplayModeName"].ToString());
            request6Body.FormPostParameters.Add("MSOSPWebPartManager_StartWebPartEditingName", this.Context["$HIDDEN1.MSOSPWebPartManager_StartWebPartEditingName"].ToString());
            request6Body.FormPostParameters.Add("__VIEWSTATE", this.Context["$HIDDEN1.__VIEWSTATE"].ToString());
            request6Body.FormPostParameters.Add("__EVENTVALIDATION", this.Context["$HIDDEN1.__EVENTVALIDATION"].ToString());



            request6Body.FormPostParameters.Add("InputKeywords", "");
            request6Body.FormPostParameters.Add(guidPrefix + guid + "$ctl00$ctl04$ctl00$ctl00$ctl00$ctl0" +
                                                "4$ctl00$ctl00$TextField", this.myCourseCode);
            request6Body.FormPostParameters.Add(guidPrefix + guid + "$ctl00$ctl04$ctl01$ctl00$ctl00$ctl0" +
                                                "4$ctl00$ctl00$TextField", this.myCourseCode);
            request6Body.FormPostParameters.Add(guidPrefix + guid + "$ctl00$ctl04$ctl02$ctl00$ctl00$ctl0" +
                                                "4$ctl00$ctl00$TextField", "<div></div>");
            request6Body.FormPostParameters.Add(guidPrefix + guid + "$ctl00$ctl04$ctl02$ctl00$ctl00$ctl0" +
                                                "4$ctl00$ctl00$TextField_spSave", this.myCourseCode + "\r\n<DIV></DIV>");
            request6Body.FormPostParameters.Add(guidPrefix + guid + "$ctl00$ctl04$ctl03$ctl00$ctl00$ctl0" +
                                                "4$ctl00$ctl00$DateTimeField$DateTimeFieldDate", DateTime.Now.ToShortDateString());
            request6Body.FormPostParameters.Add(guidPrefix + guid + "$ctl00$ctl04$ctl04$ctl00$ctl00$ctl0" +
                                                "4$ctl00$ctl00$DateTimeField$DateTimeFieldDate", DateTime.Now.ToShortDateString());
            request6Body.FormPostParameters.Add(guidPrefix + guid + "$ctl00$ctl04$ctl05$ctl00$ctl00$ctl0" +
                                                "4$ctl00$ctl00$DateTimeField$DateTimeFieldDate", DateTime.Now.ToShortDateString());
            request6Body.FormPostParameters.Add(guidPrefix + guid + "$ctl00$ctl04$ctl06$ctl00$ctl00$ctl0" +
                                                "4$ctl00$ctl00$TextField", "100");
            request6Body.FormPostParameters.Add(guidPrefix + guid + "$ctl00$ctl07$ctl00$owshiddenversion" +
                                                "", this.Context["$HIDDEN1." + guidPrefix + guid + "$ctl00$ctl07$ctl00$owshidd" +
                                                                 "enversion"].ToString());
            request6Body.FormPostParameters.Add("attachmentsToBeRemovedFromServer", this.Context["$HIDDEN1.attachmentsToBeRemovedFromServer"].ToString());
            request6Body.FormPostParameters.Add("RectGifUrl", this.Context["$HIDDEN1.RectGifUrl"].ToString());
            request6Body.FormPostParameters.Add("fileupload0", "");
            request6Body.FormPostParameters.Add("__spDummyText1", "");
            request6Body.FormPostParameters.Add("__spDummyText2", "");
            request6.Body = request6Body;

            yield return(request6);

            request6 = null;
            // end of create course
            //ID for recently created course

            this.myCourseId = SharePointCalls.GetCourseID(this.myCourseCode, siteURL, webURL);

            //register for course
            this.UserName = Config.spgEmpUser;
            this.Password = Config.spgEmpPass;

            WebTestRequest request18 = new WebTestRequest(this.siteURL + this.webURL + "/CourseRegistration.aspx");

            request18.ThinkTime = 2;
            request18.QueryStringParameters.Add("ID", this.myCourseId.ToString(), false, false);
            ExtractHiddenFields extractionRule6 = new ExtractHiddenFields();

            extractionRule6.Required             = true;
            extractionRule6.HtmlDecode           = true;
            extractionRule6.ContextParameterName = "1";
            request18.ExtractValues += new EventHandler <ExtractionEventArgs>(extractionRule6.Extract);
            yield return(request18);

            request18 = null;

            WebTestRequest request19 = new WebTestRequest(this.siteURL + this.webURL + "/CourseRegistration.aspx");

            request19.ThinkTime = 2;
            request19.Method    = "POST";
            request19.QueryStringParameters.Add("ID", this.myCourseId.ToString(), false, false);
            FormPostHttpBody request19Body = new FormPostHttpBody();

            request19Body.FormPostParameters.Add("MSO_PageHashCode", this.Context["$HIDDEN1.MSO_PageHashCode"].ToString());
            request19Body.FormPostParameters.Add("MSOWebPartPage_PostbackSource", this.Context["$HIDDEN1.MSOWebPartPage_PostbackSource"].ToString());
            request19Body.FormPostParameters.Add("MSOTlPn_SelectedWpId", this.Context["$HIDDEN1.MSOTlPn_SelectedWpId"].ToString());
            request19Body.FormPostParameters.Add("MSOTlPn_View", this.Context["$HIDDEN1.MSOTlPn_View"].ToString());
            request19Body.FormPostParameters.Add("MSOTlPn_ShowSettings", this.Context["$HIDDEN1.MSOTlPn_ShowSettings"].ToString());
            request19Body.FormPostParameters.Add("MSOGallery_SelectedLibrary", this.Context["$HIDDEN1.MSOGallery_SelectedLibrary"].ToString());
            request19Body.FormPostParameters.Add("MSOGallery_FilterString", this.Context["$HIDDEN1.MSOGallery_FilterString"].ToString());
            request19Body.FormPostParameters.Add("MSOTlPn_Button", this.Context["$HIDDEN1.MSOTlPn_Button"].ToString());
            request19Body.FormPostParameters.Add("MSOSPWebPartManager_DisplayModeName", this.Context["$HIDDEN1.MSOSPWebPartManager_DisplayModeName"].ToString());
            request19Body.FormPostParameters.Add("__EVENTTARGET", this.Context["$HIDDEN1.__EVENTTARGET"].ToString());
            request19Body.FormPostParameters.Add("__EVENTARGUMENT", this.Context["$HIDDEN1.__EVENTARGUMENT"].ToString());
            request19Body.FormPostParameters.Add("MSOWebPartPage_Shared", this.Context["$HIDDEN1.MSOWebPartPage_Shared"].ToString());
            request19Body.FormPostParameters.Add("MSOLayout_LayoutChanges", this.Context["$HIDDEN1.MSOLayout_LayoutChanges"].ToString());
            request19Body.FormPostParameters.Add("MSOLayout_InDesignMode", this.Context["$HIDDEN1.MSOLayout_InDesignMode"].ToString());
            request19Body.FormPostParameters.Add("MSOSPWebPartManager_OldDisplayModeName", this.Context["$HIDDEN1.MSOSPWebPartManager_OldDisplayModeName"].ToString());
            request19Body.FormPostParameters.Add("MSOSPWebPartManager_StartWebPartEditingName", this.Context["$HIDDEN1.MSOSPWebPartManager_StartWebPartEditingName"].ToString());
            request19Body.FormPostParameters.Add("__REQUESTDIGEST", this.Context["$HIDDEN1.__REQUESTDIGEST"].ToString());
            request19Body.FormPostParameters.Add("__VIEWSTATE", this.Context["$HIDDEN1.__VIEWSTATE"].ToString());
            request19Body.FormPostParameters.Add("__EVENTVALIDATION", this.Context["$HIDDEN1.__EVENTVALIDATION"].ToString());


            request19Body.FormPostParameters.Add("InputKeywords", "");
            request19Body.FormPostParameters.Add("ctl00$PlaceHolderMain$Submit", "Register for Course");
            request19Body.FormPostParameters.Add("__spDummyText1", "");
            request19Body.FormPostParameters.Add("__spDummyText2", "");
            request19.Body = request19Body;
            yield return(request19);

            request19 = null;

            WebTestRequest WFrequest1 = new WebTestRequest(this.siteURL + this.webURL + "/managerdashboard.aspx");

            WFrequest1.ThinkTime = 120;
            yield return(WFrequest1);

            request1 = null;

            courseId = SharePointCalls.GetCourseID(this.myCourseCode, this.siteURL, this.webURL);
            userId   = SharePointCalls.GetUserId(this.UserName, this.siteURL, this.webURL);
            //verify Registration for this course for spgemployee
            SPListItem regItem = SharePointCalls.GetRegistration(this.courseId, this.userId, siteURL, webURL);

            if (regItem == null)
            {
                Outcome = Outcome.Fail;
            }


            //approve using spgmanager login
            //Get Approval Task id based on Course code and login
            regApprovalId = SharePointCalls.GetRegApprovalID(regItem);

            this.UserName = Config.spgManagerUser;
            this.Password = Config.spgManagerPass;



            WebTestRequest WFrequest2 = new WebTestRequest(this.siteURL + this.webURL + "/Lists/RegistrationApprovalTasks/DispForm.aspx");

            WFrequest2.ThinkTime = 3;

            WFrequest2.QueryStringParameters.Add("ID", this.regApprovalId.ToString(), false, false);
            WFrequest2.QueryStringParameters.Add("Source", this.siteURL + this.webURL + "/managerdashboard.aspx", true, false);
            ExtractHiddenFields WFextractionRule2 = new ExtractHiddenFields();

            WFextractionRule2.Required             = true;
            WFextractionRule2.HtmlDecode           = true;
            WFextractionRule2.ContextParameterName = "1";
            WFrequest2.ExtractValues += new EventHandler <ExtractionEventArgs>(WFextractionRule2.Extract);
            //get regApproval list id
            ExtractText WFextractionRule3 = new ExtractText();

            WFextractionRule3.StartsWith           = "List=";
            WFextractionRule3.EndsWith             = "&amp;ID=";
            WFextractionRule3.Index                = 0;
            WFextractionRule3.IgnoreCase           = true;
            WFextractionRule3.UseRegularExpression = true;
            WFextractionRule3.HtmlDecode           = true;
            WFextractionRule3.Required             = false;
            WFextractionRule3.ContextParameterName = "regApprovalTaskListId";
            WFrequest2.ExtractValues              += new EventHandler <ExtractionEventArgs>(WFextractionRule3.Extract);

            yield return(WFrequest2);

            WFrequest2 = null;
            WebTestRequest WFrequest3 = new WebTestRequest(this.siteURL + this.webURL + "/_layouts/Contoso/RegistrationApproval.aspx");

            WFrequest3.Method = "POST";
            WFrequest3.ExpectedResponseUrl = this.siteURL + this.webURL + "/managerdashboard.aspx";
            WFrequest3.QueryStringParameters.Add("List", this.Context["regApprovalTaskListId"].ToString().Replace("-", "%2"), false, false);
            WFrequest3.QueryStringParameters.Add("ID", this.regApprovalId.ToString(), true, false);
            WFrequest3.QueryStringParameters.Add("Source", this.siteURL + this.webURL + "/managerdashboard.aspx", true, false);
            FormPostHttpBody request3Body = new FormPostHttpBody();

            request3Body.FormPostParameters.Add("__EVENTTARGET", this.Context["$HIDDEN1.__EVENTTARGET"].ToString());
            request3Body.FormPostParameters.Add("__EVENTARGUMENT", this.Context["$HIDDEN1.__EVENTARGUMENT"].ToString());
            request3Body.FormPostParameters.Add("__REQUESTDIGEST", this.Context["$HIDDEN1.__REQUESTDIGEST"].ToString());
            request3Body.FormPostParameters.Add("__VIEWSTATE", this.Context["$HIDDEN1.__VIEWSTATE"].ToString());
            request3Body.FormPostParameters.Add("__EVENTVALIDATION", this.Context["$HIDDEN1.__EVENTVALIDATION"].ToString());
            request3Body.FormPostParameters.Add("ctl00$PlaceHolderMain$Status", Status.Rejected);
            request3Body.FormPostParameters.Add("ctl00$PlaceHolderMain$Submit", "Submit");
            request3Body.FormPostParameters.Add("__spDummyText1", "");
            request3Body.FormPostParameters.Add("__spDummyText2", "");
            WFrequest3.Body = request3Body;
            yield return(WFrequest3);


            //Verify the status of registration

            regItem = SharePointCalls.GetRegistration(this.courseId, this.userId, siteURL, webURL);
            if (regItem == null)
            {
                Outcome = Outcome.Fail;
            }

            if (regItem[new Guid(Fields.RegistrationStatus)].ToString() != Status.Rejected)
            {
                Outcome = Outcome.Fail;
            }

            WFrequest3 = null;
        }