/// <summary> /// Logs in as a trainee, clicks the Submit Portfolio button, then clicks the Submit button on the resulting popup, then logs out /// </summary> /// <param name="browser"></param> /// <param name="traineeLogin"></param> public static void AsTrainee_SubmitPortfolio(IWebDriver browser, string traineeLogin) { LoginPage LP = Navigation.GoToLoginPage(browser); DiplomaTraineePage TP = LP.LoginAsExistingUser(UserUtils.UserRole.TraineeDiploma, traineeLogin, "test"); TP.SubmitPortfolio(); TP.Logout(); }
/// <summary> /// Logs in as a trainee, selects "Needs Additional Information" in the Status drop down, clicks on the user-specified milestone, enters the user-specified /// text into the "Your Reply" text box, clicks Save, goes back to the Dashboard, clicks Save then logs out /// </summary> /// <param name="browser"></param> /// <param name="traineeLogin"></param> /// <param name="milestoneName">The milestone to click in the milestone table. The milestone you want to send additional info for</param> /// <param name="additionalInfoText"></param> public static void AsTrainee_SendAdditionalInfo(IWebDriver browser, string traineeLogin, string milestoneName, string additionalInfoText) { LoginPage LP = Navigation.GoToLoginPage(browser); DiplomaTraineePage TP = LP.LoginAsExistingUser(UserUtils.UserRole.TraineeDiploma, traineeLogin, "test"); TP.SubmitAdditionalInfo(milestoneName, additionalInfoText); TP.Logout(); }
/// <summary> /// Logs in as a trainee, clicks on each milestone, uploads a document, sends the milestone to the CS, then logs out. Note that for this to work, you /// must seed this data into your environment, meaning you have to create a program on Lifetime Support /// </summary> /// <param name="browser"></param> /// <param name="traineeLogin"></param> /// <param name="clinicalSupervisorFullName"></param> /// <returns></returns> public static List <string> AsTrainee_SubmitAllMilestones(IWebDriver browser, string traineeLogin, string clinicalSupervisorFullName) { LoginPage LP = Navigation.GoToLoginPage(browser); DiplomaTraineePage TP = LP.LoginAsNewUser(UserUtils.UserRole.TraineeDiploma, traineeLogin, "test"); List <string> milestoneNames = TP.CompleteAndSubmitAllMilestones(clinicalSupervisorFullName); TP.Logout(); return(milestoneNames); }
/// <summary> /// Enters text in the username and password field, clicks the login button, then waits for the URL /// of the Dashboard page to load /// </summary> /// <param name="role">Either "learner", "observer", "program admin", etc.</param> /// <param name="userName"></param> /// <param name="password"></param> public dynamic LoginAsExistingUser(UserUtils.UserRole role, string userName, string password) { // Login with a valid user UserNameTxt.Clear(); PasswordTxt.Clear(); UserNameTxt.SendKeys(userName); PasswordTxt.SendKeys(password); PasswordTxt.SendKeys(Keys.Tab); ClickAndWait(LoginBtn); switch (role) { case UserUtils.UserRole.LR: CBDLearnerPage LP = new CBDLearnerPage(Browser); LP.WaitForInitialize(); // Adding these if statements here because sometimes the graph doesnt appear after we login. It only happens about 5 percent of the time, // so DEV is not looking into it. So if the graph does not appear, then we will navigate to the already loaded page again // UPDATE: Added another if statement to refresh again. This was working perfectly before today (Today I increased the amount of parallel // tests, and also started running Firefox again, so the issue is either with Firefox, or with increasing the max parallel setting. The max // is set at 16 now, this never was an issue when max was set to 6) if (Browser.FindElements(By.Id("EPAChart")).Count == 0) { Browser.WaitForElement(Bys.RCPPage.CBDTab, ElementCriteria.IsVisible); ClickAndWaitBasePage(CBDTab); try { LP.WaitUntil(TimeSpan.FromSeconds(60), Criteria.CBDLearnerPage.EPAChartVisibleAndEnabledAndHasText); } catch { if (Browser.FindElements(By.Id("EPAChart")).Count == 0) { Browser.WaitForElement(Bys.RCPPage.CBDTab, ElementCriteria.IsVisible); ClickAndWaitBasePage(CBDTab); LP.WaitUntil(TimeSpan.FromSeconds(60), Criteria.CBDLearnerPage.EPAChartVisibleAndEnabledAndHasText); } } } return(LP); case UserUtils.UserRole.OB: CBDObserverPage OP = new CBDObserverPage(Browser); OP.WaitForInitialize(); return(OP); case UserUtils.UserRole.PA: CBDProgAdminPage PA = new CBDProgAdminPage(Browser); PA.WaitForInitialize(); return(PA); case UserUtils.UserRole.PD: CBDProgDirectorPage PD = new CBDProgDirectorPage(Browser); PD.WaitForInitialize(); return(PD); case UserUtils.UserRole.PGD: CBDProgDeanPage page = new CBDProgDeanPage(Browser); page.WaitForInitialize(); return(page); case UserUtils.UserRole.CUPER: MyDashboardPage PERCUMyDashboardPage = new MyDashboardPage(Browser); PERCUMyDashboardPage.WaitForInitialize(); PERCredentialStaffPage CP = PERCUMyDashboardPage.ClickAndWaitBasePage(PERCUMyDashboardPage.PERAFCTab); return(CP); case UserUtils.UserRole.CSDiploma: DiplomaClinicalSupervisorPage CSP = new DiplomaClinicalSupervisorPage(Browser); CSP.WaitForInitialize(); return(CSP); case UserUtils.UserRole.CUDiploma: MyDashboardPage DiplomaCUMyDashboardPage = new MyDashboardPage(Browser); DiplomaCUMyDashboardPage.WaitForInitialize(); DiplomaCredentialStaffPage DCUP = DiplomaCUMyDashboardPage.ClickAndWaitBasePage(DiplomaCUMyDashboardPage.MyDiplomaTab); return(DCUP); case UserUtils.UserRole.DDDiploma: DiplomaDirectorPage DD = new DiplomaDirectorPage(Browser); DD.WaitForInitialize(); return(DD); case UserUtils.UserRole.FOMDiploma: DiplomaFacOfMedicinePage FOMP = new DiplomaFacOfMedicinePage(Browser); FOMP.WaitForInitialize(); return(FOMP); case UserUtils.UserRole.MP: MyDashboardPage DP = new MyDashboardPage(Browser); DP.WaitForInitialize(); return(DP); case UserUtils.UserRole.TraineePER: PERTraineePage PTP = new PERTraineePage(Browser); PTP.WaitForInitialize(); return(PTP); case UserUtils.UserRole.TraineeDiploma: DiplomaTraineePage DTP = new DiplomaTraineePage(Browser); DTP.WaitForInitialize(); return(DTP); case UserUtils.UserRole.REF: PERRefereePage PERRP = new PERRefereePage(Browser); PERRP.WaitForInitialize(); return(PERRP); case UserUtils.UserRole.ASRPER: PERAssessorPage AP = new PERAssessorPage(Browser); AP.WaitForInitialize(); return(AP); case UserUtils.UserRole.ASRDiploma: DiplomaAssessorPage DAP = new DiplomaAssessorPage(Browser); DAP.WaitForInitialize(); return(DAP); } return(null); }
/// <summary> /// Logs out of the current user only if a user is currently logged in, enters text in the username and password field, /// clicks the login button, then waits for the URL of the Dashboard page to load /// </summary> /// <param name="role">Either "learner", "observer", "program admin", etc.</param> /// <param name="userName"></param> /// <param name="password"></param> /// <param name="newUser">true or false, depending on if it is a new user or not</param> public dynamic LoginAsNewUser(UserUtils.UserRole role, string userName, string password) { IWebElement acceptBtn = null; // Login with a valid user UserNameTxt.Clear(); PasswordTxt.Clear(); UserNameTxt.SendKeys(userName); PasswordTxt.SendKeys(password); PasswordTxt.SendKeys(Keys.Tab); ClickAndWait(LoginBtn); // For some reason, the Selenium click fails to make the RCP page login, it instead stays at the login page. // This happens maybe 5% of the time. So we will add a try catch block here to click the login button // again if it fails try { acceptBtn = Browser.WaitForElement(Bys.LoginPage.iAcceptBtn, TimeSpan.FromSeconds(10), ElementCriteria.IsVisible); } catch { ClickAndWait(LoginBtn); acceptBtn = Browser.WaitForElement(Bys.LoginPage.iAcceptBtn, ElementCriteria.IsVisible); } Thread.Sleep(0300); acceptBtn.Click(); // Depending on the role of the user that we use, we need to wait differently and return different pages switch (role) { case UserUtils.UserRole.LR: CBDLearnerPage LP = new CBDLearnerPage(Browser); LP.WaitForInitialize(); // Adding these if statements here because sometimes the graph doesnt appear after we login. It only happens about 5 percent of the time, // so DEV is not looking into it. So if the graph does not appear, then we will navigate to the already loaded page again // UPDATE: Added another if statement to refresh again. This was working perfectly before today (Today I increased the amount of parallel // tests, and also started running Firefox again, so the issue is either with Firefox, or with increasing the max parallel setting. The max // is set at 16 now, this never was an issue when max was set to 6) // UPDATE: Two if statements still didndt resolve the issue. Going to remove Navigation method, and instead click on the CBD tab and see // if that works if (Browser.FindElements(By.Id("EPAChart")).Count == 0) { Browser.WaitForElement(Bys.RCPPage.CBDTab, ElementCriteria.IsVisible); ClickAndWaitBasePage(CBDTab); try { LP.WaitUntil(TimeSpan.FromSeconds(60), Criteria.CBDLearnerPage.EPAChartVisibleAndEnabledAndHasText); } catch { if (Browser.FindElements(By.Id("EPAChart")).Count == 0) { Browser.WaitForElement(Bys.RCPPage.CBDTab, ElementCriteria.IsVisible); ClickAndWaitBasePage(CBDTab); LP.WaitUntil(TimeSpan.FromSeconds(60), Criteria.CBDLearnerPage.EPAChartVisibleAndEnabledAndHasText); } } } return(LP); case UserUtils.UserRole.OB: CBDObserverPage OP = new CBDObserverPage(Browser); OP.WaitForInitialize(); return(OP); case UserUtils.UserRole.PA: CBDProgAdminPage PA = new CBDProgAdminPage(Browser); PA.WaitForInitialize(); return(PA); case UserUtils.UserRole.TraineePER: PERTraineePage PTP = new PERTraineePage(Browser); PTP.WaitForInitialize(); return(PTP); case UserUtils.UserRole.TraineeDiploma: DiplomaTraineePage DTP = new DiplomaTraineePage(Browser); DTP.WaitForInitialize(); return(DTP); case UserUtils.UserRole.MP: MyDashboardPage DP = new MyDashboardPage(Browser); DP.WaitForInitialize(); return(DP); } return(null); }
/// <summary> /// Enters text in the username and password field, clicks the login button, then waits for the URL /// of the Dashboard page to load /// </summary> /// <param name="role">Either "learner", "observer", "program admin", etc.</param> /// <param name="userName"></param> /// <param name="password"></param> public dynamic LoginAsExistingUser(UserUtils.UserRole role, string userName, string password) { // Login with a valid user UserNameTxt.Clear(); PasswordTxt.Clear(); UserNameTxt.SendKeys(userName); PasswordTxt.SendKeys(password); PasswordTxt.SendKeys(Keys.Tab); ClickAndWait(LoginBtn); switch (role) { case UserUtils.UserRole.LR: CBDLearnerPage LP = new CBDLearnerPage(Browser); LP.WaitForInitialize(); // Adding this if statements here because sometimes the graph doesnt appear after we login. It only happens about 5 percent of the time, // so DEV is not looking into it. So if the graph does not appear, then we will navigate to the already loaded page again if (Browser.FindElements(By.Id("EPAChart")).Count == 0) { Navigation.GoToLearnerPage(Browser); LP.WaitUntil(TimeSpan.FromSeconds(30), Criteria.CBDLearnerPage.EPAChartVisibleAndEnabledAndHasText); } return(LP); case UserUtils.UserRole.OB: CBDObserverPage OP = new CBDObserverPage(Browser); OP.WaitForInitialize(); return(OP); case UserUtils.UserRole.PA: CBDProgAdminPage PA = new CBDProgAdminPage(Browser); PA.WaitForInitialize(); return(PA); case UserUtils.UserRole.PD: CBDProgDirectorPage PD = new CBDProgDirectorPage(Browser); PD.WaitForInitialize(); return(PD); case UserUtils.UserRole.PGD: CBDProgDeanPage page = new CBDProgDeanPage(Browser); page.WaitForInitialize(); return(page); case UserUtils.UserRole.CUPER: MyDashboardPage PERCUMyDashboardPage = new MyDashboardPage(Browser); PERCUMyDashboardPage.WaitForInitialize(); PERCredentialStaffPage CP = PERCUMyDashboardPage.ClickAndWaitBasePage(PERCUMyDashboardPage.PERAFCTab); return(CP); case UserUtils.UserRole.CSDiploma: DiplomaClinicalSupervisorPage CSP = new DiplomaClinicalSupervisorPage(Browser); CSP.WaitForInitialize(); return(CSP); case UserUtils.UserRole.CUDiploma: MyDashboardPage DiplomaCUMyDashboardPage = new MyDashboardPage(Browser); DiplomaCUMyDashboardPage.WaitForInitialize(); DiplomaCredentialStaffPage DCUP = DiplomaCUMyDashboardPage.ClickAndWaitBasePage(DiplomaCUMyDashboardPage.MyDiplomaTab); return(DCUP); case UserUtils.UserRole.DDDiploma: DiplomaDirectorPage DD = new DiplomaDirectorPage(Browser); DD.WaitForInitialize(); return(DD); case UserUtils.UserRole.FOMDiploma: DiplomaFacOfMedicinePage FOMP = new DiplomaFacOfMedicinePage(Browser); FOMP.WaitForInitialize(); return(FOMP); case UserUtils.UserRole.MP: MyDashboardPage DP = new MyDashboardPage(Browser); DP.WaitForInitialize(); return(DP); case UserUtils.UserRole.TraineePER: PERTraineePage PTP = new PERTraineePage(Browser); PTP.WaitForInitialize(); return(PTP); case UserUtils.UserRole.TraineeDiploma: DiplomaTraineePage DTP = new DiplomaTraineePage(Browser); DTP.WaitForInitialize(); return(DTP); case UserUtils.UserRole.REF: PERRefereePage PERRP = new PERRefereePage(Browser); PERRP.WaitForInitialize(); return(PERRP); case UserUtils.UserRole.ASRPER: PERAssessorPage AP = new PERAssessorPage(Browser); AP.WaitForInitialize(); return(AP); case UserUtils.UserRole.ASRDiploma: DiplomaAssessorPage DAP = new DiplomaAssessorPage(Browser); DAP.WaitForInitialize(); return(DAP); } return(null); }
/// <summary> /// Logs out of the current user only if a user is currently logged in, enters text in the username and password field, /// clicks the login button, then waits for the URL of the Dashboard page to load /// </summary> /// <param name="role">Either "learner", "observer", "program admin", etc.</param> /// <param name="userName"></param> /// <param name="password"></param> /// <param name="newUser">true or false, depending on if it is a new user or not</param> public dynamic LoginAsNewUser(UserUtils.UserRole role, string userName, string password) { IWebElement acceptBtn = null; // Login with a valid user UserNameTxt.Clear(); PasswordTxt.Clear(); UserNameTxt.SendKeys(userName); PasswordTxt.SendKeys(password); PasswordTxt.SendKeys(Keys.Tab); ClickAndWait(LoginBtn); // For some reason, the Selenium click fails to make the RCP page login, it instead stays at the login page. // This happens maybe 5% of the time. So we will add a try catch block here to click the login button // again if it fails try { acceptBtn = Browser.WaitForElement(Bys.LoginPage.iAcceptBtn, TimeSpan.FromSeconds(10), ElementCriteria.IsVisible); } catch { ClickAndWait(LoginBtn); acceptBtn = Browser.WaitForElement(Bys.LoginPage.iAcceptBtn, ElementCriteria.IsVisible); } Thread.Sleep(0300); acceptBtn.Click(); // Depending on the role of the user that we use, we need to wait differently and return different pages switch (role) { case UserUtils.UserRole.LR: CBDLearnerPage LP = new CBDLearnerPage(Browser); LP.WaitForInitialize(); // Adding this if statements here because sometimes the graph doesnt appear after we login. // It only happens about 5 percent of the time, so DEV is not looking into it. So if the // graph does not appear, then we will navigate to the already loaded page again if (Browser.FindElements(By.Id("EPAChart")).Count == 0) { Navigation.GoToLearnerPage(Browser); LP.WaitUntil(TimeSpan.FromSeconds(30), Criteria.CBDLearnerPage.EPAChartVisibleAndEnabledAndHasText); } return(LP); case UserUtils.UserRole.OB: CBDObserverPage OP = new CBDObserverPage(Browser); OP.WaitForInitialize(); return(OP); case UserUtils.UserRole.PA: CBDProgAdminPage PA = new CBDProgAdminPage(Browser); PA.WaitForInitialize(); return(PA); case UserUtils.UserRole.TraineePER: PERTraineePage PTP = new PERTraineePage(Browser); PTP.WaitForInitialize(); return(PTP); case UserUtils.UserRole.TraineeDiploma: DiplomaTraineePage DTP = new DiplomaTraineePage(Browser); DTP.WaitForInitialize(); return(DTP); case UserUtils.UserRole.MP: MyDashboardPage DP = new MyDashboardPage(Browser); DP.WaitForInitialize(); return(DP); } return(null); }