public void Run() { Mouse.DefaultMoveTime = 300; Keyboard.DefaultKeyPressTime = 100; Delay.SpeedFactor = 1.0; Ranorex.Unknown element = null; RanorexRepository repo = new RanorexRepository(); fnWriteToLogFile WriteToLogFile = new fnWriteToLogFile(); fnTimeMinusOverhead TimeMinusOverhead = new fnTimeMinusOverhead(); fnDumpStatsQ4 DumpStatsQ4 = new fnDumpStatsQ4(); fnWriteToErrorFile WriteToErrorFile = new fnWriteToErrorFile(); // Create new stopwatch Stopwatch MystopwatchTT = new Stopwatch(); MystopwatchTT.Reset(); MystopwatchTT.Start(); Stopwatch MystopwatchTotal = new Stopwatch(); MystopwatchTotal.Reset(); MystopwatchTotal.Start(); Stopwatch MystopwatchQ4 = new Stopwatch(); Stopwatch MystopwatchModuleTotal = new Stopwatch(); Stopwatch MystopwatchF1 = new Stopwatch(); Stopwatch MystopwatchTrade = new Stopwatch(); Global.LogFileIndentLevel++; Global.LogText = "IN fnCheckout"; WriteToLogFile.Run(); MystopwatchModuleTotal.Reset(); MystopwatchModuleTotal.Start(); // Click on CheckOut F12 button Global.LogText = @"Clicking on F12 Checkout"; WriteToLogFile.Run(); MystopwatchQ4.Reset(); MystopwatchQ4.Start(); if (Global.DomesticRegister) { // while(!repo.Retech.ButtonCheckout.Enabled) // change 1/8/18 // while( !Host.Local.TryFindSingle(repo.Retech.ButtonCheckoutInfo.AbsolutePath.ToString(), out element) ) while (!Host.Local.TryFindSingle(repo.Retech.DataContextShowCheckoutViewCommandInfo.AbsolutePath.ToString(), out element)) { if (Host.Local.TryFindSingle(repo.ContinueButtonCommandInfo.AbsolutePath.ToString(), out element)) { repo.ContinueButtonCommand.Click(); Global.LogText = @"Clicked on Continue Button - 1 in fnCheckout()"; WriteToLogFile.Run(); } Thread.Sleep(100); } // Keyboard.Press("{F12}"); // Try fix 1/31/18 while (!Host.Local.TryFindSingle(repo.Retech.RequestCashSettlementInfo.AbsolutePath.ToString(), out element)) { // 07-25-18 check for "Pick Up At Store Requests" pop-up if (!Host.Local.TryFindSingle(repo.PickupAtStorePopupNotifier.PickupAtStoreRequestPopUpInfo.AbsolutePath.ToString(), out element)) { Thread.Sleep(10); } else { Report.Log(ReportLevel.Info, "Mouse", "Mouse Left Down item 'PopupNotifierView' at 434;30.", repo.PickupAtStorePopupNotifier.SelfInfo, new RecordItemIndex(0)); repo.PickupAtStorePopupNotifier.Self.MoveTo("434;30"); Keyboard.Press("{ENTER}"); //Mouse.ButtonDown(System.Windows.Forms.MouseButtons.Left); Delay.Milliseconds(200); // repo.PopupNotifierView.Self.Click(); Thread.Sleep(100); } if (Host.Local.TryFindSingle(repo.Retech.NotInterestedCommandInfo.AbsolutePath.ToString(), out element)) { repo.Retech.NotInterestedCommand.Click(); Thread.Sleep(100); } if (repo.Retech.DataContextShowCheckoutViewCommand.Enabled) { repo.Retech.DataContextShowCheckoutViewCommand.Click(); } Thread.Sleep(300); if (Host.Local.TryFindSingle(repo.ContinueButtonCommandInfo.AbsolutePath.ToString(), out element)) { repo.ContinueButtonCommand.Click(); Global.LogText = @"Clicked on Continue Button - 1 in fnCheckout()"; WriteToLogFile.Run(); } Thread.Sleep(100); } // repo.Retech.DataContextShowCheckoutViewCommand.Click(); } else { // while(!repo.IPOS20167172.Self.Enabled) // { Thread.Sleep(100); } // repo.IPOS20167172.Self.PressKeys("{F12}"); if (repo.IPOS34069.F12TotalInfo.Exists(5000)) // 02-08-18 { } repo.IPOS34069.F12Total.PressKeys("{F12}"); // 02-08-18 if (Global.CurrentScenario == 47) { while (!repo.CustomerLookupPhone_Number.Enabled) { Thread.Sleep(100); } MystopwatchQ4.Start(); MystopwatchQ4.Reset(); // repo.CustomerLookupScreen.EdgePowerUpNumber.PressKeys("6364916031910400011"); repo.CustomerLookupPhone_Number.PressKeys("9727651234"); repo.CustomerLookupScreen.BtnSearch.Click(); while (!repo.CustomerLookupSelectF5.Enabled) { Thread.Sleep(100); } repo.CustomerLookupSelectF5.Click(); TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = @"Search for Customer"; Global.Module = "Finalize"; DumpStatsQ4.Run(); MystopwatchQ4.Reset(); MystopwatchQ4.Start(); repo.TransactionCustomerInformation.Email.Click("160;2"); Delay.Milliseconds(200); repo.TransactionCustomerInformation.Email.PressKeys("301 My Street"); Delay.Milliseconds(0); repo.TransactionCustomerInformation.LastName.Click("114;1"); Delay.Milliseconds(200); repo.TransactionCustomerInformation.LastName.PressKeys("9727651234"); Delay.Milliseconds(0); repo.TransactionCustomerInformation.Address1.Click("41;6"); Delay.Milliseconds(200); repo.TransactionCustomerInformation.Address1.PressKeys("My City"); Delay.Milliseconds(0); repo.TransactionCustomerInformation.Open.Click(); Delay.Milliseconds(200); repo.TransactionCustomerInformation.Open.Click(); Delay.Milliseconds(200); repo.ListItemsValues.ListItemAB.Click(); Delay.Milliseconds(200); repo.TransactionCustomerInformation.BtnAcceptButton.Click("23;27"); Delay.Milliseconds(200); repo.PopUpCustomerLookupUnavailable.OKF5.Click("17;22"); Delay.Milliseconds(200); TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = @"Enter Customer Information"; Global.Module = "Finalize"; DumpStatsQ4.Run(); } } Thread.Sleep(1000); // Check for Please select a charity to donate if (Host.Local.TryFindSingle(repo.RetechPeripheralHostWindow.PleaseSelectACharityToDonateInfo.AbsolutePath.ToString(), out element)) { repo.RetechPeripheralHostWindow.DeclineDonateNoThanks.Click(); Thread.Sleep(100); } if (Global.DomesticRegister) { Global.LogText = @"Waiting on Time to Check Out - in fnCheckout()"; WriteToLogFile.Run(); Thread.Sleep(300); while (!Host.Local.TryFindSingle(repo.Retech.TimeToCheckOutInfo.AbsolutePath.ToString(), out element)) { if (Host.Local.TryFindSingle(repo.ContinueButtonCommandInfo.AbsolutePath.ToString(), out element)) { repo.ContinueButtonCommand.Click(); Global.LogText = @"Clicked on Continue Button - 2 in fnCheckout()"; WriteToLogFile.Run(); Thread.Sleep(100); } Thread.Sleep(100); if (Host.Local.TryFindSingle(repo.Retech.AcknowledgeRelatedProductsCommandInfo.AbsolutePath.ToString(), out element)) { if (Host.Local.TryFindSingle(repo.Retech.AcknowledgeRelatedProductsCommandInfo.AbsolutePath.ToString(), out element)) { if (repo.Retech.AcknowledgeRelatedProductsCommand.Enabled) { Global.LogText = @"Clicking on acknowledge related products before F12"; WriteToLogFile.Run(); repo.Retech.AcknowledgeRelatedProductsCommand.Click(); Thread.Sleep(100); } } } else if (Host.Local.TryFindSingle(repo.Retech.ContinueF5_5_6_0_103Info.AbsolutePath.ToString(), out element)) { if (repo.Retech.ContinueF5_5_6_0_103.Enabled) { Global.LogText = @"Clicking on F5 Continue before F12"; WriteToLogFile.Run(); repo.Retech.ContinueF5_5_6_0_103.Click(); Thread.Sleep(100); repo.Retech.ButtonCheckout.Click(); Thread.Sleep(100); } } } TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = @"[F12] wait for payment icons"; Global.Module = "Finalize"; DumpStatsQ4.Run(); } MystopwatchQ4.Reset(); MystopwatchQ4.Start(); // Click on screen to make sure in focust - .focus not work //if(Global.DomesticRegister) 1-22-19 // repo.Retech.PaymentView.Click("689;82"); switch (Global.PayWithMethod) { case "Cash": Global.LogText = @"Waiting on Cash F5"; WriteToLogFile.Run(); if (Global.DomesticRegister) { repo.Retech.Self.Focus(); } Thread.Sleep(100); if (Global.DomesticRegister) { while (!repo.Retech.RequestCashSettlement.Enabled) { Thread.Sleep(500); } } else { while (!Host.Local.TryFindSingle(repo.FormPOS1.SelfInfo.AbsolutePath.ToString(), out element)) { Thread.Sleep(500); } //while(!repo.EnterSerialNumber.F5Cash.Enabled) { Thread.Sleep(500); } } Global.LogText = @"Found Cash F5 Enabled"; WriteToLogFile.Run(); break; case "Credit": case "PURCC": Global.LogText = @"Waiting on Manual Card F6"; WriteToLogFile.Run(); if (Global.DomesticRegister) { repo.Retech.Self.Focus(); } Thread.Sleep(100); if (Global.DomesticRegister) { while (!repo.Retech.RequestManualCardSettlement.Enabled) { Thread.Sleep(500); } } else { while (!repo.EnterSerialNumber.F5Cash.Enabled) { Thread.Sleep(500); } } Global.LogText = @"Found Manual Card F6 Enabled"; WriteToLogFile.Run(); break; } // Check for cash back if (Global.DomesticRegister && repo.Retech.AmountDue.TextValue.Substring(0, 1) == "(" && (Global.CurrentScenario == 37 || Global.CurrentScenario == 47) ) { Global.LogText = @"Clicking on Cash F5 button"; WriteToLogFile.Run(); // fix 1//22/18 while (!Host.Local.TryFindSingle(repo.Retech.RequestCashSettlementInfo.AbsolutePath.ToString(), out element)) { Thread.Sleep(100); } // end fix repo.Retech.RequestCashSettlement.Click(); Thread.Sleep(100); Global.LogText = @"Waiting on CashPaymentView"; WriteToLogFile.Run(); while (!repo.RetechCardPaymentView.CashPaymentView.Enabled) { Thread.Sleep(100); } Keyboard.Press("{Enter}"); } else { string BalanceDueText = ""; string BalTemp = ""; float BalanceDueAmount = 0.0F; string BalanceDueAmountTxt = ""; // Read Remaining Balance from screen if (Global.DomesticRegister) { BalanceDueText = repo.Retech.BalanceDue.TextValue; BalTemp = BalanceDueText.Substring(1, BalanceDueText.Length - 1); BalanceDueAmount = float.Parse(BalTemp); BalanceDueAmountTxt = Convert.ToString(BalanceDueAmount); } else { BalanceDueText = repo.IntListItemAmountDue.ToString(); BalanceDueText = BalanceDueText.Replace("\t", " "); BalTemp = BalanceDueText.Substring(35, 8); BalanceDueAmount = float.Parse(BalTemp); BalanceDueAmountTxt = Convert.ToString(BalanceDueAmount); } switch (Global.PayWithMethod) { case "Cash": // Click on Cash F5 button Global.LogText = @"Clicking on Cash F5 button"; WriteToLogFile.Run(); if (Global.DomesticRegister) { while (!Host.Local.TryFindSingle(repo.Retech.RequestCashSettlementInfo.AbsolutePath.ToString(), out element)) { Thread.Sleep(100); } // change 1/8/17 repo.Retech.RequestCashSettlement.Click(); while (!Host.Local.TryFindSingle(repo.RetechCardPaymentView.TxtAmountPaidInfo.AbsolutePath.ToString(), out element)) { Thread.Sleep(100); } // Enter amount paid repo.RetechCardPaymentView.TxtAmountPaid.TextValue = BalanceDueAmountTxt; repo.RetechCardPaymentView.TxtAmountPaid.PressKeys("{Enter}"); } else { repo.EnterSerialNumber.Self.PressKeys("{F5}"); // Enter amount paid repo.Amount.Self.PressKeys("{Enter}"); } TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = @"[F5] enter amount press Enter"; Global.Module = "Finalize"; DumpStatsQ4.Run(); break; case "Credit": if (Global.DomesticRegister) { // Click on Manual Card F6 button Global.LogText = @"Clicking on Manual Card F6 button"; WriteToLogFile.Run(); repo.Retech.RequestManualCardSettlement.Click(); while (!repo.RetechCardPaymentView.RunAsCreditCard.Enabled) { if (!Host.Local.TryFindSingle(repo.RetechCardPaymentView.RetrySameCardInfo.AbsolutePath.ToString(), out element)) { Global.LogText = @"Clicking on Retry same card"; WriteToLogFile.Run(); Global.TempErrorString = Global.LogText; WriteToErrorFile.Run(); repo.RetechCardPaymentView.RetrySameCard.Click(); Thread.Sleep(200); } Thread.Sleep(100); } // Click on Run as Credit button Global.LogText = @"Clicking on Run as Credit button"; WriteToLogFile.Run(); while (!Host.Local.TryFindSingle(repo.RetechCardPaymentView.RunAsCreditCardInfo.AbsolutePath.ToString(), out element)) { Thread.Sleep(100); } // change 1/8/17 repo.RetechCardPaymentView.RunAsCreditCard.Click(); string RetechVersion = Global.RetechVersion; string Sub = Global.RetechVersion.Substring(0, 4); // if(Global.RetechVersion.Substring(0,4) != "5.14") if (Global.RetechVersion.Substring(0, 4) == "5.13") { // ### For Retech 5.13 and below - see else code for Retech 5.14 while (!repo.RetechCardPaymentView.TxtCardNumber.Enabled) { if (Host.Local.TryFindSingle(repo.RetechCardPaymentView.RetrySameCardInfo.AbsolutePath.ToString(), out element)) { repo.RetechCardPaymentView.RetrySameCard.Click(); Thread.Sleep(200); } Thread.Sleep(100); } // Thread.Sleep(500); repo.RetechCardPaymentView.TxtCardNumber.TextValue = Global.CreditCardNumber; string aa = Global.CreditCardMonth + "/" + Global.CreditCardYear; repo.RetechCardPaymentView.TxtExpirationDate.TextValue = Global.CreditCardMonth + "/" + Global.CreditCardYear; repo.RetechCardPaymentView.TxtZipCode.TextValue = Global.CreditCardZip; repo.RetechCardPaymentView.ProcessCreditCardView.PressKeys("{Enter}"); // Thread.Sleep(100); while (!Global.AbortScenario && !Host.Local.TryFindSingle(repo.RetechCardPaymentView.Waiting_for_SignatureInfo.AbsolutePath.ToString(), out element)) { Thread.Sleep(100); if (Host.Local.TryFindSingle(repo.RetechCardPaymentView.TryAuthorizingAgainInfo.AbsolutePath.ToString(), out element)) { Global.AbortScenario = true; Global.TempErrorString = "Credit Card Unable to Process Payment - transaction voided"; WriteToErrorFile.Run(); Global.LogText = Global.TempErrorString; WriteToLogFile.Run(); Keyboard.Press("{Escape}"); Thread.Sleep(100); repo.Retech.DataContextVoidOrderCommand.Click(); Thread.Sleep(100); repo.GenericDialogView.Yesvoidthistransaction.Click(); Thread.Sleep(100); while (!repo.RetechAnotherTransaction.Visible) { Thread.Sleep(100); } } } } else { // ### This required for Retech 5.14 and above because Ranorex not see detail of new pinpad // 11/6/18 use WPF not UAI repo.RetechPeripheralHostWindow.SomeTabPageList.PinPadAcceptCommand.Click(); Thread.Sleep(100); repo.RetechPeripheralHostWindow.SomeTabPageList.PinPadCardNumber.TextValue = Global.CreditCardNumber; repo.RetechPeripheralHostWindow.SomeTabPageList.PinPadOK.Click(); repo.RetechPeripheralHostWindow.SomeTabPageList.PinPadMonth.TextValue = Global.CreditCardMonth; repo.RetechPeripheralHostWindow.SomeTabPageList.PinPadYear.TextValue = Global.CreditCardYear; repo.RetechPeripheralHostWindow.SomeTabPageList.PinPadOK.Click(); repo.RetechPeripheralHostWindow.PinPadZipCode.TextValue = Global.CreditCardZip; repo.RetechPeripheralHostWindow.SomeTabPageList.AcceptCommand.Click(); // 11/6/18 replace by above // repo.RetechPeripheralHostWindow.TabControl.Click("189;453"); // repo.RetechPeripheralHostWindow.TabControl.Click("31;84"); // Keyboard.Press(Global.CreditCardNumber); // repo.RetechPeripheralHostWindow.TabControl.Click("157;472"); // repo.RetechPeripheralHostWindow.TabControl.Click("44;115"); // Keyboard.Press(Global.CreditCardMonth + "{Tab}" + Global.CreditCardYear); // Thread.Sleep(200); // repo.RetechPeripheralHostWindow.TabControl.Click("93;466"); // Thread.Sleep(200); // repo.RetechPeripheralHostWindow.TabControl.Click("40;126"); // Thread.Sleep(350); // Keyboard.Press(Global.CreditCardZip); // repo.RetechPeripheralHostWindow.TabControl.Click("155;445"); // Thread.Sleep(100); } TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = @"[F6] enter Card info"; Global.Module = "Finalize"; DumpStatsQ4.Run(); MystopwatchQ4.Reset(); MystopwatchQ4.Start(); if (!Global.AbortScenario) { // 11/6/18 use WPF not UAI repo.RetechPeripheralHostWindow.SomeTabPageList.ApplySignatureCommand.Click(); repo.RetechPeripheralHostWindow.SomeTabPageList.AcceptCommand.Click(); repo.RetechCardPaymentView.AcceptSignature.Click(); // 11/6/18 replace by above // while(!Host.Local.TryFindSingle(repo.RetechPeripheralHostWindow.SignOnPinPadInfo.AbsolutePath.ToString(), out element)) // { Thread.Sleep(100); } // repo.RetechPeripheralHostWindow.SignOnPinPad.Click(); // Thread.Sleep(200); // repo.RetechPeripheralHostWindow.AcceptOnPinPad.Click(); // Thread.Sleep(200); // repo.RetechCardPaymentView.Self.Focus(); // Thread.Sleep(100); // repo.RetechCardPaymentView.SignatureAcceptedCommand.Click(); // Thread.Sleep(200); TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = @"Sign on pin pad"; Global.Module = "Finalize"; DumpStatsQ4.Run(); } } else { MystopwatchQ4.Reset(); MystopwatchQ4.Start(); repo.EnterSerialNumber.Self.PressKeys("{F9}"); // Seclect Credit Card TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = @"[F9] Seclect Credit Card"; Global.Module = "Finalize"; DumpStatsQ4.Run(); MystopwatchQ4.Reset(); MystopwatchQ4.Start(); repo.Amount.Self.PressKeys("{Enter}"); // Enter amount paid TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = @"Enter amount paid"; Global.Module = "Finalize"; DumpStatsQ4.Run(); MystopwatchQ4.Reset(); MystopwatchQ4.Start(); repo.InternatiuonalCreditCardType.Self.PressKeys("{F1}"); // F1=Visa F2=MasterCard F3=American Express TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = @"[F1] Seclect F1=Visa"; Global.Module = "Finalize"; DumpStatsQ4.Run(); repo.F1VISA.InternationalLast4OfCreditCard.PressKeys("9474{F5}"); // Enter last 4 digits of credit card } break; case "PURCC": // Click on Manual Card F6 button Global.LogText = @"Clicking on Manual Card F6 button"; WriteToLogFile.Run(); repo.Retech.RequestManualCardSettlement.Click(); while (!repo.RetechCardPaymentView.RunAsPURCCCard.Enabled) { Thread.Sleep(100); } // Click on Run as PURCC button (Run as PowerUp Rewards Cerdit Cart Global.LogText = @"Clicking on run as PURCC"; WriteToLogFile.Run(); repo.RetechCardPaymentView.RunAsPURCCCard.Click(); while (!Host.Local.TryFindSingle(repo.RetechCardPaymentView.TxtCardNumberInfo.AbsolutePath.ToString(), out element)) { Thread.Sleep(100); } // Select ID type and Issuer (Drivers Lenense and State) repo.RetechCardPaymentView.PickIdType.SelectedItemText = "Drivers License"; repo.RetechCardPaymentView.PickIdIssuer.Click(); repo.RetechCardPaymentView.PickIdIssuer.SelectedItemText = "Texas"; repo.RetechCardPaymentView.ProcessPrivateLabelCreditCardView.Click(); // Fill in PowerUp Rewards Credit Card Manual Entry repo.RetechCardPaymentView.TxtCardNumber.TextValue = "7788400030000272"; repo.RetechCardPaymentView.TxtNameFromId.TextValue = "PAL User"; repo.RetechCardPaymentView.ProcessPrivateLabelCreditCardView.Click(); repo.RetechCardPaymentView.Self.PressKeys("{Enter}"); Global.LogText = @"Info entered - watching for Waiting for Signature"; WriteToLogFile.Run(); while (!Global.AbortScenario && !Host.Local.TryFindSingle(repo.RetechCardPaymentView.Waiting_for_SignatureInfo.AbsolutePath.ToString(), out element)) { Thread.Sleep(100); if (Host.Local.TryFindSingle(repo.RetechCardPaymentView.PaymentCouldNotBeAuthorizedAnUnknInfo.AbsolutePath.ToString(), out element)) { Global.AbortScenario = true; Global.TempErrorString = "PURCC Unable to Process Payment - transaction voided"; WriteToErrorFile.Run(); Global.LogText = Global.TempErrorString; WriteToLogFile.Run(); Keyboard.Press("{Escape}"); Thread.Sleep(100); repo.Retech.DataContextVoidOrderCommand.Click(); Thread.Sleep(100); repo.GenericDialogView.Yesvoidthistransaction.Click(); Thread.Sleep(100); while (!repo.RetechAnotherTransaction.Visible) { Thread.Sleep(100); } } } if (!Global.AbortScenario) { repo.RetechPeripheralHostWindow.SignOnPinPad.Click(); Thread.Sleep(200); repo.RetechPeripheralHostWindow.AcceptOnPinPad.Click(); Thread.Sleep(200); repo.RetechCardPaymentView.Self.Focus(); Thread.Sleep(100); repo.RetechCardPaymentView.SignatureAcceptedCommand.Click(); Thread.Sleep(200); } break; } MystopwatchQ4.Reset(); MystopwatchQ4.Start(); if (Global.DomesticRegister) { // Wait for Another Transaction pop-up while (!Host.Local.TryFindSingle(repo.RetechAnotherTransactionInfo.AbsolutePath.ToString(), out element)) { Thread.Sleep(100); if (Host.Local.TryFindSingle(repo.RetechTillOverageWarningView.CodeF4AlertInfo.AbsolutePath.ToString(), out element) || Host.Local.TryFindSingle(repo.RetechTillOverageWarningView.CodeF4Alert2Info.AbsolutePath.ToString(), out element) ) { GlobalOverhead.Stopwatch.Start(); repo.RetechTillOverageWarningView.DropCashCommand.Click(); while (!repo.RetechLoginView.TxtPassword.Enabled) { Thread.Sleep(100); } repo.RetechLoginView.TxtPassword.PressKeys("advanced{Return}"); while (!repo.RetechTillDepositView.DropBoxAmount.Enabled) { Thread.Sleep(100); } repo.RetechTillDepositView.DropBoxAmount.PressKeys("40000"); repo.RetechTillDepositView.AddCashDropButton.Click(); Thread.Sleep(1000); repo.RetechTillDepositView.DropBoxAmount.PressKeys("{Escape}"); GlobalOverhead.Stopwatch.Stop(); } } } else { // Wait for log on screen if (Global.CurrentScenario == 47 || Global.CurrentScenario == 20 || Global.CurrentScenario == 16 || Global.CurrentScenario == 33 || Global.CurrentScenario == 34 ) { Thread.Sleep(100); while (!Host.Local.TryFindSingle(repo.IPOSScreen.ChangeDueInfo.AbsolutePath.ToString(), out element) && !repo.LogOn.LoginID.HasFocus ) { InternationalCheckForCodeF4Alert(); // 11/1/18 Thread.Sleep(200); } while (Host.Local.TryFindSingle(repo.IPOSScreen.ChangeDueInfo.AbsolutePath.ToString(), out element) && !repo.LogOn.LoginID.HasFocus ) { InternationalCheckForCodeF4Alert(); // 11/1/18 Thread.Sleep(200); } } while (!Host.Local.TryFindSingle(repo.LogOn.LoginIDInfo.AbsolutePath.ToString(), out element)) { Thread.Sleep(200); } while (!repo.LogOn.LoginID.Enabled) { Thread.Sleep(200); } } } TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = @"Wait for another transaction ESC"; Global.Module = "Finalize"; DumpStatsQ4.Run(); switch (Global.PayWithMethod) { case "Cash": Global.NowPayWithCash = Global.AdjustedTime; break; case "Credit": Global.NowPayWithCredit = Global.AdjustedTime; break; case "PURCC": Global.NowPayWithPURCC = Global.AdjustedTime; break; } MystopwatchQ4.Reset(); MystopwatchQ4.Start(); if (Global.DomesticRegister) { // Press excape key on Another Transaction pop-up while (!Host.Local.TryFindSingle(repo.RetechLoginView.TxtPasswordInfo.AbsolutePath.ToString(), out element)) { Thread.Sleep(100); } repo.RetechLoginView.TxtPassword.PressKeys("{Escape}"); } else { // Press escape on log on screen // repo.LogOn.Self.PressKeys("{Escape}"); // repo.LogOn.LogOn.Click("231;6"); // Delay.Milliseconds(200); // Keyboard.Press("{Escape}"); Thread.Sleep(200); while (!repo.LogOn.LogOn.Enabled) { Thread.Sleep(200); } repo.LogOn.LogOn.PressKeys(""); Delay.Milliseconds(200); repo.LogOn.LogOn.PressKeys("{Escape}"); } if (!Global.DomesticRegister) // International Store { // Catch hanging logon Thread.Sleep(100); if (Host.Local.TryFindSingle(repo.LogOn.LogOnInfo.AbsolutePath.ToString(), out element)) { Keyboard.Press("{Escape}"); } } TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = "Wait for Start a Transaction ESC"; Global.Module = "Finalize"; DumpStatsQ4.Run(); TimeMinusOverhead.Run((float)MystopwatchModuleTotal.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = "Module Total Time"; Global.Module = "Finalize"; DumpStatsQ4.Run(); Global.LogText = "OUT fnCheckout"; WriteToLogFile.Run(); Global.LogFileIndentLevel--; }
// // P R E C H E C K O U T N O N Z E r o b a l a n c e############################################################################## // private void SpecialPreCheckOutNonZeroBalance() { Mouse.DefaultMoveTime = 300; Keyboard.DefaultKeyPressTime = 100; Delay.SpeedFactor = 1.0; Ranorex.Unknown element = null; RanorexRepository repo = new RanorexRepository(); fnWriteToLogFile WriteToLogFile = new fnWriteToLogFile(); fnTimeMinusOverhead TimeMinusOverhead = new fnTimeMinusOverhead(); fnDumpStatsQ4 DumpStatsQ4 = new fnDumpStatsQ4(); fnWriteToErrorFile WriteToErrorFile = new fnWriteToErrorFile(); // Check for Please select a charity to donate if (Host.Local.TryFindSingle(repo.RetechPeripheralHostWindow.PleaseSelectACharityToDonateInfo.AbsolutePath.ToString(), out element)) { repo.RetechPeripheralHostWindow.DeclineDonateNoThanks.Click(); Thread.Sleep(100); } Global.LogText = @"Waiting on Time to Check Out - fnProductionIssueFunctions()"; WriteToLogFile.Run(); Thread.Sleep(100); while (!Host.Local.TryFindSingle(repo.Retech.TimeToCheckOutInfo.AbsolutePath.ToString(), out element)) { if (Host.Local.TryFindSingle(repo.ContinueButtonCommandInfo.AbsolutePath.ToString(), out element)) { repo.ContinueButtonCommand.Click(); Global.LogText = @"Clicked on Continue Button - fnProductionIssueFunctions()"; WriteToLogFile.Run(); Thread.Sleep(100); } Thread.Sleep(100); if (Host.Local.TryFindSingle(repo.Retech.AcknowledgeRelatedProductsCommandInfo.AbsolutePath.ToString(), out element)) { if (Host.Local.TryFindSingle(repo.Retech.AcknowledgeRelatedProductsCommandInfo.AbsolutePath.ToString(), out element)) { if (repo.Retech.AcknowledgeRelatedProductsCommand.Enabled) { Global.LogText = @"Clicking on acknowledge related products before F12"; WriteToLogFile.Run(); repo.Retech.AcknowledgeRelatedProductsCommand.Click(); Thread.Sleep(100); } } } else if (Host.Local.TryFindSingle(repo.Retech.ContinueF5_5_6_0_103Info.AbsolutePath.ToString(), out element)) { if (repo.Retech.ContinueF5_5_6_0_103.Enabled) { Global.LogText = @"Clicking on F5 Continue before F12"; WriteToLogFile.Run(); repo.Retech.ContinueF5_5_6_0_103.Click(); Thread.Sleep(100); repo.Retech.ButtonCheckout.Click(); Thread.Sleep(100); } } } // Click on screen to make sure in focust - .focus not work //repo.Retech.PaymentView.Click("689;82"); 1-22-19 switch (Global.PayWithMethod) { case "Cash": Global.LogText = @"Waiting on Cash F5"; WriteToLogFile.Run(); repo.Retech.Self.Focus(); Thread.Sleep(100); while (!repo.Retech.RequestCashSettlement.Enabled) { Thread.Sleep(500); } Global.LogText = @"Found Cash F5 Enabled"; WriteToLogFile.Run(); break; case "Credit": case "PURCC": Global.LogText = @"Waiting on Manual Card F6"; WriteToLogFile.Run(); repo.Retech.Self.Focus(); Thread.Sleep(100); while (!repo.Retech.RequestManualCardSettlement.Enabled) { Thread.Sleep(500); } Global.LogText = @"Found Manual Card F6 Enabled"; WriteToLogFile.Run(); break; } // Read Remaining Balance from screen string BalanceDueText = repo.Retech.BalanceDue.TextValue; string BalTemp = BalanceDueText.Substring(1, BalanceDueText.Length - 1); float BalanceDueAmount = float.Parse(BalTemp); string BalanceDueAmountTxt = Convert.ToString(BalanceDueAmount); switch (Global.PayWithMethod) { case "Cash": // Click on Cash F5 button Global.LogText = @"Clicking on Cash F5 button"; WriteToLogFile.Run(); repo.Retech.RequestCashSettlement.Click(); while (!Host.Local.TryFindSingle(repo.RetechCardPaymentView.TxtAmountPaidInfo.AbsolutePath.ToString(), out element)) { Thread.Sleep(100); } // Enter amount paid if (Global.SpecialPayThisAmount == "All") { repo.RetechCardPaymentView.TxtAmountPaid.TextValue = BalanceDueAmountTxt; } else { repo.RetechCardPaymentView.TxtAmountPaid.TextValue = Global.SpecialPayThisAmount; } repo.RetechCardPaymentView.TxtAmountPaid.PressKeys("{Enter}"); break; case "Credit": // Click on Manual Card F6 button Global.LogText = @"Clicking on Manual Card F6 button"; WriteToLogFile.Run(); repo.Retech.RequestManualCardSettlement.Click(); while (!repo.RetechCardPaymentView.RunAsCreditCard.Enabled) { Thread.Sleep(100); } // Click on Run as Credit button Global.LogText = @"Clicking on Run as Credit button"; WriteToLogFile.Run(); repo.RetechCardPaymentView.RunAsCreditCard.Click(); Thread.Sleep(500); repo.RetechCardPaymentView.TxtCardNumber.TextValue = Global.CreditCardNumber; repo.RetechCardPaymentView.TxtExpirationDate.TextValue = Global.CreditCardMonth + "/" + Global.CreditCardYear; repo.RetechCardPaymentView.TxtZipCode.TextValue = Global.CreditCardZip; // Enter amount paid if (Global.SpecialPayThisAmount == "All") { repo.RetechCardPaymentView.TxtAmountToCharge.TextValue = BalanceDueAmountTxt; } else { repo.RetechCardPaymentView.TxtAmountToCharge.TextValue = Global.SpecialPayThisAmount; } repo.RetechCardPaymentView.ProcessCreditCardView.PressKeys("{Enter}"); Thread.Sleep(100); while (!Global.AbortScenario && !Host.Local.TryFindSingle(repo.RetechCardPaymentView.Waiting_for_SignatureInfo.AbsolutePath.ToString(), out element)) { Thread.Sleep(100); if (Host.Local.TryFindSingle(repo.RetechCardPaymentView.TryAuthorizingAgainInfo.AbsolutePath.ToString(), out element)) { Global.AbortScenario = true; Global.TempErrorString = "Credit Card Unable to Process Payment - transaction voided"; WriteToErrorFile.Run(); Global.LogText = Global.TempErrorString; WriteToLogFile.Run(); Keyboard.Press("{Escape}"); Thread.Sleep(100); repo.Retech.DataContextVoidOrderCommand.Click(); Thread.Sleep(100); repo.GenericDialogView.Yesvoidthistransaction.Click(); Thread.Sleep(100); while (!repo.RetechAnotherTransaction.Visible) { Thread.Sleep(100); } } } if (!Global.AbortScenario) { repo.RetechPeripheralHostWindow.SignOnPinPad.Click(); Thread.Sleep(200); repo.RetechPeripheralHostWindow.AcceptOnPinPad.Click(); Thread.Sleep(200); repo.RetechCardPaymentView.Self.Focus(); Thread.Sleep(100); repo.RetechCardPaymentView.SignatureAcceptedCommand.Click(); Thread.Sleep(200); } break; case "PURCC": // Click on Manual Card F6 button Global.LogText = @"Clicking on Manual Card F6 button"; WriteToLogFile.Run(); repo.Retech.RequestManualCardSettlement.Click(); while (!repo.RetechCardPaymentView.RunAsPURCCCard.Enabled) { Thread.Sleep(100); } // Click on Run as PURCC button (Run as PowerUp Rewards Cerdit Cart Global.LogText = @"Clicking on run as PURCC"; WriteToLogFile.Run(); repo.RetechCardPaymentView.RunAsPURCCCard.Click(); while (!Host.Local.TryFindSingle(repo.RetechCardPaymentView.TxtCardNumberInfo.AbsolutePath.ToString(), out element)) { Thread.Sleep(100); } // Select ID type and Issuer (Drivers Lenense and State) repo.RetechCardPaymentView.PickIdType.SelectedItemText = "Drivers License"; repo.RetechCardPaymentView.PickIdIssuer.Click(); repo.RetechCardPaymentView.PickIdIssuer.SelectedItemText = "Texas"; repo.RetechCardPaymentView.ProcessPrivateLabelCreditCardView.Click(); // Fill in PowerUp Rewards Credit Card Manual Entry repo.RetechCardPaymentView.TxtCardNumber.TextValue = "7788400030000272"; repo.RetechCardPaymentView.TxtNameFromId.TextValue = "PAL User"; repo.RetechCardPaymentView.ProcessPrivateLabelCreditCardView.Click(); repo.RetechCardPaymentView.Self.PressKeys("{Enter}"); Global.LogText = @"Info entered - watching for Waiting for Signature"; WriteToLogFile.Run(); while (!Global.AbortScenario && !Host.Local.TryFindSingle(repo.RetechCardPaymentView.Waiting_for_SignatureInfo.AbsolutePath.ToString(), out element)) { Thread.Sleep(100); if (Host.Local.TryFindSingle(repo.RetechCardPaymentView.PaymentCouldNotBeAuthorizedAnUnknInfo.AbsolutePath.ToString(), out element)) { Global.AbortScenario = true; Global.TempErrorString = "PURCC Unable to Process Payment - transaction voided"; WriteToErrorFile.Run(); Global.LogText = Global.TempErrorString; WriteToLogFile.Run(); Keyboard.Press("{Escape}"); Thread.Sleep(100); repo.Retech.DataContextVoidOrderCommand.Click(); Thread.Sleep(100); repo.GenericDialogView.Yesvoidthistransaction.Click(); Thread.Sleep(100); while (!repo.RetechAnotherTransaction.Visible) { Thread.Sleep(100); } } } if (!Global.AbortScenario) { repo.RetechPeripheralHostWindow.SignOnPinPad.Click(); Thread.Sleep(200); repo.RetechPeripheralHostWindow.AcceptOnPinPad.Click(); Thread.Sleep(200); repo.RetechCardPaymentView.Self.Focus(); Thread.Sleep(100); repo.RetechCardPaymentView.SignatureAcceptedCommand.Click(); Thread.Sleep(200); } break; } }
public void Run() { Mouse.DefaultMoveTime = 300; Keyboard.DefaultKeyPressTime = 100; Delay.SpeedFactor = 1.0; Ranorex.Unknown element = null; RanorexRepository repo = new RanorexRepository(); fnWriteToLogFile WriteToLogFile = new fnWriteToLogFile(); fnTimeMinusOverhead TimeMinusOverhead = new fnTimeMinusOverhead(); fnDumpStatsQ4 DumpStatsQ4 = new fnDumpStatsQ4(); fnWriteToErrorFile WriteToErrorFile = new fnWriteToErrorFile(); // Create new stopwatch Stopwatch MystopwatchTT = new Stopwatch(); MystopwatchTT.Reset(); MystopwatchTT.Start(); Stopwatch MystopwatchQ4 = new Stopwatch(); Stopwatch MystopwatchModuleTotal = new Stopwatch(); MystopwatchModuleTotal.Reset(); MystopwatchModuleTotal.Start(); Global.LogText = @"Start Transaction"; WriteToLogFile.Run(); MystopwatchQ4.Reset(); MystopwatchQ4.Start(); bool StatsWritten = false; if (Global.DomesticRegister) { Global.LogText = @"Clicking on ReTech screen then press F5"; WriteToLogFile.Run(); repo.ReTechStartTransaction.PressKeys("{F5}"); Thread.Sleep(100); if (Host.Local.TryFindSingle(repo.GenericDialogView.CriticalErrorSavingTransactionCallHInfo.AbsolutePath.ToString(), out element)) { repo.GenericDialogView.ErrorSavingButtonOK.Click(); Thread.Sleep(200); Global.TempErrorString = "Error Saving Transaction"; WriteToErrorFile.Run(); Global.LogText = Global.TempErrorString; WriteToLogFile.Run(); } Global.LogText = @"Waiting for logon"; WriteToLogFile.Run(); while (!Host.Local.TryFindSingle(repo.RetechLoginView.TxtPasswordInfo.AbsolutePath.ToString(), out element)) { Thread.Sleep(200); float MetricTimeDiv1000 = MystopwatchQ4.ElapsedMilliseconds / 1000; if (MetricTimeDiv1000 > 20.0 && !StatsWritten) { StatsWritten = true; Global.LogText = @"Process Stats captured waiting for TryFindSingle([F5] Start Transaction TryFindSingle(repo.RetechLoginView.TxtPassword"; WriteToLogFile.Run(); // Write out Tasklist to file in C:\PAL\Reports String.Empty string TimeStampPart = System.DateTime.Now.ToString(); TimeStampPart = Regex.Replace(TimeStampPart, @"[/]", ""); TimeStampPart = Regex.Replace(TimeStampPart, @"[:]", ""); TimeStampPart = Regex.Replace(TimeStampPart, @"[ ]", ""); TimeStampPart = "_" + TimeStampPart; string FullCsvFilename = Global.RegisterName; FullCsvFilename = Regex.Replace(FullCsvFilename, @"[-]", "R"); FullCsvFilename = Regex.Replace(FullCsvFilename, @"[(]", "_"); FullCsvFilename = Regex.Replace(FullCsvFilename, @"[)]", "_"); string CsvFilename = FullCsvFilename + TimeStampPart; FullCsvFilename = FullCsvFilename + TimeStampPart + "_F5_Start_Transaction_pressed_waiting_for_while(!Host.Local.TryFindSingle(repo.RetechLoginView.TxtPassword...)"; var proc = new Process { StartInfo = new ProcessStartInfo { FileName = Global.Register1DriveLetter + @":\PAL\Reports\GetTaskList.bat", Arguments = FullCsvFilename, UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true, WorkingDirectory = Global.Register1DriveLetter + @":\PAL\Reports\" } }; proc.Start(); var proc2 = new Process { StartInfo = new ProcessStartInfo { FileName = Global.Register1DriveLetter + @":\PAL\Reports\CPU.bat", Arguments = CsvFilename, UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true, WorkingDirectory = Global.Register1DriveLetter + @":\PAL\Reports\" } }; proc2.Start(); } if (Host.Local.TryFindSingle(repo.GenericDialogView.CriticalErrorSavingTransactionCallHInfo.AbsolutePath.ToString(), out element)) { repo.GenericDialogView.ErrorSavingButtonOK.Click(); Thread.Sleep(200); Global.TempErrorString = "Error Saving Transaction"; WriteToErrorFile.Run(); Global.LogText = Global.TempErrorString; WriteToLogFile.Run(); } } } else { // Click on F5 POS Register - international //repo.IPOSScreen.ContainerF7BackOffice.Click("32;55"); repo.IPOSScreen.Self.Click(); Delay.Milliseconds(200); Keyboard.Press("{F5}"); while (!repo.LogOn.InternationalLoginID.Enabled) { Thread.Sleep(100); } repo.LogOn.InternationalLoginID.PressKeys("psu"); } Global.TempFloat = (float)MystopwatchQ4.ElapsedMilliseconds / 1000; TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = @"[F5] Start Transaction"; Global.Module = "Log On"; DumpStatsQ4.Run(); // Enter Password MystopwatchQ4.Reset(); MystopwatchQ4.Start(); StatsWritten = false; if (Global.DomesticRegister) { Global.LogText = @"Waiting for Password field to appear"; WriteToLogFile.Run(); while (!Host.Local.TryFindSingle(repo.ReTechLogonPasswordInfo.AbsolutePath.ToString(), out element)) { Thread.Sleep(100); float MetricTimeDiv1000 = MystopwatchQ4.ElapsedMilliseconds / 1000; if (MetricTimeDiv1000 > 20.0 && !StatsWritten) { StatsWritten = true; Global.LogText = @"Process Stats captured waiting for (!Host.Local.TryFindSingle(repo.ReTechLogonPassword..."; WriteToLogFile.Run(); // Write out Tasklist to file in C:\PAL\Reports String.Empty string TimeStampPart = System.DateTime.Now.ToString(); TimeStampPart = Regex.Replace(TimeStampPart, @"[/]", ""); TimeStampPart = Regex.Replace(TimeStampPart, @"[:]", ""); TimeStampPart = Regex.Replace(TimeStampPart, @"[ ]", ""); TimeStampPart = "_" + TimeStampPart; string FullCsvFilename = Global.RegisterName; FullCsvFilename = Regex.Replace(FullCsvFilename, @"[-]", "R"); FullCsvFilename = Regex.Replace(FullCsvFilename, @"[(]", "_"); FullCsvFilename = Regex.Replace(FullCsvFilename, @"[)]", "_"); string CsvFilename = FullCsvFilename + TimeStampPart; FullCsvFilename = FullCsvFilename + TimeStampPart + "_waiting_for_(!Host.Local.TryFindSingle(repo.ReTechLogonPassword...)"; var proc = new Process { StartInfo = new ProcessStartInfo { FileName = Global.Register1DriveLetter + @":\PAL\Reports\GetTaskList.bat", Arguments = FullCsvFilename, UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true, WorkingDirectory = Global.Register1DriveLetter + @":\PAL\Reports\" } }; proc.Start(); var proc2 = new Process { StartInfo = new ProcessStartInfo { FileName = Global.Register1DriveLetter + @":\PAL\Reports\CPU.bat", Arguments = CsvFilename, UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true, WorkingDirectory = Global.Register1DriveLetter + @":\PAL\Reports\" } }; proc2.Start(); } } Global.LogText = @"Waiting for Password field to be enabled"; WriteToLogFile.Run(); while (!repo.ReTechLogonPassword.Enabled) { Thread.Sleep(100); float MetricTimeDiv1000 = MystopwatchQ4.ElapsedMilliseconds / 1000; if (MetricTimeDiv1000 > 20.0 && !StatsWritten) { StatsWritten = true; Global.LogText = @"Process Stats captured waiting for repo.ReTechLogonPassword.Enabled"; WriteToLogFile.Run(); // Write out Tasklist to file in C:\PAL\Reports String.Empty string TimeStampPart = System.DateTime.Now.ToString(); TimeStampPart = Regex.Replace(TimeStampPart, @"[/]", ""); TimeStampPart = Regex.Replace(TimeStampPart, @"[:]", ""); TimeStampPart = Regex.Replace(TimeStampPart, @"[ ]", ""); TimeStampPart = "_" + TimeStampPart; string FullCsvFilename = Global.RegisterName; FullCsvFilename = Regex.Replace(FullCsvFilename, @"[-]", "R"); FullCsvFilename = Regex.Replace(FullCsvFilename, @"[(]", "_"); FullCsvFilename = Regex.Replace(FullCsvFilename, @"[)]", "_"); string CsvFilename = FullCsvFilename + TimeStampPart; FullCsvFilename = FullCsvFilename + TimeStampPart + "_waiting_for_while(!repo.ReTechLogonPassword.Enabled)"; var proc = new Process { StartInfo = new ProcessStartInfo { FileName = Global.Register1DriveLetter + @":\PAL\Reports\GetTaskList.bat", Arguments = FullCsvFilename, UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true, WorkingDirectory = Global.Register1DriveLetter + @":\PAL\Reports\" } }; proc.Start(); var proc2 = new Process { StartInfo = new ProcessStartInfo { FileName = Global.Register1DriveLetter + @":\PAL\Reports\CPU.bat", Arguments = CsvFilename, UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true, WorkingDirectory = Global.Register1DriveLetter + @":\PAL\Reports\" } }; proc2.Start(); } } Global.LogText = @"Entering password"; WriteToLogFile.Run(); repo.RetechLoginView.TxtPassword.PressKeys("advanced{Return}"); Global.LogText = @"Password entered - wating for Add Line F1"; WriteToLogFile.Run(); Thread.Sleep(500); // ############################################################ // If login takes longer than 20 seconds write out process stats while (!Host.Local.TryFindSingle(repo.AddLineItemCommandInfo.AbsolutePath.ToString(), 1000, out element)) { Thread.Sleep(200); float MetricTimeDiv1000 = MystopwatchQ4.ElapsedMilliseconds / 1000; if (MetricTimeDiv1000 > 20.0 && !StatsWritten) { StatsWritten = true; Global.LogText = @"Process Stats captured waiting for TryFindSingle(repo.AddLineItemCommandInfo"; WriteToLogFile.Run(); // Write out Tasklist to file in C:\PAL\Reports String.Empty string TimeStampPart = System.DateTime.Now.ToString(); TimeStampPart = Regex.Replace(TimeStampPart, @"[/]", ""); TimeStampPart = Regex.Replace(TimeStampPart, @"[:]", ""); TimeStampPart = Regex.Replace(TimeStampPart, @"[ ]", ""); TimeStampPart = "_" + TimeStampPart; string FullCsvFilename = Global.RegisterName; FullCsvFilename = Regex.Replace(FullCsvFilename, @"[-]", "R"); FullCsvFilename = Regex.Replace(FullCsvFilename, @"[(]", "_"); FullCsvFilename = Regex.Replace(FullCsvFilename, @"[)]", "_"); string CsvFilename = FullCsvFilename + TimeStampPart; FullCsvFilename = FullCsvFilename + TimeStampPart + "_waiting_for_while(!Host.Local.TryFindSingle(repo.AddLineItemCommand...)"; var proc = new Process { StartInfo = new ProcessStartInfo { FileName = Global.Register1DriveLetter + @":\PAL\Reports\GetTaskList.bat", Arguments = FullCsvFilename, UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true, WorkingDirectory = Global.Register1DriveLetter + @":\PAL\Reports\" } }; proc.Start(); var proc2 = new Process { StartInfo = new ProcessStartInfo { FileName = Global.Register1DriveLetter + @":\PAL\Reports\CPU.bat", Arguments = CsvFilename, UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true, WorkingDirectory = Global.Register1DriveLetter + @":\PAL\Reports\" } }; proc2.Start(); } } Global.LogText = @"Wating for Add Line F1 - waiting till Enabled"; WriteToLogFile.Run(); while (!repo.AddLineItemCommand.Enabled) { Thread.Sleep(200); float MetricTimeDiv1000 = MystopwatchQ4.ElapsedMilliseconds / 1000; if (MetricTimeDiv1000 > 20.0 && !StatsWritten) { StatsWritten = true; Global.LogText = @"Process Stats captured waiting for TryFindSingle(repo.AddLineItemCommand.Enabled"; WriteToLogFile.Run(); // Write out Tasklist to file in C:\PAL\Reports String.Empty string TimeStampPart = System.DateTime.Now.ToString(); TimeStampPart = Regex.Replace(TimeStampPart, @"[/]", ""); TimeStampPart = Regex.Replace(TimeStampPart, @"[:]", ""); TimeStampPart = Regex.Replace(TimeStampPart, @"[ ]", ""); TimeStampPart = "_" + TimeStampPart; string FullCsvFilename = Global.RegisterName; FullCsvFilename = Regex.Replace(FullCsvFilename, @"[-]", "R"); FullCsvFilename = Regex.Replace(FullCsvFilename, @"[(]", "_"); FullCsvFilename = Regex.Replace(FullCsvFilename, @"[)]", "_"); string CsvFilename = FullCsvFilename + TimeStampPart; FullCsvFilename = FullCsvFilename + TimeStampPart + "_waiting_for_while(!repo.AddLineItemCommand.Enabled)"; var proc = new Process { StartInfo = new ProcessStartInfo { FileName = Global.Register1DriveLetter + @":\PAL\Reports\GetTaskList.bat", Arguments = FullCsvFilename, UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true, WorkingDirectory = Global.Register1DriveLetter + @":\PAL\Reports\" } }; proc.Start(); var proc2 = new Process { StartInfo = new ProcessStartInfo { FileName = Global.Register1DriveLetter + @":\PAL\Reports\CPU.bat", Arguments = CsvFilename, UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true, WorkingDirectory = Global.Register1DriveLetter + @":\PAL\Reports\" } }; proc2.Start(); } if (Host.Local.TryFindSingle(repo.ContinueButtonCommandInfo.AbsolutePath.ToString(), out element)) { repo.ContinueButtonCommand.Click(); Thread.Sleep(200); } } Global.LogText = @"Add Line F1 - found enabled"; WriteToLogFile.Run(); // If Customer Info then just skip by continue if (Host.Local.TryFindSingle(repo.Retech.ContinueButtonCommand2Info.AbsolutePath.ToString(), out element)) { repo.Retech.ContinueButtonCommand2.Click(); Thread.Sleep(100); } } else { // International repo.LogOn.InternationalPassword.PressKeys("advanced{Return}"); //while(!repo.ReservationDeposit.EnterSerialNumber.Enabled) //{ Thread.Sleep(100); } //repo.ReservationDeposit.EnterSerialNumber.PressKeys("{Escape}"); //repo.FormPOS.Self.PressKeys("{Escape}"); Thread.Sleep(100); repo.NotEnrolledEsc.Click(); Thread.Sleep(100); } TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = "Enter Password"; Global.Module = "Log On"; DumpStatsQ4.Run(); TimeMinusOverhead.Run((float)MystopwatchModuleTotal.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = "Module Total Time"; Global.Module = "Log On"; DumpStatsQ4.Run(); }
public static int Main(string[] args) { // Uncomment the following 2 lines if you want to automate Windows apps // by starting the test executable directly //if (Util.IsRestartRequiredForWinAppAccess) // return Util.RestartWithUiAccess(); fnPlayWavFile PlayWavFile = new fnPlayWavFile(); fnWriteToLogFile WriteToLogFile = new fnWriteToLogFile(); fnWriteToErrorFile WriteToErrorFile = new fnWriteToErrorFile(); SpeechSynthesizer Speech = new SpeechSynthesizer(); Keyboard.AbortKey = System.Windows.Forms.Keys.Escape; int error = 0; // To autorun Scripts in directory <C: on reg1, D: on reg 2-n>/PAL/RanorexStudio Projects\Ranorex Automation\Alpha\bin\Debug // NOTE: autorun is assumed to be type Baseline // RanorexAutomation.exe auto [<iteratins-time> [<Scenario-list>] ] // <iteratins-time> = number iterations // <iteratins-time> = time to stop "6:00 am" // <iteratins-time> = time to start and stop "6:00 am to 3:00 PM" // <Scenario-list> = list if scenarios to run comma delited "3,4,6-20" // If neither <iteratins-time> or <Scenario-list> supplied will run using same paramaters as last run // Just auto <iterations-time> can be given, will ust last run scenario list // Get command line argumets Global.CommandLineArg0 = ""; Global.CommandLineArg1 = ""; Global.CommandLineArg2 = ""; Global.CommandLineArg3 = ""; string[] RanorexCmdLine = Environment.GetCommandLineArgs(); int Arguments = args.Length; switch (Arguments) { case 1: Global.CommandLineArg0 = RanorexCmdLine[0].ToUpper(); Global.CommandLineArg1 = RanorexCmdLine[1].ToUpper(); break; case 2: Global.CommandLineArg0 = RanorexCmdLine[0].ToUpper(); Global.CommandLineArg1 = RanorexCmdLine[1].ToUpper(); Global.CommandLineArg2 = RanorexCmdLine[2].ToUpper(); break; case 3: Global.CommandLineArg0 = RanorexCmdLine[0].ToUpper(); Global.CommandLineArg1 = RanorexCmdLine[1].ToUpper(); Global.CommandLineArg2 = RanorexCmdLine[2].ToUpper(); Global.CommandLineArg3 = RanorexCmdLine[3].ToUpper(); break; } // For debugging auto run // Global.CommandLineArg1 = "AUTO"; // Global.CommandLineArg2 = "1"; // Global.CommandLineArg3 = "3"; // Report.Log(ReportLevel.Info, "CommandLineStuff", // "\n" + "Arglen: " + Arguments + "\n" + // "Zero: " + Global.CommandLineArg0 + "\n" + // "One: " + Global.CommandLineArg1 + "\n" + // "Two: " + Global.CommandLineArg2 + "\n" + // "Three: " + Global.CommandLineArg3 + "\n" // , new RecordItemIndex(0)); // Thread.Sleep(10000); // Environment.Exit(0); // Onetime delay for Ranorex to setup instrumentation Thread.Sleep(5000); if (Global.CommandLineArg1 == "AUTO") { Global.AutoRun = true; } try { error = TestSuiteRunner.Run(typeof(Program), Environment.CommandLine); } catch (Exception e) { Report.Error("Unexpected exception occurred: " + e.ToString()); error = -1; Global.LogText = "Unexpected exception occurred: " + e.ToString(); WriteToLogFile.Run(); Global.TempErrorString = Global.LogText; WriteToErrorFile.Run(); Global.WavFilePath = "UnexpectedException.wav"; PlayWavFile.Run(); if (Global.DoRegisterSoundAlerts) { Speech.Speak("Register " + Global.RegisterNumber); } } fnTearDown Teardown = new fnTearDown(); Report.Log(ReportLevel.Info, "Main", "Starting Teardown", new RecordItemIndex(0)); TestModuleRunner.Run(Teardown); Report.Log(ReportLevel.Info, "Main", "Teardown Finished", new RecordItemIndex(0)); return(error); }
public void ResumeTransaction() { Mouse.DefaultMoveTime = 300; Keyboard.DefaultKeyPressTime = 100; Delay.SpeedFactor = 1.0; Ranorex.Unknown element = null; RanorexRepository repo = new RanorexRepository(); fnWriteToLogFile WriteToLogFile = new fnWriteToLogFile(); fnTimeMinusOverhead TimeMinusOverhead = new fnTimeMinusOverhead(); fnDumpStatsQ4 DumpStatsQ4 = new fnDumpStatsQ4(); fnWriteToErrorFile WriteToErrorFile = new fnWriteToErrorFile(); // Create new stopwatch Stopwatch MystopwatchTT = new Stopwatch(); MystopwatchTT.Reset(); MystopwatchTT.Start(); Stopwatch MystopwatchQ4 = new Stopwatch(); Stopwatch MystopwatchModuleTotal = new Stopwatch(); MystopwatchModuleTotal.Reset(); MystopwatchModuleTotal.Start(); Global.LogText = @"Start Transaction"; WriteToLogFile.Run(); MystopwatchQ4.Reset(); MystopwatchQ4.Start(); if (Global.DomesticRegister) { Global.LogText = @"Clicking on ReTech screen then press F5"; WriteToLogFile.Run(); repo.ReTechStartTransaction.Click(); repo.ReTechStartTransaction.PressKeys("{F6}"); if (Host.Local.TryFindSingle(repo.GenericDialogView.CriticalErrorSavingTransactionCallHInfo.AbsolutePath.ToString(), out element)) { repo.GenericDialogView.ErrorSavingButtonOK.Click(); Thread.Sleep(200); Global.TempErrorString = "Error Saving Transaction"; WriteToErrorFile.Run(); Global.LogText = Global.TempErrorString; WriteToLogFile.Run(); } Global.LogText = @"Waiting for logon"; WriteToLogFile.Run(); while (!Host.Local.TryFindSingle(repo.RetechLoginView.TxtPasswordInfo.AbsolutePath.ToString(), out element)) { Thread.Sleep(200); if (Host.Local.TryFindSingle(repo.GenericDialogView.CriticalErrorSavingTransactionCallHInfo.AbsolutePath.ToString(), out element)) { repo.GenericDialogView.ErrorSavingButtonOK.Click(); Thread.Sleep(200); Global.TempErrorString = "Error Saving Transaction"; WriteToErrorFile.Run(); Global.LogText = Global.TempErrorString; WriteToLogFile.Run(); } } } else { // Click on F5 POS Register - international repo.IPOSScreen.ContainerF7BackOffice.Click("32;55"); Delay.Milliseconds(200); Keyboard.Press("{F5}"); while (!repo.LogOn.InternationalLoginID.Enabled) { Thread.Sleep(100); } repo.LogOn.InternationalLoginID.PressKeys("psu"); } Global.TempFloat = (float)MystopwatchQ4.ElapsedMilliseconds / 1000; TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = @"[F6] Resume Transaction"; Global.Module = "Log On"; DumpStatsQ4.Run(); // Enter Password MystopwatchQ4.Reset(); MystopwatchQ4.Start(); if (Global.DomesticRegister) { Global.LogText = @"Waiting for Password field enabled"; WriteToLogFile.Run(); while (!repo.ReTechLogonPassword.Enabled) { Thread.Sleep(100); } Global.LogText = @"Entering password"; WriteToLogFile.Run(); repo.RetechLoginView.TxtPassword.PressKeys("advanced{Return}"); // If no transactions found cancel and skip to next register so script will not stop if (Host.Local.TryFindSingle(repo.SelectSuspendedOrderView1.NoTransactionsHaveBeenSuspendedTodaInfo.AbsolutePath.ToString(), out element)) { repo.SelectSuspendedOrderView1.CancelCommand.Click(); Thread.Sleep(100); Global.AbortScenario = true; } else { // Wait for add line command 2/2/18 if (repo.SelectSuspendedOrderView.ResumeCommandInfo.Exists(5000)) { } while (!Host.Local.TryFindSingle(repo.SelectSuspendedOrderView.ResumeCommandInfo.AbsolutePath.ToString(), out element)) { Thread.Sleep(200); } // 1/31/18 repo.SelectSuspendedOrderView.ResumeCommand.Click(); Thread.Sleep(1000); // If transaction service error - try reclicking on save button if (Host.Local.TryFindSingle(repo.SelectSuspendedOrderView.ErrorMessageTxtInfo.AbsolutePath.ToString(), out element)) { repo.SelectSuspendedOrderView.ResumeCommand.Click(); } // If Customer Info then just skip by continue if (Host.Local.TryFindSingle(repo.Retech.ContinueButtonCommand2Info.AbsolutePath.ToString(), out element)) { repo.Retech.ContinueButtonCommand2.Click(); Thread.Sleep(100); } // If Continue click it if (Host.Local.TryFindSingle(repo.ContinueButtonCommandInfo.AbsolutePath.ToString(), out element)) { repo.ContinueButtonCommand.Click(); Thread.Sleep(100); } } } else { repo.LogOn.InternationalPassword.PressKeys("advanced{Return}"); while (!repo.ReservationDeposit.EnterSerialNumber.Enabled) { Thread.Sleep(100); } repo.ReservationDeposit.EnterSerialNumber.PressKeys("{Escape}"); } TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = "Enter Password"; Global.Module = "Log On"; DumpStatsQ4.Run(); TimeMinusOverhead.Run((float)MystopwatchModuleTotal.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = "Module Total Time"; Global.Module = "Log On"; DumpStatsQ4.Run(); }
/// <summary> /// Performs the playback of actions in this module. /// </summary> /// <remarks>You should not call this method directly, instead pass the module /// instance to the <see cref="TestModuleRunner.Run(ITestModule)"/> method /// that will in turn invoke this method.</remarks> void ITestModule.Run() { if (!Global.SwitchUploadOnly) { Mouse.DefaultMoveTime = 300; Keyboard.DefaultKeyPressTime = 100; Delay.SpeedFactor = 1.0; Global.PhoneNumbertype = ""; // all types // Create the needed classes RanorexRepository repo = new RanorexRepository(); fnGetEndTime GetEndTime = new fnGetEndTime(); fnGetStartTime GetStartTime = new fnGetStartTime(); fnPlayWavFile PlayWavFile = new fnPlayWavFile(); fnWriteToLogFile WriteToLogFile = new fnWriteToLogFile(); fnDumpStats DumpStats = new fnDumpStats(); fnWriteToErrorFile WriteToErrorFile = new fnWriteToErrorFile(); SpeechSynthesizer Speech = new SpeechSynthesizer(); Global.LogFileIndentLevel++; Global.LogText = "IN fnDoScenarios"; WriteToLogFile.Run(); Global.CurrentIteration = 1; if (Global.TimeToStartExecution != "") { Global.LogText = "Waiting for start time - IN fnDoScenarios: " + Global.TimeToStartExecution; WriteToLogFile.Run(); Report.Log(ReportLevel.Info, "fnDoScenarios", "Waiting for start time: " + Global.TimeToStartExecution, new RecordItemIndex(0)); bool TimeToStart = false; while (!TimeToStart) { System.DateTime DateTimeNow = System.DateTime.Now; int TimeUp = System.DateTime.Compare(DateTimeNow, Convert.ToDateTime(Global.TimeToStartExecution)); if (TimeUp > 0) { TimeToStart = true; } } } Global.LoopingDone = false; while (!Global.LoopingDone) { try { DoScenarioLooping(); } catch (Exception e) { string sayString = ""; if (e.ToString().IndexOf("Thread was being aborted.") == -1) { sayString = e.ToString().Substring(0, 28); Global.TempErrorString = "Ranorex Crashed Message: " + e.Message; WriteToErrorFile.Run(); Global.WavFilePath = "RanorexCrashed.wav"; PlayWavFile.Run(); if (e.ToString().Contains("MemoryException")) { // Write out Tasklist to file in C:\PAL\Reports String.Empty string TimeStampPart = System.DateTime.Now.ToString(); TimeStampPart = Regex.Replace(TimeStampPart, @"[/]", "-"); TimeStampPart = Regex.Replace(TimeStampPart, @"[:]", "-"); TimeStampPart = Regex.Replace(TimeStampPart, @"[ ]", "_"); TimeStampPart = "(" + TimeStampPart + ")"; string CsvFilename = "Tasklist_(" + Global.RegisterName + ")_" + TimeStampPart; var proc = new Process { StartInfo = new ProcessStartInfo { FileName = Global.Register1DriveLetter + @":\PAL\Reports\GetTaskList.bat", Arguments = CsvFilename, UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true, WorkingDirectory = Global.Register1DriveLetter + @":\PAL\Reports\" } }; proc.Start(); } ; //Report.Snapshot("/form[@controlname='frmWebBrowserHost']"); if (Global.DoRegisterSoundAlerts) { Speech.Speak(sayString); } Global.WavFilePath = "Error.wav"; PlayWavFile.Run(); PlayWavFile.Run(); PlayWavFile.Run(); PlayWavFile.Run(); string ErrorMessage; ErrorMessage = e.ToString(); Global.LogText = @ErrorMessage; WriteToLogFile.Run(); MessageBox.Show(e.ToString(), "Ranorex has crashed"); fnTearDown Teardown = new fnTearDown(); Report.Log(ReportLevel.Info, "Main", "Starting Teardown", new RecordItemIndex(0)); TestModuleRunner.Run(Teardown); Report.Log(ReportLevel.Info, "Main", "Teardown Finished", new RecordItemIndex(0)); Environment.Exit(0); } } } Global.LogText = "OUT fnDoScenarios"; WriteToLogFile.Run(); Global.LogFileIndentLevel--; } }
public void Run() { Mouse.DefaultMoveTime = 300; Keyboard.DefaultKeyPressTime = 100; Delay.SpeedFactor = 1.0; Ranorex.Unknown element = null; RanorexRepository repo = new RanorexRepository(); fnWriteToLogFile WriteToLogFile = new fnWriteToLogFile(); fnBrowserGoHome BrowserGoHome = new fnBrowserGoHome(); fnWriteToErrorFile WriteToErrorFile = new fnWriteToErrorFile(); fnPlayWavFile PlayWavFile = new fnPlayWavFile(); SpeechSynthesizer Speech = new SpeechSynthesizer(); Global.LogFileIndentLevel++; Global.LogText = "IN fnWaitForBrowserToLoad"; WriteToLogFile.Run(); Global.POSBrowserFlush = false; Thread.Sleep(5000); int AttemptsCounter = 0; while (!repo.POSBrowserV25StorePortal.HomeF6.Enabled || !repo.StorePortal.QAPOSReCommerce.Enabled || !(repo.POSBrowserV25StorePortal.ProgressBar.Value == 100)) { Thread.Sleep(100); double aaaa = repo.POSBrowserV25StorePortal.ProgressBar.Value; // Check for Oops Game Over Report.Log(ReportLevel.Info, "WaitStatus", "Ck Oops"); if (Host.Local.TryFindSingle(repo.RecommerceTradeLink.OopsGameOverWhatYouWereAttemptingToDoInfo.AbsolutePath.ToString(), out element)) { AttemptsCounter++; GlobalOverhead.Stopwatch.Start(); Global.TempErrorString = "Browser Oops Game Over - pressing home and retrying"; if (Global.DoRegisterSoundAlerts) { Speech.Speak(Global.TempErrorString + " try number " + AttemptsCounter.ToString()); } WriteToErrorFile.Run(); Global.LogText = Global.TempErrorString; WriteToLogFile.Run(); Global.WavFilePath = "BrowserOopsGameOver.wav "; PlayWavFile.Run(); BrowserGoHome.Run(); GlobalOverhead.Stopwatch.Stop(); } // Check for browser unavailable Report.Log(ReportLevel.Info, "WaitStatus", "Ck browser unavailable"); if (Host.Local.TryFindSingle(repo.StorePortal.POSBrowsingIsCurrentlyUnavailableInfo.AbsolutePath.ToString(), out element)) { AttemptsCounter++; GlobalOverhead.Stopwatch.Start(); Global.TempErrorString = "Browser Unavailable - try go home"; if (Global.DoRegisterSoundAlerts) { Speech.Speak(Global.TempErrorString + " try number " + AttemptsCounter.ToString()); } WriteToErrorFile.Run(); Global.LogText = Global.TempErrorString; WriteToLogFile.Run(); BrowserGoHome.Run(); GlobalOverhead.Stopwatch.Stop(); } // Check for server error Report.Log(ReportLevel.Info, "WaitStatus", "Ck browser server error"); if (Host.Local.TryFindSingle(repo.RecommerceTradeLink.ServerErrorInApplicationInfo.AbsolutePath.ToString(), out element)) { AttemptsCounter++; GlobalOverhead.Stopwatch.Start(); Global.TempErrorString = "Browser Server Error In Application - try go home"; if (Global.DoRegisterSoundAlerts) { Speech.Speak(Global.TempErrorString + " try number " + AttemptsCounter.ToString()); } WriteToErrorFile.Run(); Global.LogText = Global.TempErrorString; WriteToLogFile.Run(); BrowserGoHome.Run(); GlobalOverhead.Stopwatch.Stop(); } Report.Log(ReportLevel.Info, "WaitStatus", "look for recommerce link"); if (!Host.Local.TryFindSingle(repo.StorePortal.QAPOSReCommerceInfo.AbsolutePath.ToString(), out element)) { if (AttemptsCounter > Global.MaxRetries) { Global.LogText = "Flushing wait for browser to load"; WriteToLogFile.Run(); Global.POSBrowserFlush = true; } else { } } } Global.LogText = "OUT fnWaitForBrowserToLoad"; WriteToLogFile.Run(); Global.LogFileIndentLevel--; }
public void Run() { //*****************Start Scenario 35 - Retech - Simple One SKU pay with PURCC ****************** Mouse.DefaultMoveTime = 300; Keyboard.DefaultKeyPressTime = 100; Delay.SpeedFactor = 1.0; Ranorex.Unknown element = null; Global.AbortScenario = false; // Uses same SKU and Customer for Scenarios 3, 4, and 5 RanorexRepository repo = new RanorexRepository(); fnTimeMinusOverhead TimeMinusOverhead = new fnTimeMinusOverhead(); fnDumpStatsQ4 DumpStatsQ4 = new fnDumpStatsQ4(); fnWriteToLogFile WriteToLogFile = new fnWriteToLogFile(); FnWriteOutStatsQ4Buffer WriteOutStatsQ4Buffer = new FnWriteOutStatsQ4Buffer(); fnUpdatePALStatusMonitor UpdatePALStatusMonitor = new fnUpdatePALStatusMonitor(); FnCheckout Checkout = new FnCheckout(); fnWriteToErrorFile WriteToErrorFile = new fnWriteToErrorFile(); FnEnterSKU EnterSKU = new FnEnterSKU(); Global.CurrentScenario = 35; if (!Global.DoScenarioFlag[Global.CurrentScenario]) // if(Global.CurrentScenario != 9999) { return; } Global.RetechScenariosPerformed++; UpdatePALStatusMonitor.Run(); // Create new stopwatch Stopwatch MystopwatchTT = new Stopwatch(); MystopwatchTT.Reset(); MystopwatchTT.Start(); Stopwatch MystopwatchTotal = new Stopwatch(); MystopwatchTotal.Reset(); MystopwatchTotal.Start(); Stopwatch MystopwatchQ4 = new Stopwatch(); Stopwatch MystopwatchModuleTotal = new Stopwatch(); Stopwatch MystopwatchF1 = new Stopwatch(); Global.LogText = @"---> fnDoScenario35 Iteration: " + Global.CurrentIteration; WriteToLogFile.Run(); Report.Log(ReportLevel.Info, "Scenario 35 IN", "Iteration: " + Global.CurrentIteration, new RecordItemIndex(0)); // Start MystopwatchModuleTotal.Reset(); MystopwatchModuleTotal.Start(); MystopwatchQ4.Reset(); MystopwatchQ4.Start(); Global.LogText = @"Start Transaction"; WriteToLogFile.Run(); // Click on start a transaction while (!Host.Local.TryFindSingle(repo.Retech.StartATransactionInfo.AbsolutePath.ToString(), out element)) { Thread.Sleep(100); } repo.Retech.StartATransaction.Click(); if (Host.Local.TryFindSingle(repo.GenericDialogView.CriticalErrorSavingTransactionCallHInfo.AbsolutePath.ToString(), out element)) { repo.GenericDialogView.ErrorSavingButtonOK.Click(); Thread.Sleep(200); Global.TempErrorString = "Error Saving Transaction"; WriteToErrorFile.Run(); Global.LogText = Global.TempErrorString; WriteToLogFile.Run(); } MystopwatchF1.Reset(); MystopwatchF1.Start(); while (!Host.Local.TryFindSingle(repo.RetechLoginView.TxtPasswordInfo.AbsolutePath.ToString(), out element)) { Thread.Sleep(100); if (MystopwatchF1.ElapsedMilliseconds > 1500) { repo.Retech.StartATransaction.Click(); MystopwatchF1.Reset(); MystopwatchF1.Start(); } } Global.TempFloat = (float)MystopwatchQ4.ElapsedMilliseconds / 1000; TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = @"[F5] Start Transaction"; Global.Module = "Log On"; DumpStatsQ4.Run(); // Enter Password MystopwatchQ4.Reset(); MystopwatchQ4.Start(); // if(repo.RetechLoginView.UserId.TextValue == "") // { // repo.RetechLoginView.UserId.TextValue = "PSU"; // } repo.RetechLoginView.TxtPassword.PressKeys("advanced{Return}"); switch (Global.RetechVersion.Substring(0, 3)) { case "5.6": while (!repo.Retech.LetsGetStarted_5_6_0_103.Visible) { Thread.Sleep(100); } break; case "5.7": while (!repo.AddLineItemCommand.Enabled) { Thread.Sleep(100); } break; default: while (!repo.AddLineItemCommand.Enabled) { if (Host.Local.TryFindSingle(repo.ContinueButtonCommandInfo.AbsolutePath.ToString(), out element)) { repo.ContinueButtonCommand.Click(); } Thread.Sleep(100); } break; } TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = "Enter Password"; Global.Module = "Log On"; DumpStatsQ4.Run(); TimeMinusOverhead.Run((float)MystopwatchModuleTotal.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = "Module Total Time"; Global.Module = "Log On"; DumpStatsQ4.Run(); MystopwatchModuleTotal.Reset(); MystopwatchModuleTotal.Start(); Global.LogText = @"Add Item"; WriteToLogFile.Run(); // Press F1 add item Keyboard.Press("{F1}"); while (!repo.AddItemText.Enabled) { Thread.Sleep(100); } // Enter SKU Global.CurrentSKU = Global.S4Sku1; EnterSKU.Run(); // Press F1 add item Keyboard.Press("{F1}"); while (!repo.AddItemText.Enabled) { Thread.Sleep(100); } // Enter SKU cost 1 penny Global.CurrentSKU = "644917"; EnterSKU.Run(); // Return the SKU MystopwatchQ4.Reset(); MystopwatchQ4.Start(); // Press returns repo.Retech.ReturnsF4.Click(); Thread.Sleep(100); // select add item and add the SKU repo.AddLineItemCommand.Click(); //Thread.Sleep(100); repo.AddItemText.TextValue = Global.S4Sku1; Keyboard.Press("{Enter}"); // Select Defective for retrun reason repo.ReturnReason.Click("246;16"); repo.Retech.ListItemGameStopOESOrdersItemsRetur.Click("153;6"); repo.ReturnReason.PressKeys("{LControlKey down}{LMenu down}"); repo.ReturnReason.PressKeys("{LMenu up}{LControlKey up}"); repo.Retech.DataContextShowCheckoutViewCommand.Click("93;62"); repo.Retech.DataContextShowCheckoutViewCommand.Click("95;56"); //Click on Scan or select receipt and select no receipt repo.Retech.SelectReceipt.Click("369;20"); repo.Retech.NoReceiptAvailableCommand.Click("265;11"); repo.Retech.SelectReceipt.PressKeys("{LControlKey down}{LMenu down}"); repo.Retech.SelectReceipt.PressKeys("{LControlKey up}{LMenu up}"); // Press F5 continue Keyboard.Press("{F5}"); TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = "Enter Return"; Global.Module = "Add Return"; DumpStatsQ4.Run(); // @#@#@# C H E C K O U T #@#@#@ Global.PayWithMethod = "PURCC"; Checkout.Run(); TimeMinusOverhead.Run((float)MystopwatchTT.ElapsedMilliseconds); // Subtract overhead and store in Global.Q4StatLine Global.CurrentMetricDesciption = @"Scenario 35"; Global.Module = "Total Time"; DumpStatsQ4.Run(); // Write out metrics buffer WriteOutStatsQ4Buffer.Run(); Global.LogText = "<--- fnDoScenario35 Iteration: " + Global.CurrentIteration; WriteToLogFile.Run(); Report.Log(ReportLevel.Info, "Scenario 35 OUT", "Iteration: " + Global.CurrentIteration, new RecordItemIndex(0)); Thread.Sleep(2000); // ***********End Scenario 35***************** }
/// <summary> /// Performs the playback of actions in this module. /// </summary> /// <remarks>You should not call this method directly, instead pass the module /// instance to the <see cref="TestModuleRunner.Run(ITestModule)"/> method /// that will in turn invoke this method.</remarks> void ITestModule.Run() { if (!Global.SwitchUploadOnly) { Mouse.DefaultMoveTime = 300; Keyboard.DefaultKeyPressTime = 100; Delay.SpeedFactor = 1.0; RanorexRepository repo = new RanorexRepository(); fnParseSwitches ParseSwitches = new fnParseSwitches(); fnWriteToErrorFile WriteToErrorFile = new fnWriteToErrorFile(); fnPlayWavFile PlayWavFile = new fnPlayWavFile(); // Get default scenario list // - use DefaultScenarioList.txt for all but last register // - use DefaultScenarioListLastRegister.txt for the last register in a store string ListToUse = ""; string DefaultScenarios = "13,16,18,19,20,33,34,36,37,41,42,43,47"; // if( Global.RegisterNumber == "4" || ( Global.RegisterName == "USA04285-3" ) // ) // ListToUse = "DefaultScenarioListLastRegister.txt"; // else ListToUse = "DefaultScenarioList.txt"; try { // Read in the default Scenario List from Register 1 \Ranorex Automation\DefaultScenarioList.txt using (System.IO.StreamReader RegisterScenarioFileGet = new System.IO.StreamReader(Global.Register1DriveLetter + @":\" + Global.AutomationFileDirectory + @"\" + ListToUse)) { DefaultScenarios = RegisterScenarioFileGet.ReadLine(); RegisterScenarioFileGet.Close(); } } catch { // Write out default Scenario List to Register 1 \Ranorex Automation\DefaultScenarioList.txt using (System.IO.StreamWriter RegisterScenarioFilePut = new System.IO.StreamWriter(Global.Register1DriveLetter + @":\" + Global.AutomationFileDirectory + @"\" + ListToUse)) { RegisterScenarioFilePut.WriteLine(DefaultScenarios); RegisterScenarioFilePut.Close(); } } string TextInput; string Prompt = "Enter list of scenarios like 3,5-7,/LX\n\n" + "Back Office ---------------------------------------------------\n" + "Scenario 13: eMail\n" + "Scenario 14: Performance Dashboard\n" + "Scenario 15: Performance Dashboard Loop without exiting\n" + "Scenario 18: Transaction Journal\n" + "Scenario 19: Cover Art\n" + "Scenario 20: HR Workday Employee List\n" + "Scenario 21: WIS Web-In-Store\n\n" + "RETECH --------------------------------------------------------\n" + "Scenario 16: Returns\n" + "Scenario 33: Simple One SKU Cash\n" + "Scenario 34: Simple One SKU Credit\n" + "Scenario 36: Item Search\n" + "Scenario 37: Reserve Pickup\n" + "Scenario 38: Suspend Resume\n" + "Scenario 41: GPG\n" + "Scenario 42: PRP\n" + "Scenario 43: Card Balance\n" + "Scenario 47: Purchase 1 SKU with 5 trades and cach back\n\n" + "Other --------------------------------------------------------\n" + "Scenario 50: Dashboard data init (about 20 minutes)\n\n" + "Switches: put comma in front of switches 2-4,7,/NXS\n" + " N=Phone Numbers NonLoyalty\n" + " L=Phone Numbers Loyalty\n" + " A=All Registers use all Phone Numbers\n" + " X=Skip Customer Lookup (NO 4,7,17,20-23,25)\n" + " M=Metrics file create when no save them\n" + " Q=Quit running when get error\n" + " S=Scenario 9 use 40 SKUs"; if (Global.AutoRun) { if (Global.CommandLineArg3 != "") { TextInput = Global.CommandLineArg3; } else { TextInput = DefaultScenarios; } } else { InputBoxResult BoxInput = InputBox.Show(Prompt, "Scenarios", DefaultScenarios); if (BoxInput.ReturnCode == DialogResult.Cancel) { Environment.Exit(0); } // Exit if cancel pressed TextInput = BoxInput.Text.ToUpper(); } // Write out default Scenario List to Register 1 \Ranorex Automation\DefaultScenarioList.txt using (System.IO.StreamWriter RegisterScenarioFilePut = new System.IO.StreamWriter(Global.Register1DriveLetter + @":\" + Global.AutomationFileDirectory + @"\" + ListToUse)) { RegisterScenarioFilePut.WriteLine(TextInput); RegisterScenarioFilePut.Close(); } // Remove all spaces from the input TextInput = TextInput.Replace(" ", System.String.Empty); // Set flag if just Scenario 32 is selected - it consumes card numbers - so cannot run as part of normal run if (TextInput == "32") { Global.JustScenario32 = true; } // Clear the DoScenarioFlag array for (int Offset = 0; Offset <= Global.MaxScenarioNumber; Offset++) { Global.DoScenarioFlag[Offset] = false; } string[] PromptItems = TextInput.Split(','); string TempText; int PromptItemsCount = PromptItems.Length; int ParseOffset; for (ParseOffset = 0; ParseOffset <= PromptItemsCount - 1; ParseOffset++) { TempText = PromptItems[ParseOffset]; ParseSwitches.Run(TempText); } // If you can connect to the PALDB then provide the option to upload the test. var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["MetricsRepository"].ConnectionString); try { Report.Log(ReportLevel.Info, "fnGetScenariosToRun", "Open connection to DB", new RecordItemIndex(0)); connection.Open(); connection.Close(); var mSystemInfo = new FnSystemInfo(); TestModuleRunner.Run(mSystemInfo); } catch (Exception e) { Global.IsPerformanceTest = false; Global.DBAvailable = false; string sayString = ""; if (e.ToString().IndexOf("Thread was being aborted.") == -1) { sayString = e.ToString().Substring(0, 28); Global.TempErrorString = "Cannot connect to Metric DB: " + e.Message; WriteToErrorFile.Run(); //MessageBox.Show(e.ToString(),Global.TempErrorString); } } } }