public void EPAAttnGraphUpdatesAfterObserverCompletesAssessment() { /// 1. Create learner and observer users and login as the learner LoginPage LP = Navigation.GoToLoginPage(browser); // We are using a try catch here for the following reason. This test is the very first test that gets run during the build. For some reason, the // RegisterUser API fails to complete and throws a 500 error whenever the first test gets set off on the grid. So if the error happens, then we will // just call the API again in the Catch block and proceed UserInfo LRUser = null; try { LRUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.LR); } catch { LRUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.LR); } UserInfo OBUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.OB); CBDLearnerPage CLP = LP.LoginAsNewUser(UserUtils.UserRole.LR, LRUser.Username, LRUser.Password); /// 2. Store the number of observations we will use throughout the test into a variable int noOfObs = 4; /// 3. Request 4 observations for EPA 1.1, with randomized ratings for each observation List <LearnerRequestObsObject> LRO = CLP.RequestObservationsForEPA(CLP.EPAIMTbl, Bys.CBDLearnerPage.EPAIMTbl, "Transition to Discipline", "Performing preoperative assessments for ASA 1 or 2 patients who will be undergoing a minor scheduled surgical procedure", OBUser.FullName, "Part A: Direct observation - Form 1", noOfObs); /// 4. Log out and then log in as the observer that the learner requested CLP.ClickAndWaitBasePage(CLP.LogoutLnk); Navigation.GoToLoginPage(browser); CBDObserverPage OP = LP.LoginAsNewUser(UserUtils.UserRole.OB, OBUser.Username, OBUser.Password); /// 5. Accept the pending observation requests and complete the Assessment forms for all 4 of the observations List <CompletedAssessmentInfo> completedAssessments = OP.AcceptAndCompleteObservations(LRUser.FullName, "Part A: Direct observation - Form 1", noOfObs); /// 6. Calculate the min, max and mean values for the completed observations above decimal minExpected = OP.GetMinMaxOrMeanFromMultipleCompletedAssessments(completedAssessments, "min"); decimal maxExpected = OP.GetMinMaxOrMeanFromMultipleCompletedAssessments(completedAssessments, "max"); decimal meanExpected = OP.GetMinMaxOrMeanFromMultipleCompletedAssessments(completedAssessments, "mean"); /// 8. Log out and then log in as the learner CLP.ClickAndWaitBasePage(CLP.LogoutLnk); Navigation.GoToLoginPage(browser); LP.LoginAsExistingUser(UserUtils.UserRole.LR, LRUser.Username, LRUser.Password); /// 9. Open the Reports popup, obtain the actual values from the graph through JQuery, then assert them against the expected calculated values obtained above CLP.ClickAndWait(CLP.ViewMoreRptsLnk); decimal minActual = CLP.GetMinMeanOrMaxFromEPAAttainGraph(CLP.ReportsFormEPAAttainmentChrt, string.Format("EPA 1.1 ({0})", noOfObs), "min"); Assert.AreEqual(minExpected, minActual); decimal maxActual = CLP.GetMinMeanOrMaxFromEPAAttainGraph(CLP.ReportsFormEPAAttainmentChrt, string.Format("EPA 1.1 ({0})", noOfObs), "max"); Assert.AreEqual(maxExpected, maxActual); decimal meanActual = CLP.GetMinMeanOrMaxFromEPAAttainGraph(CLP.ReportsFormEPAAttainmentChrt, string.Format("EPA 1.1 ({0})", noOfObs), "mean"); Assert.AreEqual(meanExpected, meanActual); }
public void UserCanDeleteActivityOnMyMOCPage() { /// 1. Create a Mainport user and Login UserInfo NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP); LoginPage LP = Navigation.GoToLoginPage(browser); MyDashboardPage DP = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]); /// 2. Enter 2 activities EnterCPDActivityPage EAP = DP.ClickAndWait(DP.EnterACPDActivityBtn); Activity ConferenceActivity = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf, "10", false); DP.ClickAndWait(DP.EnterACPDActivityBtn); Activity ConferenceActivity2 = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf, "10", false); // Have to wait for the credits to be applied before we can proceed MainportHelperMethods.WaitForCreditsToBeApplied(browser, DP, Bys.MyDashboardPage.TotalCreditsAppliedValueLbl, "10"); /// 3. On the My MOC page, open the View Activity form, click the X button for an activity, and verify that it got removed from the table MyMOCPage MP = DP.ClickAndWaitBasePage(DP.MyMOCTab); MP.OpenViewActivitiesForm(MP.GroupLearnTblUnaccrActRowViewLnk); IWebElement row = ElemGet.Grid_GetRowByRowName(MP.ViewActivitiesFormActivitiesTbl, Bys.MyMOCPage.ViewActivitiesFormActivitiesTblBodyRow, ConferenceActivity.ActivityName, "td"); ElemSet.Grid_ClickElementWithoutTextInsideRow(row, "input"); MP.ClickAndWait(MP.DeleteActivityWarningFormYesBtn); Assert.False(ElemGet.Grid_ContainsRecord(Browser, MP.ViewActivitiesFormActivitiesTbl, Bys.MyMOCPage.ViewActivitiesFormActivitiesTblBodyRow, 0, ConferenceActivity.ActivityName, "td")); }
public void MainCyclNotCompleteAfter399Credits() { /// 1. Create a Mainport user, which has a cycle start date 6 years prior, then Login. We are using a date 6 years in the past because /// the end date of the cycle needs to be a past date for the user to be able to advance, and the Main cycle is 5 years UserInfo NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP, null, null, DateTime.Now.AddYears(-6).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)); LoginPage LP = Navigation.GoToLoginPage(browser); MyDashboardPage DP = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]); /// 2. Submit an activity totalling 399 credits, Enter an activity date that falls within the cycle date range. /// NOTE: If the activity date falls within cycle date's the last year for a Main cycle, then we wont need to credit validate string actDate = DateTime.Now.AddYears(-1).ToString("MM/dd/yyyy", CultureInfo.InvariantCulture); EnterCPDActivityPage EAP = DP.ClickAndWait(DP.EnterACPDActivityBtn); Activity ConferenceAct = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf, "399", true, actDate); /// 3. Login to Lifetime Support and validate the credits that need validated, if applicable. See note above in step 2 about credit validation. /// Depending on what day of the year this test is run, it may need credit validation LSHelp.Login(browser, "lkaveti", "password"); LSHelp.GoToParticipantProgramPage(browser, "Royal College of Physicians", NewUser.FullName, "Maintenance of Certification"); MainportHelperMethods.ValidateCreditsIfApplicable(browser, NewUser, ConferenceAct); /// 4. Click on the Details tab and verify that the UI displays In Progress for the Status label, since we did not reach the 400 credits // First we have to wait for the windows service to process the credits. LSHelp.WaitForProgramCreditsWindowsService(browser, "399 (of 400)"); Assert.AreEqual("In Progress", LSHelp.GetProgramDetail(browser, "Status")); }
public void PRACycleCompleteAfter80Credits() { /// 1. Create a Mainport user, then place the user in the PRA cycle through LTS UserInfo NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP); LSHelp.Login(browser, "lkaveti", "password"); LSHelp.GoToParticipantProgramPage(browser, "Royal College of Physicians", NewUser.FullName, "Maintenance of Certification"); LSHelp.RCP_AddProgramAdjustment(browser, NewUser.FullName, LSConstants.AdjustmentCodes.PRA); /// 2. Custom date the cycle end date so that it is in the past. This is so that the user is able to be marked as Complete (Sort of hacking /// the system). First, We have to move the start date back LSHelp.RCP_AdjustMOCDate(browser, NewUser.FullName, "Start", DateTime.Now.AddYears(-2).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)); LSHelp.RCP_AdjustMOCDate(browser, NewUser.FullName, "End", DateTime.Now.AddYears(-1).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)); /// 3. Login to Mainport and submit an activity totalling 80 credits. Enter an activity date that falls within the cycle date range. string actDate = DateTime.Now.AddMonths(-13).ToString("MM/dd/yyyy", CultureInfo.InvariantCulture); LoginPage LP = Navigation.GoToLoginPage(browser); MyDashboardPage DP = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]); EnterCPDActivityPage EAP = DP.ClickAndWait(DP.EnterACPDActivityBtn); Activity ConferenceAct = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf, "80", true, actDate); /// 4. Login to Lifetime Support and validate the credits LSHelp.Login(browser, "lkaveti", "password"); LSHelp.ValidateCredit(browser, "Royal College of Physicians", NewUser.FullName, "Maintenance of Certification", ConferenceAct.ActivityName); /// 5. Click on the Details tab and verify that the UI displays Complete for the Status label // First we have to wait for the windows service to process the credits. LSHelp.WaitForProgramCreditsWindowsService(browser, "80 (of 80)"); Assert.AreEqual("Complete", LSHelp.GetProgramDetail(browser, "Status")); }
public void UIUpdatesAfterUserMeetsSectionCreditMinimumRequirement() { /// 1. Create a Mainport user and Login UserInfo NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP); LoginPage LP = Navigation.GoToLoginPage(browser); MyDashboardPage DP = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]); /// 2. Submit an activity in each section, ensuring that 25 credits have been met in each section EnterCPDActivityPage EAP = DP.ClickAndWait(DP.EnterACPDActivityBtn); Activity ConferenceAct = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf, "25", true); DP.ClickAndWait(DP.EnterACPDActivityBtn); Activity FellowshipAct = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec2_Fellowship_FixedCredits25); DP.ClickAndWait(DP.EnterACPDActivityBtn); Activity MultiSourceFeedbackAct = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec3_MultisourceFeedback_CreditsTripled, "10"); // Have to wait for the credits to be applied before we can proceed MainportHelperMethods.WaitForCreditsToBeApplied(browser, DP, Bys.MyDashboardPage.TotalCreditsAppliedValueLbl, "80"); /// 3. Verify that the MOC Section Requirements labels show as blue/gray, and that the checkmark shows for each box Assert.AreEqual("showGrey", DP.MOCSectionReqsGraphGroupLearningSquare.GetAttribute("class")); Assert.AreEqual("showGrey", DP.MOCSectionReqsGraphSelfLearningSquare.GetAttribute("class")); Assert.AreEqual("showGrey", DP.MOCSectionReqsGraphAssessmentSquare.GetAttribute("class")); Assert.True(DP.MOCSectionReqsGraphGroupLearningTickBox.Displayed); Assert.True(DP.MOCSectionReqsGraphSelfLearningTickBox.Displayed); Assert.True(DP.MOCSectionReqsGraphAssessmentTickBox.Displayed); /// 4. Go to the My MOC tab and verify that the "section minimum requirement was met" label is shown DP.ClickAndWaitBasePage(DP.MyMOCTab); Assert.True(Browser.Exists(Bys.MyMOCPage.GroupLearnTblYouHaveMetMinCredsLbl, ElementCriteria.IsVisible)); Assert.True(Browser.Exists(Bys.MyMOCPage.SelfLearningTblYouHaveMetMinCredsLbl, ElementCriteria.IsVisible)); Assert.True(Browser.Exists(Bys.MyMOCPage.AssessmentTblYouHaveMetMinCredsLbl, ElementCriteria.IsVisible)); }
public void UIUpdatesAfterLearnerAddsReflection() { /// 1. Create learner user and login LoginPage LP = Navigation.GoToLoginPage(browser); LRUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.LR); CBDLearnerPage CLP = LP.LoginAsNewUser(UserUtils.UserRole.LR, LRUser.Username, LRUser.Password); /// 2. Store the number from the label text of the Reflections tab, and also "Showing" label, for the purpose of a future Assert within this /// test. If there are no Reflections yet, this showing label will not appear, so skip it if so CLP.SwitchToTab(CLP.ReflectionsTab, Bys.CBDLearnerPage.ReflectionsTab); string origNumbOfReflectionsOnReflectionsTab = DataUtils.GetStringBetweenCharacters(CLP.ReflectionsTab.Text, "(", ")"); if (browser.Exists(Bys.CBDLearnerPage.ShowingLbl, ElementCriteria.IsVisible)) { string origNumbOfReflectionsOnShowingLbl = DataUtils.GetStringAfterCharacter(CLP.ShowingLbl.Text, "f", 2); } /// 3. Add a reflection LearnerRelectionObject LR = CLP.AddReflection(); /// 4. Assert that the Reflections tab label increased by 1 Assert.AreEqual(Int32.Parse(origNumbOfReflectionsOnReflectionsTab) + 1, Int32.Parse(DataUtils.GetStringBetweenCharacters(CLP.ReflectionsTab.Text, "(", ")"))); /// 5. Assert that the label within the Reflections tab increased by 1 // Bug RCPSC-264: "Learner->Add Reflection: "Showing" label does not update after learner adds reflection" // Uncomment and run the test when fixed if (browser.Exists(Bys.CBDLearnerPage.ShowingLbl, ElementCriteria.IsVisible)) { //Assert.AreEqual(Int32.Parse(origNumbOfReflectionsOnShowingLbl) + 1, Int32.Parse(DataUtils.GetStringAfterCharacter(CLP.ShowingLbl.Text, "f", 2))); } /// 5. Assert that the table contains the reflection Assert.True(ElemGet.Grid_ContainsRecord(browser, CLP.ReflectionsTbl, Bys.CBDLearnerPage.ReflectionsTblBdy, LR.ReflectionTitle, "td", Bys.CBDLearnerPage.TableFirstBtn, Bys.CBDLearnerPage.TableNextBtn)); }
public void UserCanCompleteAllActivities() { // Only going to run this in Chrome. I create activities in other test methods, so we already cross-browser test that an activity can be // completed in all browsers in those tests. If we were to run this method in all browsers, especially IE, it would just increase run time // unneccessarily if (BrowserName == BrowserNames.Chrome) { /// 1. Create a Mainport user and Login UserInfo NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP); LoginPage LP = Navigation.GoToLoginPage(browser); MyDashboardPage DP = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]); /// 2. Add 1 activity for all of section 1's activity types /// 3. Add 1 activity for all of section 2's activity types /// 4. Add 1 activity for all of section 3's activity types foreach (Constants.MainportActivityTypes activityType in Enum.GetValues(typeof(Constants.MainportActivityTypes))) { // This will fail until https://code.premierinc.com/issues/browse/RCPSC-772 is fixed. Once fixed, then make sure the Reading dropdown // By is updated and run the test removing this If statement if (activityType != Constants.MainportActivityTypes.Sec2_Reading_FixedCredits1) { EnterCPDActivityPage EAP = DP.ClickAndWait(DP.EnterACPDActivityBtn); EAP.AddActivityThenSubmit(activityType, "10", true); } } } }
public void ObserverCanCompleteObservation() { /// 1. Create learner and observer users and login as a learner LoginPage LP = Navigation.GoToLoginPage(browser); LRUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.LR); OBUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.OB); CBDLearnerPage CLP = LP.LoginAsNewUser(UserUtils.UserRole.LR, LRUser.Username, LRUser.Password); /// 2. Request an observation from the observer CLP.RequestObservationForEPA("Transition to Discipline", "Performing preoperative assessments for ASA 1 or 2 patients who will be undergoing a minor scheduled surgical procedure", OBUser.FullName, "Part A: Direct observation - Form 1"); /// 3. Log out and then log in as the observer that the learner requested CLP.ClickAndWait(CLP.LogoutLnk); Navigation.GoToLoginPage(browser); CBDObserverPage OP = LP.LoginAsNewUser(UserUtils.UserRole.OB, OBUser.Username, OBUser.Password); /// 4. Accept the Pending observation request OP.AcceptOrDeclineAssignment(LRUser.FullName, "Part A: Direct observation - Form 1", "Accept"); /// 5. Open the Complete Assessment form for the observation request and complete the observation OP.CompleteAssessment(LRUser.FullName, "Part A: Direct observation - Form 1"); }
//[Test] public void sandboxtest() { UserInfo NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP); LoginPage LP = Navigation.GoToLoginPage(browser); MyDashboardPage DP = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]); EnterCPDActivityPage EAP = DP.ClickAndWait(DP.EnterACPDActivityBtn); Activity ConferenceActivity = EAP.AddActivityThenSendToHoldingArea(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf, "10", true); }
public void PERTraineeAdvancesAllStagesWRequiredMilestones() { // Ignoring this test in IE and Firefox because this test needs to upload files. See the following document // explaining why we can not do that in these browsers: https://code.premierinc.com/docs/display/PGHLMSDOCS/General if (BrowserName == BrowserNames.Chrome || BrowserName == BrowserNames.Firefox) { /// 1. Create a trainee user, login, complete all required milestones, submit the portfolio // We are using a try catch here for the following reason. This test is one of the very first test that gets run during the build. For // some reason, the RegisterUser API fails to complete and throws a 500 error whenever the first test gets set off on the grid. So if // the error happens, then we will just call the API again in the Catch block and proceed UserInfo newTrainee = new UserInfo(); try { newTrainee = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.LR); } catch { newTrainee = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.LR); } newTrainee = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.TraineePER); PERHelperMethods.AsTrainee_CompleteRequiredMilestones_ThenSubmitPortfolio(browser, newTrainee.Username); /// 2. Log in as a Credential Staff member and assign 2 referees to the trainee PERHelperMethods.AsCredentialStaff_AssignTraineeTo1stAnd2ndRefs(browser, newTrainee.FullName, UserUtils.Referee1PERFullName, UserUtils.Referee2PERFullName); /// 3. Login as the first and then second referee, fill the questionnaire to advance the trainee, click Save and Finish PERHelperMethods.AsReferee_ApproveTrainee(browser, UserUtils.Referee1PERLogin, newTrainee.FullName); PERHelperMethods.AsReferee_ApproveTrainee(browser, UserUtils.Referee2PERLogin, newTrainee.FullName); /// 4. Login as the trainee and verify that the Review Stage says Credentials Unit, and verify that the Referee labels are correct LoginPage LP = Navigation.GoToLoginPage(browser); PERTraineePage TP = LP.LoginAsExistingUser(UserUtils.UserRole.TraineePER, newTrainee.Username, ConfigurationManager.AppSettings["LoginPassword"]); Assert.AreEqual(TP.ReviewStageValueLbl.Text, "Credentials Unit"); Assert.AreEqual(TP.Referee1PERValueLbl.Text.Trim(), UserUtils.Referee1PERFullName); Assert.AreEqual(TP.Referee2PERValueLbl.Text.Trim(), UserUtils.Referee2PERFullName); LP.Logout(); /// 5. Log in as a Credential Staff member, click on Assign assessors, then assign 2 assessors PERHelperMethods.AsCredentialStaff_AssignTraineeTo1stAnd2ndAssessors(browser, newTrainee.FullName, UserUtils.Assessor1PERFullName, UserUtils.Assessor2PERFullName); /// 6. Login as both assessors and mark all milestones as achieved. PERHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor1PERLogin, newTrainee.FullName); PERHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor2PERLogin, newTrainee.FullName); /// 7. Login as the CU and mark the trainee as Not Achieved for a final review PERHelperMethods.AsCredentialStaff_MarkTraineeAsAchievedOrNotAchieved(browser, newTrainee.FullName, true); /// 8. Login as the trainee and verify that the Review Stage says Achieved LoginPage LP2 = Navigation.GoToLoginPage(browser); PERTraineePage TP2 = LP2.LoginAsExistingUser(UserUtils.UserRole.TraineePER, newTrainee.Username, ConfigurationManager.AppSettings["LoginPassword"]); Assert.AreEqual(TP2.ReviewStageValueLbl.Text, "Achieved"); } }
public void DiplomaTraineeAdvancesAllStagesWRequiredMilestones() { // Ignoring this test in IE and Firefox because this test needs to upload files. See the following document // explaining why we can not do that in these browsers: https://code.premierinc.com/docs/display/PGHLMSDOCS/General if (BrowserName == BrowserNames.Chrome) { /// 1. Create a trainee user, login, complete and assign all required milestones to a clinical supervisor // We are using a try catch here for the following reason. This test is one of the very first test that gets run during the build. For // some reason, the RegisterUser API fails to complete and throws a 500 error whenever the first test gets set off on the grid. So if // the error happens, then we will just call the API again in the Catch block and proceed UserInfo newTrainee = new UserInfo(); try { newTrainee = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.LR); } catch { newTrainee = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.LR); } newTrainee = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.TraineeDiploma); DiplomaHelperMethods.AsTrainee_SubmitAllRequiredMilestones(browser, newTrainee.Username, UserUtils.ClinicalSupervisor1DiplomaFullName); /// 2. As the CS, mark the trainee's portfolio is achieved DiplomaHelperMethods.AsCS_MarkAllMilestonesAchieved(browser, UserUtils.ClinicalSupervisor1DiplomaLogin, newTrainee.FullName); /// 3. As the trainee, submit the portfolio DiplomaHelperMethods.AsTrainee_SubmitPortfolio(browser, newTrainee.Username); /// 4. As the diploma director, mark the trainee's portfolio as achieved DiplomaHelperMethods.AsDD_MarkPortfolioAsAchieved(browser, UserUtils.DiplDirector1DiplomaLogin, newTrainee.FullName); /// 5. As the faculty of medicine, mark the trainee's portfolio as achieved DiplomaHelperMethods.AsFacOfMed_MarkMarkPortfolioAAsAchieved(browser, UserUtils.FacultyOfMed1DiplomaLogin, newTrainee.FullName); /// 6. As the credential staff unit, mark the trainee as achieved, record a payment, and assign 2 assessors DiplomaHelperMethods.AsCU_MarkAsAchievedRecordPaymentAndAssign2Assessors(browser, newTrainee.FullName, UserUtils.Assessor1DiplomaFullName, UserUtils.Assessor2DiplomaFullName); /// 7. As both assessors, mark all of the trainee's milestones as achieved DiplomaHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor1DiplomaLogin, newTrainee.FullName); DiplomaHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor2DiplomaLogin, newTrainee.FullName); /// 8. As the credential staff unit, make a final review and mark the trainee as achieved DiplomaHelperMethods.AsCU_MakeFinalReview_MarkAchieved(browser, newTrainee.FullName); /// 9. Login as the trainee, and verify that the Review Stage label has been updated to Achieved LoginPage LP = Navigation.GoToLoginPage(browser); DiplomaTraineePage TP = LP.LoginAsExistingUser(UserUtils.UserRole.TraineeDiploma, newTrainee.Username, ConfigurationManager.AppSettings["LoginPassword"]); Assert.AreEqual(TP.ReviewStageValueLbl.Text, "Achieved"); } }
public void UserCanCreateAGoal() { // Remove this if statement when bug https://code.premierinc.com/issues/browse/RCPSC-793 is fixed if (BrowserName == BrowserNames.Chrome) { /// 1. Create a Mainport user and Login UserInfo NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP); LoginPage LP = Navigation.GoToLoginPage(browser); MyDashboardPage DP = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]); /// 2. Click the Add a Goal button, fill in the information, click Next, then click Close string goalName = DP.AddAGoal(); /// 3. Verify that the goals table populates with this goal Assert.True(ElemGet.Grid_ContainsRecord(browser, DP.GoalsTbl, Bys.MyDashboardPage.GoalsTblBody, 0, goalName, "span")); } }
public void DiplomaTraineeGets3rdAssessorAndGetsMarksNotAchieved() { // Ignoring this test in IE and Firefox because this test needs to upload files. See the following document // explaining why we can not do that in these browsers: https://code.premierinc.com/docs/display/PGHLMSDOCS/General if (BrowserName == BrowserNames.Chrome) { /// 1. Create a trainee user, login, complete and assign all milestones to a clinical supervisor UserInfo newTrainee = new UserInfo(); newTrainee = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.TraineeDiploma); DiplomaHelperMethods.AsTrainee_SubmitAllMilestones(browser, newTrainee.Username, UserUtils.ClinicalSupervisor1DiplomaFullName); /// 2. As the CS, mark the trainee's portfolio is achieved DiplomaHelperMethods.AsCS_MarkAllMilestonesAchieved(browser, UserUtils.ClinicalSupervisor1DiplomaLogin, newTrainee.FullName); /// 3. As the trainee, submit the portfolio DiplomaHelperMethods.AsTrainee_SubmitPortfolio(browser, newTrainee.Username); /// 4. As the diploma director, mark the trainee's portfolio as achieved DiplomaHelperMethods.AsDD_MarkPortfolioAsAchieved(browser, UserUtils.DiplDirector1DiplomaLogin, newTrainee.FullName); /// 5. As the faculty of medicine, mark the trainee's portfolio as achieved DiplomaHelperMethods.AsFacOfMed_MarkMarkPortfolioAAsAchieved(browser, UserUtils.FacultyOfMed1DiplomaLogin, newTrainee.FullName); /// 6. As the credential staff unit, mark the trainee as achieved, record a payment, and assign 2 assessors DiplomaHelperMethods.AsCU_MarkAsAchievedRecordPaymentAndAssign2Assessors(browser, newTrainee.FullName, UserUtils.Assessor1DiplomaFullName, UserUtils.Assessor2DiplomaFullName); /// 7. Login as both assessors. For the first assessor, mark all milestones as achieved. For the other, mark 1 of the milestones as /// Not Achieved DiplomaHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor1DiplomaLogin, newTrainee.FullName); DiplomaHelperMethods.AsAssessor_RejectTrainee(browser, UserUtils.Assessor2DiplomaLogin, newTrainee.FullName); /// 8. Login as a Credential Staff member, and assign a third referee DiplomaHelperMethods.AsCredentialStaff_AssignTraineeTo3rdAssessor(browser, newTrainee.FullName, UserUtils.Assessor3DiplomaFullName); /// 9. Login as the 3rd assesor and approve the trainee DiplomaHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor3DiplomaLogin, newTrainee.FullName); /// 10. As the credential staff unit, make a final review and mark the trainee as not achieved DiplomaHelperMethods.AsCU_MakeFinalReview_MarkNotAchieved(browser, newTrainee.FullName); /// 11. Login as the trainee, and verify that the Review Stage label has been updated to Not Achieved LoginPage LP = Navigation.GoToLoginPage(browser); DiplomaTraineePage TP = LP.LoginAsExistingUser(UserUtils.UserRole.TraineeDiploma, newTrainee.Username, "test"); Assert.AreEqual(TP.ReviewStageValueLbl.Text, "Not Achieved"); } }
public void DeclinedExpiredTableUpdatesAfterObserverMakesChanges() { /// 1. Create learner and observer users and login as a learner LoginPage LP = Navigation.GoToLoginPage(browser); // We are using a try catch here for the following reason. This test sometimes is the very first test that gets run during the build. For some reason, the // RegisterUser API fails to complete and throws a 500 error whenever the first test gets set off on the grid. So if the error happens, then we will // just call the API again in the Catch block and proceed UserInfo LRUser = null; try { LRUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.LR); } catch { LRUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.LR); } OBUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.OB); CBDLearnerPage CLP = LP.LoginAsNewUser(UserUtils.UserRole.LR, LRUser.Username, LRUser.Password); /// 2. Request an observation from the observer CLP.RequestObservationForEPA("Transition to Discipline", "Performing preoperative assessments for ASA 1 or 2 patients who will be undergoing a minor scheduled surgical procedure", OBUser.FullName, "Part A: Direct observation - Form 1"); /// 3. Log out and then log in as the observer that the learner requested CLP.ClickAndWaitBasePage(CLP.LogoutLnk); Navigation.GoToLoginPage(browser); CBDObserverPage OP = LP.LoginAsNewUser(UserUtils.UserRole.OB, OBUser.Username, OBUser.Password); /// 4. Decline the Pending observation request OP.AcceptOrDeclineAssignment(LRUser.FullName, "Part A: Direct observation - Form 1", "Decline"); OP.ExpandTable(OP.ExpiredDeclinedTblHdr, "", "expand"); Assert.True(ElemGet.Grid_ContainsRecord(Browser, OP.ExpiredDeclinedTbl, Bys.CBDObserverPage.ExpiredDeclinedTblRowBody, 0, LRUser.FullName, "td")); /// 5. Remove the declined request and verify that the table disappears. The table should disappear at this point /// because there was only 1 declined request to begin with OP.RemoveExpiredDeclinedRequest(LRUser.FullName, "Part A: Direct observation - Form 1"); Assert.True(browser.FindElements(Bys.CBDObserverPage.ExpiredDeclinedTblRowBody).Count == 0); /// 6. Switch to the Archived Observations tab and verify that the request shows there OP.SwitchToTab(OP.ArchivedObsTab); Assert.True(ElemGet.Grid_ContainsRecord(Browser, OP.ArchivedObservationsTbl, Bys.CBDObserverPage.ArchivedObservationsTblRowBody, 0, LRUser.FullName, "td")); }
public void ActivityAwaitingValidationShowsInCoorespondingTable() { /// 1. Create a Mainport user and Login UserInfo NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP); LoginPage LP = Navigation.GoToLoginPage(browser); MyDashboardPage DP = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]); /// 2. Enter an activity which requires credit validation EnterCPDActivityPage EAP = DP.ClickAndWait(DP.EnterACPDActivityBtn); Activity Actvity = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec2_BulkJournalReadingwithTranscript_ValidationRequired, "10"); /// 3. Click the My Holding Area table, then verify that the activity appears in the Activity Awaiting Credit Validation table MyHoldingAreaPage MP = DP.ClickAndWaitBasePage(DP.MyHoldingAreaTab); Assert.True(ElemGet.Grid_ContainsRecord(browser, MP.AwaitingCredValidationTbl, Bys.MyHoldingAreaPage.AwaitingCredValidationTblBody, 0, Actvity.ActivityName, "a")); }
public void MainCycleAdvancesToMain2CycleAfter400Credits() { // Not running this test on Feb 1st of any year, because Mainport has some weird gracce period rule where the user gets auto-advanced without // the Admin having to manually advance him, so it messes with the test if (DateTime.Now.Date.ToString() != "2/1/2018 12:00:00 AM") { /// 1. Create a Mainport user, which has a cycle start date 6 years prior, then Login. We are using a date 6 years in the past because /// the end date of the cycle needs to be a past date for the user to be able to advance, and the Main cycle is 5 years UserInfo NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP, null, null, DateTime.Now.AddYears(-6).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)); LoginPage LP = Navigation.GoToLoginPage(browser); MyDashboardPage DP = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]); /// 2. Submit an activity totalling 400 credits, Enter an activity date that falls within the cycle date range. /// NOTE: If the activity date falls within the cycle date's last year for a Main cycle, then we wont need to credit validate string actDate = DateTime.Now.AddYears(-1).ToString("MM/dd/yyyy", CultureInfo.InvariantCulture); EnterCPDActivityPage EAP = DP.ClickAndWait(DP.EnterACPDActivityBtn); Activity ConferenceAct = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf, "400", true, actDate); /// 3. Login to Lifetime Support and validate the credit that needs validated, if applicable. See note above in step 2 about credit validation. /// Depending on what day of the year this test is run, it may need credit validation LSHelp.Login(browser, "lkaveti", "password"); LSHelp.GoToParticipantProgramPage(browser, "Royal College of Physicians", NewUser.FullName, "Maintenance of Certification"); MainportHelperMethods.ValidateCreditsIfApplicable(browser, NewUser, ConferenceAct); /// 4. Click on the Details tab and verify that the UI displays Complete for the Status label // First we have to wait for the windows service to process the credits. LSHelp.WaitForProgramCreditsWindowsService(browser, "400 (of 400)"); Assert.AreEqual("Complete", LSHelp.GetProgramDetail(browser, "Status")); /// 5. Add a Main cycle adjustment, then verify that the UI displays In Progress for the Status label, and "Main 2nd or Later Cycle" for the /// program label. NOTE: We can not automate the "automatic" cycle advacement because it relies on a windows service that gets run overnight. /// Going from Main 1 to Main2/EXT, etc. usually occurs automatically for clients with the overnight windows service. We are sort of hacking /// the system by manually setting this user to Main 2, and not truly testing that a user gets put into Main 2 once he meets his credit /// minimum. Basically, you can place a user into any cycle through LTS, even if the user did not meet credit minimum LSHelp.RCP_AddProgramAdjustment(browser, NewUser.FullName, LSConstants.AdjustmentCodes.MainProgram, DateTime.Now.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)); Assert.AreEqual(DateTime.Now.ToString("M/d/yyyy", CultureInfo.InvariantCulture), LSHelp.GetProgramDetail(browser, "Starts")); Assert.AreEqual("Main 2nd or Later Cycle", LSHelp.GetProgramDetail(browser, "Program")); /// 6. Go back to Mainport and verify that the user is in a new cycle by checking that the credits reset to 0 Navigation.GoToMyDashboardPage(browser); Assert.AreEqual("0", DP.TotalCreditsSubmittedValueLbl.Text); Assert.AreEqual("0", DP.TotalCreditsAppliedValueLbl.Text); } }
public void UserCanSendActivityToHoldingAreaThenCompleteActivity() { /// 1. Create a Mainport user and Login UserInfo NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP); LoginPage LP = Navigation.GoToLoginPage(browser); MyDashboardPage DP = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]); /// 2. Click the Enter a CPD Activity button, fill in the fields, click Send to Holding Area, then click Close /// Do this again for a second activity EnterCPDActivityPage EAP = DP.ClickAndWait(DP.EnterACPDActivityBtn); Activity ConferenceActivity = EAP.AddActivityThenSendToHoldingArea(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf, "10", true); DP.ClickAndWait(DP.EnterACPDActivityBtn); Activity ConferenceActivity2 = EAP.AddActivityThenSendToHoldingArea(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf, "10", true); /// 3. Verify that the activity shows in the My Holding Area table Assert.True(ElemGet.Grid_ContainsRecord(browser, DP.MyHoldingAreaTbl, Bys.MyDashboardPage.MyHoldingAreaTblBody, 0, ConferenceActivity2.ActivityName, "span")); /// 4. Click the View More button underneath the My Holding Area table, then verify that the activity is showing in the /// Incomplete Activities. Click Complete Activity, then click the Continue button and complete the activity and verify /// that it disappears from the Incomplete Activites table MyHoldingAreaPage MP = DP.ClickAndWait(DP.ViewMoreBtn); Assert.True(ElemGet.Grid_ContainsRecord(browser, MP.IncompleteActivitiesTbl, Bys.MyHoldingAreaPage.IncompleteActivitiesTblBody, 0, ConferenceActivity2.ActivityName, "a")); MP.ClickCompleteActivityBtn(MP.IncompleteActivitiesTbl, Bys.MyHoldingAreaPage.IncompleteActivitiesTblBodyRow, ConferenceActivity2.ActivityName); // Not running this in firefox. For some reason, when I enter the date in the above AddActivityThenSendToHoldingArea method, the date enters fine // and the activity completes, but when I open the activity from this window, then the date isnt there, so this is an automation bug. Revisit if (BrowserName != BrowserNames.Firefox) { EAP.ClickAndWait(EAP.ContinueBtn); EAP.ClickAndWait(EAP.OptionalTabSubmitBtn); EAP.CloseBtn.Click(); // Very tired right now. Add dynamic wait here later Thread.Sleep(5000); browser.SwitchTo().DefaultContent(); Assert.False(ElemGet.Grid_ContainsRecord(browser, MP.IncompleteActivitiesTbl, Bys.MyHoldingAreaPage.IncompleteActivitiesTblBody, 0, ConferenceActivity2.ActivityName, "a")); } }
public void UserCanDeleteActivityFromMyHoldingArea() { /// 1. Create a Mainport user and Login UserInfo NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP); LoginPage LP = Navigation.GoToLoginPage(browser); MyDashboardPage DP = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]); /// 2. Click the Enter a CPD Activity button, fill in the fields, click Continue, then click Send to Holding Area, then click Close EnterCPDActivityPage EAP = DP.ClickAndWait(DP.EnterACPDActivityBtn); Activity ConferenceActivity = EAP.AddActivityThenSendToHoldingArea(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf, "10", true); /// 3. Click the My Holding Area tab, click the X button to delete the activity, then verify that it disappears from the Incomplete Activites table MyHoldingAreaPage MP = DP.ClickAndWaitBasePage(DP.MyHoldingAreaTab); MP.DeleteActivity(ConferenceActivity.ActivityName); Assert.False(ElemGet.Grid_ContainsRecord(browser, MP.IncompleteActivitiesTbl, Bys.MyHoldingAreaPage.IncompleteActivitiesTblBody, 0, ConferenceActivity.ActivityName, "a")); }
public void DiplomaTraineeAndAssessorAdditionalInfoFeature() { // Ignoring this test in IE and Firefox because this test needs to upload files. See the following document // explaining why we can not do that in these browsers: https://code.premierinc.com/docs/display/PGHLMSDOCS/General if (BrowserName == BrowserNames.Chrome) { /// 1. Create a trainee user, login, complete and assign all required milestones to a clinical supervisor UserInfo newTrainee = new UserInfo(); newTrainee = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.TraineeDiploma); List <string> milestoneNames = DiplomaHelperMethods.AsTrainee_SubmitAllMilestones(browser, newTrainee.Username, UserUtils.ClinicalSupervisor1DiplomaFullName); /// 2. As the CS, mark the trainee's portfolio is achieved DiplomaHelperMethods.AsCS_MarkAllMilestonesAchieved(browser, UserUtils.ClinicalSupervisor1DiplomaLogin, newTrainee.FullName); /// 3. As the trainee, submit the portfolio DiplomaHelperMethods.AsTrainee_SubmitPortfolio(browser, newTrainee.Username); /// 4. As the diploma director, mark the trainee's portfolio as achieved DiplomaHelperMethods.AsDD_MarkPortfolioAsAchieved(browser, UserUtils.DiplDirector1DiplomaLogin, newTrainee.FullName); /// 5. As the faculty of medicine, mark the trainee's portfolio as achieved DiplomaHelperMethods.AsFacOfMed_MarkMarkPortfolioAAsAchieved(browser, UserUtils.FacultyOfMed1DiplomaLogin, newTrainee.FullName); /// 6. As the credential staff unit, mark the trainee as achieved, record a payment, and assign 2 assessors DiplomaHelperMethods.AsCU_MarkAsAchievedRecordPaymentAndAssign2Assessors(browser, newTrainee.FullName, UserUtils.Assessor1DiplomaFullName, UserUtils.Assessor2DiplomaFullName); /// 7. Login as both assessors. For the first assessor, mark all milestones as achieved. For the second assessor, request additional information /// from the trainee. DiplomaHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor1DiplomaLogin, newTrainee.FullName); DiplomaHelperMethods.AsAssessor_RequestAdditionalInfo(browser, UserUtils.Assessor2DiplomaLogin, newTrainee.FullName, milestoneNames[0]); /// 8. Login as the trainee and then send the additional information to the assessor string additionalInfo = "here is the additional info"; DiplomaHelperMethods.AsTrainee_SendAdditionalInfo(browser, newTrainee.Username, milestoneNames[0], additionalInfo); /// 8. Login as the assessor and verify that the assessor got the additional information Assert.True(DiplomaHelperMethods.AsAssessor_VerifyAdditionalInfo(browser, UserUtils.Assessor2DiplomaLogin, newTrainee.FullName, milestoneNames[0], additionalInfo)); /// 9. Advance the trainee to Achieved DiplomaHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor2DiplomaLogin, newTrainee.FullName); DiplomaHelperMethods.AsCU_MakeFinalReview_MarkAchieved(browser, newTrainee.FullName); } }
public void ObvCntGraphUpdatesAfterObserverCompletesAssessment() { /// 1. Create learner and observer users and login as the learner LoginPage LP = Navigation.GoToLoginPage(browser); LRUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.LR); OBUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.OB); CBDLearnerPage CLP = LP.LoginAsNewUser(UserUtils.UserRole.LR, LRUser.Username, LRUser.Password); /// 2. Store the EPA observation count of EPA1.1 from the graph now, so that when the observer completes an observation, we can Assert /// the EPA observation count increased from this stored count CLP.StoreObvsCntFromEPAObvCntGraph(CLP.EPAObservCntChrt, "EPA 1.1"); /// 3. Request an observation CLP.RequestObservationForEPA("Transition to Discipline", "Performing preoperative assessments for ASA 1 or 2 patients who will be undergoing a minor scheduled surgical procedure", OBUser.FullName, "Part A: Direct observation - Form 1"); /// 4. Log out and then log in as the observer that the learner requested CLP.ClickAndWait(CLP.LogoutLnk); Navigation.GoToLoginPage(browser); CBDObserverPage OP = LP.LoginAsNewUser(UserUtils.UserRole.OB, OBUser.Username, OBUser.Password); /// 5. Accept the Pending observation request and complete the Assessment form OP.AcceptAndCompleteObservation(LRUser.FullName, "Part A: Direct observation - Form 1"); /// 6. Log out and then log in as the learner CLP.ClickAndWait(CLP.LogoutLnk); Navigation.GoToLoginPage(browser); LP.LoginAsExistingUser(UserUtils.UserRole.LR, LRUser.Username, LRUser.Password); /// 7. Verify that the EPA count has increased on the main graph Assert.AreEqual(CLP.PreviousEPAObvsCntFromEPAObvGraph + 1, CLP.GetEPAObsvCntFromEPAObsGraph(CLP.EPAObservCntChrt, "EPA 1.1"), "The EPA1.1 count on the graph has not increased after the observer completed the observation"); /// 8. Open the Reports form and verify the EPA count on there CLP.ClickAndWait(CLP.ViewMoreRptsLnk); CLP.ReportsFormReportSelElem.SelectByText("EPA Observation Count"); CLP.ClickAndWait(CLP.ReportsFormShowBtn); Assert.AreEqual(CLP.PreviousEPAObvsCntFromEPAObvGraph + 1, CLP.GetEPAObsvCntFromEPAObsGraph(CLP.ReportsFormEPAObservCntChrt, "EPA 1.1"), "The EPA1.1 count on the graph has not increased after the observer completed the observation"); }
public void PERTraineeAdvancesAllStagesWRequiredMilestones() { // Ignoring this test in IE and Firefox because this test needs to upload files. See the following document // explaining why we can not do that in these browsers: https://code.premierinc.com/docs/display/PGHLMSDOCS/General if (BrowserName == BrowserNames.Chrome || BrowserName == BrowserNames.Firefox) { /// 1. Create a trainee user, login, complete all required milestones, submit the portfolio UserInfo newTrainee = new UserInfo(); newTrainee = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.TraineePER); PERHelperMethods.AsTrainee_CompleteRequiredMilestones_ThenSubmitPortfolio(browser, newTrainee.Username); /// 2. Log in as a Credential Staff member and assign 2 referees to the trainee PERHelperMethods.AsCredentialStaff_AssignTraineeTo1stAnd2ndRefs(browser, newTrainee.FullName, UserUtils.Referee1PERFullName, UserUtils.Referee2PERFullName); /// 3. Login as the first and then second referee, fill the questionnaire to advance the trainee, click Save and Finish PERHelperMethods.AsReferee_ApproveTrainee(browser, UserUtils.Referee1PERLogin, newTrainee.FullName); PERHelperMethods.AsReferee_ApproveTrainee(browser, UserUtils.Referee2PERLogin, newTrainee.FullName); /// 4. Login as the trainee and verify that the Review Stage says Credentials Unit, and verify that the Referee labels are correct LoginPage LP = Navigation.GoToLoginPage(browser); PERTraineePage TP = LP.LoginAsExistingUser(UserUtils.UserRole.TraineePER, newTrainee.Username, "test"); Assert.AreEqual(TP.ReviewStageValueLbl.Text, "Credentials Unit"); Assert.AreEqual(TP.Referee1PERValueLbl.Text.Trim(), UserUtils.Referee1PERFullName); Assert.AreEqual(TP.Referee2PERValueLbl.Text.Trim(), UserUtils.Referee2PERFullName); LP.Logout(); /// 5. Log in as a Credential Staff member, click on Assign assessors, then assign 2 assessors PERHelperMethods.AsCredentialStaff_AssignTraineeTo1stAnd2ndAssessors(browser, newTrainee.FullName, UserUtils.Assessor1PERFullName, UserUtils.Assessor2PERFullName); /// 6. Login as both assessors and mark all milestones as achieved. PERHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor1PERLogin, newTrainee.FullName); PERHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor2PERLogin, newTrainee.FullName); /// 7. Login as the CU and mark the trainee as Not Achieved for a final review PERHelperMethods.AsCredentialStaff_MarkTraineeAsAchievedOrNotAchieved(browser, newTrainee.FullName, true); /// 8. Login as the trainee and verify that the Review Stage says Achieved LoginPage LP2 = Navigation.GoToLoginPage(browser); PERTraineePage TP2 = LP2.LoginAsExistingUser(UserUtils.UserRole.TraineePER, newTrainee.Username, "test"); Assert.AreEqual(TP2.ReviewStageValueLbl.Text, "Achieved"); } }
public void UserCanEditActivityOnMyMOCPage() { /// 1. Create a Mainport user and Login UserInfo NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP); LoginPage LP = Navigation.GoToLoginPage(browser); MyDashboardPage DP = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]); /// 2. Enter an activity EnterCPDActivityPage EAP = DP.ClickAndWait(DP.EnterACPDActivityBtn); Activity NewConferenceActivity = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf, "20", true); /// 3. Click to the MyMOC page, click on the View link for the activity that was created, click on the Pencil icon in the Activities table on the popup, /// then verify that the information on this form is correct // Gotta wait for the windows service first to apply the credits MainportHelperMethods.WaitForCreditsToBeApplied(browser, DP, Bys.MyDashboardPage.TotalCreditsAppliedValueLbl, "20"); MyMOCPage MP = DP.ClickAndWaitBasePage(DP.MyMOCTab); MP.OpenEditActivityForm(MP.GroupLearnTblAccrActRowViewLnk, NewConferenceActivity.ActivityName); /// 4. Edit the activity. Change accredited to not accredited. Change the credits from 20 to 10. Change the name. Close the form. Verify that the /// amount of credits gets updated on all related labels, verify that the activity was moved from the accredited table to the not accredited table, /// and verify the name change Activity EditedConferenceActivity = EAP.EditActivity(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf, "10", false); Browser.SwitchTo().DefaultContent(); MP.ClickAndWaitBasePage(MP.MyDashboardTab); MainportHelperMethods.WaitForCreditsToBeApplied(browser, DP, Bys.MyDashboardPage.TotalCreditsAppliedValueLbl, "5"); // Overall label DP.ClickAndWaitBasePage(DP.MyMOCTab); Assert.AreEqual("5 of 400", MP.OverallCreditsAppliedLbl.Text); // Credits Applied to Date labels Assert.AreEqual(EditedConferenceActivity.Credits + " Credits", MP.GroupLearnTblCreditsAppliedValueLbl.Text); // Credits Reported column Assert.AreEqual("-", MP.GroupLearnTblAccrActRowCredsRptLbl.Text); Assert.AreEqual(EditedConferenceActivity.Credits, MP.GroupLearnTblUnaccrActRowCredsRptLbl.Text); /// 5. Click back to the Dashboard page and verify that the credit amount change is reflected there MP.ClickAndWaitBasePage(MP.MyDashboardTab); Assert.AreEqual("5", DP.TotalCreditsSubmittedValueLbl.Text); Assert.AreEqual("5", DP.TotalCreditsAppliedValueLbl.Text); }
public void PERTraineeGets3rdAssessorAndGetsMarksNotAchieved() { // Ignoring this test in IE and Firefox because this test needs to upload files. See the following document // explaining why we can not do that in these browsers: https://code.premierinc.com/docs/display/PGHLMSDOCS/General if (BrowserName == BrowserNames.Chrome) { /// 1. Create a trainee user, login, complete all milestones, submit the portfolio UserInfo newTrainee = new UserInfo(); newTrainee = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.TraineePER); PERHelperMethods.AsTrainee_CompleteRequiredMilestones_ThenSubmitPortfolio(browser, newTrainee.Username); /// 2. Log in as a Credential Staff member and assign 2 referees to the trainee PERHelperMethods.AsCredentialStaff_AssignTraineeTo1stAnd2ndRefs(browser, newTrainee.FullName, UserUtils.Referee1PERFullName, UserUtils.Referee2PERFullName); /// 3. Login as the first and then second referee, fill the questionnaire to advance the trainee, click Save and Finish PERHelperMethods.AsReferee_ApproveTrainee(browser, UserUtils.Referee1PERLogin, newTrainee.FullName); PERHelperMethods.AsReferee_ApproveTrainee(browser, UserUtils.Referee2PERLogin, newTrainee.FullName); /// 4. Log in as a Credential Staff member, click on Assign assessors, then assign 2 assessors PERHelperMethods.AsCredentialStaff_AssignTraineeTo1stAnd2ndAssessors(browser, newTrainee.FullName, UserUtils.Assessor1PERFullName, UserUtils.Assessor2PERFullName); /// 5. Login as both assessors. For the first assessor, mark all milestones as achieved. For the other, mark 1 of the milestones as /// Not Achieved PERHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor1PERLogin, newTrainee.FullName); PERHelperMethods.AsAssessor_RejectTrainee(browser, UserUtils.Assessor2PERLogin, newTrainee.FullName); /// 6. Login as a Credential Staff member, and assign a third referee PERHelperMethods.AsCredentialStaff_AssignTraineeTo3rdAssessor(browser, newTrainee.FullName, UserUtils.Assessor3PERFullName); /// 7. Login as the 3rd assessor and approve the trainee PERHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor3PERLogin, newTrainee.FullName); /// 8. Login as the CU and mark the trainee as Not Achieved for a final review PERHelperMethods.AsCredentialStaff_MarkTraineeAsAchievedOrNotAchieved(browser, newTrainee.FullName, false); /// 9. Login as the trainee and verify that the Review Stage says Not Achieved LoginPage LP = Navigation.GoToLoginPage(browser); PERTraineePage TP = LP.LoginAsExistingUser(UserUtils.UserRole.TraineePER, newTrainee.Username, ConfigurationManager.AppSettings["LoginPassword"]); Assert.AreEqual(TP.ReviewStageValueLbl.Text, "Not Achieved"); } }
public void PERTraineeAndAssessorAdditionalInfoFeature() { // Ignoring this test in IE and Firefox because this test needs to upload files. See the following document // explaining why we can not do that in these browsers: https://code.premierinc.com/docs/display/PGHLMSDOCS/General if (BrowserName == BrowserNames.Chrome) { /// 1. Create a trainee user, login, complete all milestones, and submit the portfolio UserInfo newTrainee = new UserInfo(); newTrainee = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.TraineePER); List <string> milestoneNames = PERHelperMethods.AsTrainee_CompleteAllMilestones_ThenSubmitPortfolio(browser, newTrainee.Username); /// 2. Log in as a Credential Staff member and assign 2 referees to the trainee PERHelperMethods.AsCredentialStaff_AssignTraineeTo1stAnd2ndRefs(browser, newTrainee.FullName, UserUtils.Referee1PERFullName, UserUtils.Referee2PERFullName); /// 3. Login as the first and then second referee, fill the questionnaire to advance the trainee, click Save and Finish PERHelperMethods.AsReferee_ApproveTrainee(browser, UserUtils.Referee1PERLogin, newTrainee.FullName); PERHelperMethods.AsReferee_ApproveTrainee(browser, UserUtils.Referee2PERLogin, newTrainee.FullName); /// 4. Log in as a Credential Staff member, click on Assign assessors, then assign 2 assessors PERHelperMethods.AsCredentialStaff_AssignTraineeTo1stAnd2ndAssessors(browser, newTrainee.FullName, UserUtils.Assessor1PERFullName, UserUtils.Assessor2PERFullName); /// 5. Login as both assessors. For the first assessor, mark all milestones as achieved. For the second assessor, request additional information /// from the trainee. PERHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor1PERLogin, newTrainee.FullName); PERHelperMethods.AsAssessor_RequestAdditionalInfo(browser, UserUtils.Assessor2PERLogin, newTrainee.FullName, milestoneNames[0]); /// 6. Login as the trainee and then send the additional information to the assessor string additionalInfo = "here is the additional info"; PERHelperMethods.AsTrainee_SendAdditionalInfo(browser, newTrainee.Username, milestoneNames[0], additionalInfo); /// 7. Login as the assessor and verify that the assessor got the additional information Assert.True(PERHelperMethods.AsAssessor_VerifyAdditionalInfo(browser, UserUtils.Assessor2PERLogin, newTrainee.FullName, milestoneNames[0], additionalInfo)); /// 8. Advance the trainee to Achieved PERHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor2PERLogin, newTrainee.FullName); PERHelperMethods.AsCredentialStaff_MarkTraineeAsAchievedOrNotAchieved(browser, newTrainee.FullName, true); } }
public void CreditLabelVerification() { // Not runing firefox right now due to Lifetime support Actions button being a hover dropdown. Revisit this and fix in firefox, // Will probably just need to add a line of code to hover over Actions instead of clicking on it. if (BrowserName == BrowserNames.Chrome || BrowserName == BrowserNames.InternetExplorer) { /// 1. Create a Mainport user and Login UserInfo NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP); LoginPage LP = Navigation.GoToLoginPage(browser); MyDashboardPage DP = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]); /// 2. Add at least 1 activity for each activity type /// 3. Choose 1 activity which cuts the credits in half per hour/article when the No radio button is clicked. EnterCPDActivityPage EAP = DP.ClickAndWait(DP.EnterACPDActivityBtn); Activity ConferenceActivity = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf, "10", false); /// 4. Choose 1 activity which has a fixed amount of credits DP.ClickAndWait(DP.EnterACPDActivityBtn); Activity FellowshipActivity = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec2_Fellowship_FixedCredits25); /// 5. Choose 1 activity which triples credits DP.ClickAndWait(DP.EnterACPDActivityBtn); Activity AccreditedSelAssessActivity = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec3_AccreditedSelfAssessmentPrograms_CreditsTripled, "10"); /// 6. Choose 1 activity that requires validation DP.ClickAndWait(DP.EnterACPDActivityBtn); Activity BulkJournalActivity = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec2_BulkJournalReadingwithTranscript_ValidationRequired, "10"); /// 7. Log on to the Lifetime Support site and validate the credit LSHelp.Login(browser, "lkaveti", "password"); LSHelp.ValidateCredit(browser, "Royal College of Physicians", NewUser.FullName, "Maintenance of Certification", BulkJournalActivity.ActivityName); /// 8. Go back to the Mainport app, and on the My Dashboard page, verify that the Total Credits Submitted and Applied labels reflect the amount of /// credits that were added above. Also verify the "MOC Section Requirements" graph labels get reflected. Based on the above activites, the /// Submitted label should have 5 for Conference, + 25 for fellowship, + 30 for accreditedselfassess, + 10 for bulkjournal. So total we should see 70 Navigation.GoToMyDashboardPage(browser); MainportHelperMethods.WaitForCreditsToBeApplied(browser, DP, Bys.MyDashboardPage.TotalCreditsAppliedValueLbl, "70"); Assert.AreEqual("70", DP.TotalCreditsSubmittedValueLbl.Text); Assert.AreEqual("70", DP.TotalCreditsAppliedValueLbl.Text); Assert.AreEqual(string.Format("Section 1Group Learning{0}/25 Credits", ConferenceActivity.Credits), DP.MOCSectionReqsGraphGroupLearningCreditLbl.GetAttribute("textContent")); int totalSelfLearningCredits = Int32.Parse(FellowshipActivity.Credits) + Int32.Parse(BulkJournalActivity.Credits); // For the Section 2 Self Learning activities, we completed 2 of them, so we have to add those 2 credits to get the total label Assert.AreEqual(string.Format("Section 2Self Learning{0}/25 Credits", totalSelfLearningCredits.ToString()), DP.MOCSectionReqsGraphSelfLearningCreditLbl.GetAttribute("textContent")); Assert.AreEqual(string.Format("Section 3Assessment{0}/25 Credits", AccreditedSelAssessActivity.Credits), DP.MOCSectionReqsGraphAssessmentCreditLbl.GetAttribute("textContent")); /// 9. On the My MOC page, verify that the credits are reflected in the Overall label, reflected in each Credits Applied to Date labels, /// and in each row under the Credits Reported column MyMOCPage MP = DP.ClickAndWaitBasePage(DP.MyMOCTab); // Overall label Assert.AreEqual("70 of 400", MP.OverallCreditsAppliedLbl.Text); // Credits Applied to Date labels Assert.AreEqual(ConferenceActivity.Credits + " Credits", MP.GroupLearnTblCreditsAppliedValueLbl.Text); Assert.AreEqual(totalSelfLearningCredits.ToString() + " Credits", MP.SelfLearningTblCreditsAppliedValueLbl.Text); Assert.AreEqual(AccreditedSelAssessActivity.Credits + " Credits", MP.AssessmentTblCreditsAppliedValueLbl.Text); // Credits Reported column Assert.AreEqual(ConferenceActivity.Credits, MP.GroupLearnTblUnaccrActRowCredsRptLbl.Text); Assert.AreEqual(FellowshipActivity.Credits, MP.SelfLearningTblPlanLearnActRowCredsRptLbl.Text); Assert.AreEqual(BulkJournalActivity.Credits, MP.SelfLearningTblScanActRowCredsRptLbl.Text); Assert.AreEqual(AccreditedSelAssessActivity.Credits, MP.AssessmentTblKnowledgeAssRowCredsRptLbl.Text); /// 10. Click on the View link for one of the activities, verify the credits are reflected correctly on the popup, click the Pencil icon /// to view the activity in read-only mode to verify that it appears MP.OpenViewActivitiesForm(MP.GroupLearnTblUnaccrActRowViewLnk); Assert.AreEqual(ElemGet.Grid_GetCellTextByRowNameAndColumnName(MP.ViewActivitiesFormActivitiesTbl, MP.ViewActivitiesFormActivitiesTblThead, Bys.MyMOCPage.ViewActivitiesFormActivitiesTblBody, ConferenceActivity.ActivityName, "td", "Credits Reported"), ConferenceActivity.Credits); MP.ClickAndWait(MP.ViewActivitiesFormCloseBtn); } }
public void AddRandomUsersForRyanMethod() { // Users with specific details. fr_CA for french // Diploma //UserInfo blah = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.CSDiploma, // "DIPCSUser1_2DOM_CECITY", null, null, "DIPClinicalSupervisor", "1", "fr_CA", "2DOM"); //UserInfo blah2 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.DDDiploma, // "DIPDDUser1_2DOM_CECITY", null, null, "DIPDiplomaDirector", "1", "fr_CA", "2DOM"); //UserInfo blah3 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.FOMDiploma, // "DIPFOMUser1_2DOM_CECITY", null, null, "DIPFacultyOfMedicine", "1", "fr_CA", "2DOM"); //UserInfo blah4 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.ASRDiploma, // "DIPASRUser1_2DOM_CECITY", null, null, "DIPAssessor", "1", "fr_CA", "2DOM"); //UserInfo blah5 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.ASRDiploma, // "DIPASRUser2_2DOM_CECITY", null, null, "DIPAssessor", "2", "fr_CA", "2DOM"); //UserInfo blah6 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.ASRDiploma, // "DIPASRUser3_2DOM_CECITY", null, null, "DIPAssessor", "3", "fr_CA", "2DOM"); //UserInfo blah7 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.TraineeDiploma, // "DIPTrainUser1_2DOM_CECITY", null, null, "DIPTrainee", "1", "fr_CA", "2DOM"); //UserInfo blah8 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.TraineeDiploma, // "DIPTrainUser2_2DOM_CECITY", null, null, "DIPTrainee", "2", "fr_CA", "2DOM"); //UserInfo blah9 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.TraineeDiploma, // "DIPTrainUser3_2DOM_CECITY", null, null, "DIPTrainee", "3", "fr_CA", "2DOM"); UserInfo blah17 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.TraineePER, "blah-F", null, null, "PERTrainee", "3", "fr_CA", "2POM-F"); //// PER UserInfo blah10 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.REF, "PERREFUser1_2POM-F", null, null, "PERReferee", "1", "en_US", "2POM-F"); UserInfo blah11 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.REF, "PERREFUser2_2POM-F", null, null, "PERReferee", "2", "en_US", "2POM-F"); UserInfo blah12 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.ASRPER, "PERASRUser1_2POM-F", null, null, "PERAssessor", "1", "en_US", "2POM-F"); UserInfo blah13 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.ASRPER, "PERASRUser2_2POM-F", null, null, "PERAssessor", "2", "en_US", "2POM-F"); UserInfo blah14 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.TraineePER, "PERTrainUser1_2POM-F", null, null, "PERTrainee", "1", "en_US", "2POM-F"); UserInfo blah15 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.TraineePER, "PERTrainUser2_2POM-F", null, null, "PERTrainee", "2", "en_US", "2POM-F"); UserInfo blah16 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.TraineePER, "PERTrainUser3_2POM-F", null, null, "PERTrainee", "3", "en_US", "2POM-F"); //*************************************************************************************************************** //// Users without specific details //// Diploma //UserInfo bblah = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.CSDiploma, // "DIPCSUser1", null, null, "DIPClinicalSupervisor", "1", "en_US", "1 DR PER"); //UserInfo bblah2 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.DDDiploma, // "DIPDDUser1", null, null, "DIPDiplomaDirector", "1", "en_US", "1 DR PER"); //UserInfo bblah3 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.FOMDiploma, // "DIPFOMUser1", null, null, "DIPFacultyOfMedicine", "1", "en_US", "1 DR PER"); //UserInfo bblah4 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.ASRDiploma, // "DIPAssUser1", null, null, "DIPAssessor", "1", "en_US", "1 DR PER"); //UserInfo bblah5 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.ASRDiploma, // "DIPAssUser2", null, null, "DIPAssessor", "2", "en_US", "1 DR PER"); //UserInfo bblah6 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.ASRDiploma, // "DIPAssUser3", null, null, "DIPAssessor", "3", "en_US", "1 DR PER"); //UserInfo bblah7 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.TraineeDiploma, // "DIPTrainUser1", null, null, "DIPTrainee", "1", "en_US", "1 DR PER"); //UserInfo bblah8 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.TraineeDiploma, // "DIPTrainUser2", null, null, "DIPTrainee", "2", "en_US", "1 DR PER"); //UserInfo bblah9 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.TraineeDiploma, // "DIPTrainUser3", null, null, "DIPTrainee", "3", "en_US", "1 DR PER"); //// PER //UserInfo bblah10 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.REF, // "PERREFUser1", null, null, "PERReferee", "1", "en_US", "1 DR PER"); //UserInfo bblah11 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.REF, // "PERREFUser2", null, null, "PERReferee", "2", "en_US", "1 DR PER"); //UserInfo bblah12 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.ASRPER, // "PERASRUser1", null, null, "PERAssessor", "1", "en_US", "1 DR PER"); //UserInfo bblah13 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.ASRPER, // "PERASRUser2", null, null, "PERAssessor", "2", "en_US", "1 DR PER"); //UserInfo bblah14 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.TraineePER, // "PERTrainUser1", null, null, "PERTrainee", "1", "en_US", "1 DR PER"); //UserInfo bblah15 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.TraineePER, // "PERTrainUser2", null, null, "PERTrainee", "2", "en_US", "1 DR PER"); //UserInfo bblah16 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.TraineePER, // "PERTrainUser3", null, null, "PERTrainee", "3", "en_US", "1 DR PER"); }