public void PublishDialog_ViaPublishItems_Success() { var ribbon = AddinRibbonController.Initialize(_app); //Insert an item to modify var ws = InsertOKToModifyItemData(ribbon, AddinTestUtility.ModifiableItemName, false); //getSecondInstance //Modify a cell var modValRow = 3; var modValCol = 2; int newVal = Convert.ToInt32(ExcelAutoUtility.GetCellValue(ws, modValRow, modValCol)) + 1; ExcelAutoUtility.SetCellValue(ws, modValRow, modValCol, newVal); //Publish //Get ribbon tab automation element again to get its newly-enabled instances of descendant buttons ribbon.Refresh(); ribbon.InvokeButton(AddinRibbonButton.PublishItems); var pubDlg = PublishDriver.FindFromParent(ribbon.ExcelElement); pubDlg.SelectPublishVerifySuccess(); //Verify ribbon.Refresh(); Assert.AreEqual(string.Empty, ribbon.ValidateExpectedButtonStates(ExpectedButtonStates.OnPublishableItemCell)); ws = InsertOKToModifyItemData(ribbon, AddinTestUtility.ModifiableItemName, true); //getSecondInstance Assert.AreEqual(newVal, Convert.ToInt32(ExcelAutoUtility.GetCellValue(ws, modValRow, modValCol))); }
private Excel.Worksheet InsertOKToModifyItemData(AddinRibbonController ribbon, string itemName, bool getSecondInstance) { //Login if (!getSecondInstance) { AddinTestUtility.LoginExpectSuccess(ribbon, AddinTestUtility.LoginEmail, AddinTestUtility.LoginPsw); } //Insert item ribbon.InvokeButton(AddinRibbonButton.InsertItem); var itemDlg = InsertItemDriver.FindFromParent(ribbon.ExcelElement); itemDlg.SelectedItem = itemName; itemDlg.AllowPublish = true; itemDlg.SelectInsertVerifySuccess(); //Wait for item to be inserted in item-named worksheet var sheetName = itemName; if (getSecondInstance) { sheetName += " 1"; } var ws = ExcelAutoUtility.GetWorkSheetWithTimeout(_wb.Wb, sheetName, AddinTestUtility.WebServiceResponsePopulateTimeout); //Wait for access to worksheet to be stable ExcelAutoUtility.WaitForNewWorksheetToBeAccessible(ws); return(ws); }
public void LoginDialog_RememberMeSelectedLogout_RememberEmailOnlyOnStartup() { var ribbon = AddinRibbonController.Initialize(_app); //Login and select Remember Me var loginDlg = AddinTestUtility.OpenLoginDialog(ribbon); loginDlg.Email = AddinTestUtility.LoginEmail; loginDlg.Password = AddinTestUtility.LoginPsw; loginDlg.RememberMe = true; loginDlg.SelectOkVerifySuccess(); //Logout ribbon.InvokeButton(AddinRibbonButton.Logout); ribbon.ValidateSingleButtonState(AddinRibbonButton.Logout, RibbonButtonState.NonVisible); //Close excel _wb.Dispose(); _app.Dispose(); //Re-open excel _app = ExcelAutoUtility.OpenAndInstallAddin("TheAddIn", out _facade); _wb = new ExcelWorkbookWrapper(_app.App.Workbooks.Add()); ribbon = AddinRibbonController.Initialize(_app); //Validate not auto-logged-in, but email addr remembered loginDlg = AddinTestUtility.OpenLoginDialog(ribbon); Assert.AreEqual(AddinTestUtility.LoginEmail, loginDlg.Email); Assert.AreEqual(string.Empty, loginDlg.Password); //Close dialog loginDlg.SelectCancelVerifySuccess(); }
public void Cleanup() { try { //Close modal dialog if any (to avoid excel addin corruption when process later killed) if (_wb != null && _wb.Wb != null) { var excel = ExcelAutoUtility.GetAppElementFromApp(_wb.Wb.Application); UIAUtility.FindModalDialogIfAnyAndClose(excel); _wb.Dispose(); } } catch (Exception ex) { Debug.WriteLine("Error closing workbook (will fall through to excel app kill): " + ex.Message); } if (!Debugger.IsAttached) //use excel-per-instance only when running from VS - blows up running automated from console { if (_app != null) { _app.Dispose(); } } }
public void LoginDialog_RememberMeDeselected_NotLoggedInOnStartup() { var ribbon = AddinRibbonController.Initialize(_app); //Login and select Remember Me var loginDlg = AddinTestUtility.OpenLoginDialog(ribbon); loginDlg.Email = AddinTestUtility.LoginEmail; loginDlg.Password = AddinTestUtility.LoginPsw; loginDlg.RememberMe = false; loginDlg.SelectOkVerifySuccess(); //Close excel _wb.Dispose(); _app.Dispose(); //Re-open excel _app = ExcelAutoUtility.OpenAndInstallAddin("TheAddIn", out _facade); _wb = new ExcelWorkbookWrapper(_app.App.Workbooks.Add()); //Validate not auto-logged-in ribbon = AddinRibbonController.Initialize(_app); Assert.AreEqual(RibbonButtonState.Enabled, ribbon.GetButtonState(AddinRibbonButton.Login)); }
public void InsertItemDialog_InsertViaOK_Success() { var ribbon = AddinRibbonController.Initialize(_app); //Login AddinTestUtility.LoginExpectSuccess(ribbon, AddinTestUtility.LoginEmail, AddinTestUtility.LoginPsw); //Insert item ribbon.InvokeButton(AddinRibbonButton.InsertItem); var itemDlg = InsertItemDriver.FindFromParent(ribbon.ExcelElement); itemDlg.SelectedItem = AddinTestUtility.ReadonlyItemName; itemDlg.SelectInsertVerifySuccess(); //Wait for item to be inserted in item-named worksheet var newlyCreatedItemSheet = ExcelAutoUtility.GetWorkSheetWithTimeout(_wb.Wb, AddinTestUtility.ReadonlyItemName, AddinTestUtility.WebServiceResponsePopulateTimeout); ribbon.Refresh(); Assert.AreEqual(string.Empty, ribbon.ValidateExpectedButtonStates(ExpectedButtonStates.OnNonPublishableItemCell)); //Validate cell content from inserted item Assert.AreEqual("Sumlev", ExcelAutoUtility.GetCellValue(newlyCreatedItemSheet, 1, 1)); Assert.AreEqual(-10.42333312, ExcelAutoUtility.GetCellValue(newlyCreatedItemSheet, 58, 46)); }
private void CreateItemDialogCreateSimpleItem(AddinRibbonController ribbon, string newItemName, string newItemDescr) { //Login AddinTestUtility.LoginExpectSuccess(ribbon, AddinTestUtility.LoginEmail, AddinTestUtility.LoginPsw); //Create a data range from which to create item var sheet = _wb.Wb.ActiveSheet as Excel.Worksheet; ExcelAutoUtility.SetCellValue(sheet, 1, 1, "colA"); ExcelAutoUtility.SetCellValue(sheet, 1, 2, "colB"); ExcelAutoUtility.SetCellValue(sheet, 2, 1, 1); ExcelAutoUtility.SetCellValue(sheet, 2, 2, 2); ExcelAutoUtility.SetCellValue(sheet, 3, 1, 3); ExcelAutoUtility.SetCellValue(sheet, 3, 2, 4); var range = sheet.get_Range("A1", "B3"); range.Select(); //Create item ribbon.InvokeButton(AddinRibbonButton.Create); var createItemDlg = CreateItemDriver.FindFromParent(ribbon.ExcelElement); createItemDlg.Name = newItemName; createItemDlg.Desc = newItemDescr; createItemDlg.SelectCreateVerifySuccess(); }
public static void ClassInitialize(TestContext context) { AddinTestUtility.SetEnvironmentVars(AddinTestUtility.DemoUrl); if (Debugger.IsAttached) //use excel-per-instance only when running from VS - blows up running automated from console { _app = ExcelAutoUtility.OpenAndInstallAddin("TheAddIn", out _facade); } }
public void Initialize() { if (!Debugger.IsAttached) //use excel-per-instance only when running from VS - blows up running automated from console { _app = ExcelAutoUtility.OpenAndInstallAddin("TheAddIn", out _facade); } _wb = new ExcelWorkbookWrapper(_app.App.Workbooks.Add()); //Ensure logged out at start _facade.Logout(); }
public void CreateItemDialog_CreateSecondItemSameSheet_Success() { var ribbon = AddinRibbonController.Initialize(_app); //Login AddinTestUtility.LoginExpectSuccess(ribbon, AddinTestUtility.LoginEmail, AddinTestUtility.LoginPsw); //Insert item ribbon.InvokeButton(AddinRibbonButton.InsertItem); var itemDlg = InsertItemDriver.FindFromParent(ribbon.ExcelElement); itemDlg.SelectedItem = AddinTestUtility.ReadonlyItemName; itemDlg.AllowPublish = true; itemDlg.SelectInsertVerifySuccess(); //Wait for item to be inserted in item-named worksheet var newlyCreatedItemSheet = ExcelAutoUtility.GetWorkSheetWithTimeout(_wb.Wb, AddinTestUtility.ReadonlyItemName, AddinTestUtility.WebServiceResponsePopulateTimeout); ribbon.Refresh(); Assert.AreEqual(string.Empty, ribbon.ValidateExpectedButtonStates(ExpectedButtonStates.OnPublishableItemCell)); ExcelAutoUtility.SetCellValue(newlyCreatedItemSheet, 2, 48, "singleCellValue"); var range = newlyCreatedItemSheet.get_Range("AV2", "AV2"); range.Select(); //Force ribbon refresh in this special case of selecting range programmatically via excel automation //which does not result in ribbon refresh ribbon.ForceRibbonRefresh(); Assert.AreEqual(string.Empty, ribbon.ValidateExpectedButtonStates(ExpectedButtonStates.OnExistingAllowPublishItemSheetOffItemCell)); //Create the second item var newItemName = "uitest" + AddinTestUtility.GetUniqueSuffix(); var newItemDescr = "sample description #2"; ribbon.Refresh(); ribbon.InvokeButton(AddinRibbonButton.Create); var createItemDlg = CreateItemDriver.FindFromParent(ribbon.ExcelElement); createItemDlg.Name = newItemName; createItemDlg.Desc = newItemDescr; createItemDlg.SelectCreateVerifySuccess(); ribbon.Refresh(); Assert.AreEqual(string.Empty, ribbon.ValidateExpectedButtonStates(ExpectedButtonStates.OnPublishableItemCell)); }
public void LoginDialog_RememberMeSelected_LoggedInOnStartup() { var ribbon = AddinRibbonController.Initialize(_app); //Login and select Remember Me var loginDlg = AddinTestUtility.OpenLoginDialog(ribbon); loginDlg.Email = AddinTestUtility.LoginEmail; loginDlg.Password = AddinTestUtility.LoginPsw; loginDlg.RememberMe = true; loginDlg.SelectOkVerifySuccess(); //Close excel _wb.Dispose(); _app.Dispose(); //Re-open excel _app = ExcelAutoUtility.OpenAndInstallAddin("TheAddIn", out _facade); _wb = new ExcelWorkbookWrapper(_app.App.Workbooks.Add()); //Validate auto-logged-in ribbon = AddinRibbonController.Initialize(_app, true); //disableWaitForRibbonReady ribbon.PostInitializeSpecialCaseAutologgedIn(); ribbon.ValidateSingleButtonState(AddinRibbonButton.Logout, RibbonButtonState.Enabled, AddinTestUtility.AuthenticationTimeout); //Leave test in a logged-out / non-remember-me state ribbon.InvokeButton(AddinRibbonButton.Logout); ribbon.ValidateSingleButtonState(AddinRibbonButton.Logout, RibbonButtonState.NonVisible); loginDlg = AddinTestUtility.OpenLoginDialog(ribbon); loginDlg.Email = AddinTestUtility.LoginEmail; loginDlg.Password = AddinTestUtility.LoginPsw; loginDlg.RememberMe = false; loginDlg.SelectOkVerifySuccess(); ribbon.InvokeButton(AddinRibbonButton.Logout); ribbon.ValidateSingleButtonState(AddinRibbonButton.Logout, RibbonButtonState.NonVisible); }