diff --git a/Microsoft.Dynamics365.UIAutomation.Api.UCI/DTO/AppElementReference.cs b/Microsoft.Dynamics365.UIAutomation.Api.UCI/DTO/AppElementReference.cs
index f1edcc3c..8d0e5f62 100644
--- a/Microsoft.Dynamics365.UIAutomation.Api.UCI/DTO/AppElementReference.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Api.UCI/DTO/AppElementReference.cs
@@ -18,7 +18,7 @@ public static class Navigation
public static string AreaMoreMenu = "Nav_AreaMoreMenu";
public static string SubAreaContainer = "Nav_SubAreaContainer";
public static string WebAppMenuButton = "Nav_WebAppMenuButton";
- public static string UCAppMenuButton = "Nav_UCAppMenuButton";
+ public static string UCIAppMenuButton = "Nav_UCIAppMenuButton";
public static string SiteMapLauncherButton = "Nav_SiteMapLauncherButton";
public static string SiteMapLauncherCloseButton = "Nav_SiteMapLauncherCloseButton";
public static string SiteMapAreaMoreButton = "Nav_SiteMapAreaMoreButton";
@@ -265,7 +265,7 @@ public static class AppElements
{ "Nav_AreaMoreMenu" , "//ul[@role=\"menubar\"]"},
{ "Nav_SubAreaContainer" , "//*[@data-id=\"navbar-container\"]/div/ul"},
{ "Nav_WebAppMenuButton" , "//*[@id=\"TabArrowDivider\"]/a"},
- { "Nav_UCAppMenuButton" , "//button[@data-id=\"navbar-switch-app\"]"},
+ { "Nav_UCIAppMenuButton" , "//button[@data-id=\"navbar-switch-app\"]"},
{ "Nav_SiteMapLauncherButton", "//button[@data-lp-id=\"sitemap-launcher\"]" },
{ "Nav_SiteMapLauncherCloseButton", "//button[@aria-label=\"Close Site Map\"]" },
{ "Nav_SiteMapAreaMoreButton", "//button[@data-lp-id=\"sitemap-areaBar-more-btn\"]" },
diff --git a/Microsoft.Dynamics365.UIAutomation.Api.UCI/DTO/ElementReference.cs b/Microsoft.Dynamics365.UIAutomation.Api.UCI/DTO/ElementReference.cs
index 2eec6e8e..06259c85 100644
--- a/Microsoft.Dynamics365.UIAutomation.Api.UCI/DTO/ElementReference.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Api.UCI/DTO/ElementReference.cs
@@ -182,8 +182,10 @@ public static class Elements
{ "Login_Password", "//input[@type='password']"},
{ "Login_SignIn", "id(\"cred_sign_in_button\")"},
{ "Login_CrmMainPage", "//*[contains(@id,'crmTopBar')or contains(@data-id,'topBar')]"},
- { "Login_CrmUCMainPage", "//*[contains(@data-id,'topBar')]"},
+ { "Login_CrmUCIMainPage", "//*[contains(@data-id,'topBar')]"},
{ "Login_StaySignedIn", "//input[@id=\"idSIButton9\"]"},
+ { "Login_OneTimeCode", "//input[@name='otc']"},
+
//Notification
{ "Notification_AppMessageBar", "id(\"crmAppMessageBar\")"},
@@ -724,8 +726,9 @@ public static class Login
public static string LoginPassword = "Login_Password";
public static string SignIn = "Login_SignIn";
public static string CrmMainPage = "Login_CrmMainPage";
- public static string CrmUCMainPage = "Login_CrmUCMainPage";
+ public static string CrmUCIMainPage = "Login_CrmUCIMainPage";
public static string StaySignedIn = "Login_StaySignedIn";
+ public static string OneTimeCode = "Login_OneTimeCode";
}
public static class Report
{
diff --git a/Microsoft.Dynamics365.UIAutomation.Api.UCI/Elements/OnlineLogin.cs b/Microsoft.Dynamics365.UIAutomation.Api.UCI/Elements/OnlineLogin.cs
index 079566b1..2f00568c 100644
--- a/Microsoft.Dynamics365.UIAutomation.Api.UCI/Elements/OnlineLogin.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Api.UCI/Elements/OnlineLogin.cs
@@ -32,9 +32,10 @@ public void Login(Uri orgUrl)
/// URL of the organization
/// User name
/// Password
- public void Login(Uri orgUrl, SecureString username, SecureString password)
+ /// SecrectKey for multi-factor authentication
+ public void Login(Uri orgUrl, SecureString username, SecureString password, SecureString mfaSecrectKey = null)
{
- _client.Login(orgUrl, username, password);
+ _client.Login(orgUrl, username, password, mfaSecrectKey);
_client.InitializeModes();
}
@@ -45,10 +46,11 @@ public void Login(Uri orgUrl, SecureString username, SecureString password)
/// URL of the organization
/// User name
/// Password
+ /// SecrectKey for multi-factor authentication
/// Actions required during redirect
- public void Login(Uri orgUrl, SecureString username, SecureString password, Action redirectAction)
+ public void Login(Uri orgUrl, SecureString username, SecureString password, SecureString mfaSecrectKey, Action redirectAction)
{
- _client.Login(orgUrl, username, password, redirectAction);
+ _client.Login(orgUrl, username, password, mfaSecrectKey, redirectAction);
_client.InitializeModes();
}
diff --git a/Microsoft.Dynamics365.UIAutomation.Api.UCI/Microsoft.Dynamics365.UIAutomation.Api.UCI.csproj b/Microsoft.Dynamics365.UIAutomation.Api.UCI/Microsoft.Dynamics365.UIAutomation.Api.UCI.csproj
index 586cfd3b..6491e94e 100644
--- a/Microsoft.Dynamics365.UIAutomation.Api.UCI/Microsoft.Dynamics365.UIAutomation.Api.UCI.csproj
+++ b/Microsoft.Dynamics365.UIAutomation.Api.UCI/Microsoft.Dynamics365.UIAutomation.Api.UCI.csproj
@@ -40,6 +40,9 @@
..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll
True
+
+ ..\packages\Otp.NET.1.2.1\lib\net45\Otp.NET.dll
+
..\packages\System.Buffers.4.4.0\lib\netstandard1.1\System.Buffers.dll
diff --git a/Microsoft.Dynamics365.UIAutomation.Api.UCI/WebClient.cs b/Microsoft.Dynamics365.UIAutomation.Api.UCI/WebClient.cs
index be870fd4..03870925 100644
--- a/Microsoft.Dynamics365.UIAutomation.Api.UCI/WebClient.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Api.UCI/WebClient.cs
@@ -6,12 +6,12 @@
using OpenQA.Selenium.Support.UI;
using System;
using System.Collections.Generic;
-using System.Collections.Specialized;
+using System.Diagnostics;
using System.Linq;
using System.Security;
using System.Threading;
using System.Web;
-using System.Web.Script.Serialization;
+using OtpNet;
namespace Microsoft.Dynamics365.UIAutomation.Api.UCI
{
@@ -31,8 +31,8 @@ internal BrowserCommandOptions GetOptions(string commandName)
{
return new BrowserCommandOptions(Constants.DefaultTraceSource,
commandName,
- 0,
- 0,
+ Constants.DefaultRetryAttempts,
+ Constants.DefaultRetryDelay,
null,
true,
typeof(NoSuchElementException), typeof(StaleElementReferenceException));
@@ -48,12 +48,12 @@ internal BrowserCommandResult InitializeModes()
if (Browser.Options.UCITestMode) queryParams += ",testmode=true";
if (Browser.Options.UCIPerformanceMode) queryParams += "&perf=true";
- if(!uri.Contains(queryParams) && !uri.Contains(System.Web.HttpUtility.UrlEncode(queryParams)))
+ if (!uri.Contains(queryParams) && !uri.Contains(System.Web.HttpUtility.UrlEncode(queryParams)))
{
var testModeUri = uri + queryParams;
driver.Navigate().GoToUrl(testModeUri);
-
+
}
WaitForMainPage();
@@ -72,31 +72,27 @@ internal void WaitForLoginPage()
driver.WaitUntilVisible(By.XPath(Elements.Xpath[Reference.Login.CrmMainPage])
, new TimeSpan(0, 0, 60),
- e => {
-
+ e =>
+ {
//determine if we landed on the Unified Client Main page
- if (driver.HasElement(By.XPath(Elements.Xpath[Reference.Login.CrmUCMainPage])))
+ if (driver.HasElement(By.XPath(Elements.Xpath[Reference.Login.CrmUCIMainPage])))
{
- e.WaitForPageToLoad();
- e.WaitForTransaction();
+ driver.WaitForPageToLoad();
+ driver.WaitForTransaction();
}
else //else we landed on the Web Client main page or app picker page
- {
- e.WaitForPageToLoad();
- e.SwitchTo().Frame(0);
- e.WaitForPageToLoad();
- //Switch Back to Default Content for Navigation Steps
- e.SwitchTo().DefaultContent();
- }
+ SwitchToDefaultContent(driver);
},
- f => { throw new Exception("Login page failed."); });
+ f => throw new Exception("Login page failed.")
+ );
}
+
internal void WaitForMainPage()
{
IWebDriver driver = this.Browser.Driver;
driver.WaitUntilVisible(By.XPath(Elements.Xpath[Reference.Login.CrmMainPage]));
driver.WaitForPageToLoad();
- if (driver.HasElement(By.XPath(Elements.Xpath[Reference.Login.CrmUCMainPage])))
+ if (driver.HasElement(By.XPath(Elements.Xpath[Reference.Login.CrmUCIMainPage])))
{
driver.WaitForTransaction();
}
@@ -106,49 +102,52 @@ internal void WaitForMainPage()
#region Login
internal BrowserCommandResult Login(Uri uri)
{
- if (this.Browser.Options.Credentials.Username == null)
+ var username = Browser.Options.Credentials.Username;
+ if (username == null)
return PassThroughLogin(uri);
- else
- return this.Execute(GetOptions("Login"), this.Login, uri, this.Browser.Options.Credentials.Username, this.Browser.Options.Credentials.Password, default(Action));
- }
- internal BrowserCommandResult Login(Uri orgUri, SecureString username, SecureString password)
- {
- return this.Execute(GetOptions("Login"), this.Login, orgUri, username, password, default(Action));
+ var password = Browser.Options.Credentials.Password;
+ return Login(uri, username, password);
}
- internal BrowserCommandResult Login(Uri orgUri, SecureString username, SecureString password, Action redirectAction)
+ internal BrowserCommandResult Login(Uri orgUri, SecureString username, SecureString password, SecureString mfaSecrectKey = null, Action redirectAction = null)
{
- return this.Execute(GetOptions("Login"), this.Login, orgUri, username, password, redirectAction);
+ return Execute(GetOptions("Login"), Login, orgUri, username, password, mfaSecrectKey, redirectAction);
}
- private LoginResult Login(IWebDriver driver, Uri uri, SecureString username, SecureString password,
- Action redirectAction)
+ private LoginResult Login(IWebDriver driver, Uri uri, SecureString username, SecureString password, SecureString mfaSecrectKey = null, Action redirectAction = null)
{
- var redirect = false;
- bool online = !(this.OnlineDomains != null && !this.OnlineDomains.Any(d => uri.Host.EndsWith(d)));
+ bool online = !(OnlineDomains != null && !OnlineDomains.Any(d => uri.Host.EndsWith(d)));
driver.Navigate().GoToUrl(uri);
- if (online)
- {
- if (driver.IsVisible(By.Id("use_another_account_link")))
- driver.ClickWhenAvailable(By.Id("use_another_account_link"));
-
- driver.WaitUntilAvailable(By.XPath(Elements.Xpath[Reference.Login.UserId]),
- $"The Office 365 sign in page did not return the expected result and the user '{username}' could not be signed in.");
-
- driver.FindElement(By.XPath(Elements.Xpath[Reference.Login.UserId])).SendKeys(username.ToUnsecureString());
- driver.FindElement(By.XPath(Elements.Xpath[Reference.Login.UserId])).SendKeys(Keys.Tab);
- driver.FindElement(By.XPath(Elements.Xpath[Reference.Login.UserId])).SendKeys(Keys.Enter);
+ if (!online)
+ return LoginResult.Success;
- Thread.Sleep(1000);
+ driver.ClickIfVisible(By.Id("use_another_account_link"));
- if (driver.IsVisible(By.Id("aadTile")))
+ bool waitingForOtc = false;
+ bool success = EnterUserName(driver, username);
+ if (!success)
+ {
+ var isUserAlreadyLogged = IsUserAlreadyLogged(driver);
+ if (isUserAlreadyLogged)
{
- driver.FindElement(By.Id("aadTile")).Click(true);
+ SwitchToDefaultContent(driver);
+ return LoginResult.Success;
}
- Thread.Sleep(1000);
+ ThinkTime(1000);
+ waitingForOtc = GetOtcInput(driver) != null;
+
+ if (!waitingForOtc)
+ throw new Exception($"Login page failed. {Reference.Login.UserId} not found.");
+ }
+
+ if (!waitingForOtc)
+ {
+ ThinkTime(1000);
+ driver.ClickIfVisible(By.Id("aadTile"));
+ ThinkTime(1000);
//If expecting redirect then wait for redirect to trigger
if (redirectAction != null)
@@ -156,30 +155,109 @@ private LoginResult Login(IWebDriver driver, Uri uri, SecureString username, Sec
//Wait for redirect to occur.
Thread.Sleep(3000);
- redirectAction?.Invoke(new LoginRedirectEventArgs(username, password, driver));
-
- redirect = true;
+ redirectAction.Invoke(new LoginRedirectEventArgs(username, password, driver));
+ return LoginResult.Redirect;
}
- else
- {
- driver.FindElement(By.XPath(Elements.Xpath[Reference.Login.LoginPassword])).SendKeys(password.ToUnsecureString());
- driver.FindElement(By.XPath(Elements.Xpath[Reference.Login.LoginPassword])).SendKeys(Keys.Tab);
- driver.FindElement(By.XPath(Elements.Xpath[Reference.Login.LoginPassword])).Submit();
- Thread.Sleep(1000);
+ EnterPassword(driver, password);
+ ThinkTime(1000);
+ }
- driver.WaitUntilVisible(By.XPath(Elements.Xpath[Reference.Login.StaySignedIn]), new TimeSpan(0, 0, 5));
+ EnterOneTimeCode(driver, mfaSecrectKey);
- if (driver.IsVisible(By.XPath(Elements.Xpath[Reference.Login.StaySignedIn])))
- {
- driver.ClickWhenAvailable(By.XPath(Elements.Xpath[Reference.Login.StaySignedIn]));
- }
+ ClickStaySignedIn(driver);
+
+ ThinkTime(1000);
+
+ return LoginResult.Success;
+ }
- WaitForLoginPage();
+ private static bool IsUserAlreadyLogged(IWebDriver driver)
+ {
+ var xpathToMainPage = By.XPath(Elements.Xpath[Reference.Login.CrmMainPage]);
+ bool result = driver.HasElement(xpathToMainPage);
+ return result;
+ }
+
+ private static string GenerateOneTimeCode(SecureString mfaSecrectKey)
+ {
+ // credits:
+ // https://dev.to/j_sakamoto/selenium-testing---how-to-sign-in-to-two-factor-authentication-2joi
+ // https://www.nuget.org/packages/Otp.NET/
+ string key = mfaSecrectKey?.ToUnsecureString(); // <- this 2FA secret key.
+
+ byte[] base32Bytes = Base32Encoding.ToBytes(key);
+
+ var totp = new Totp(base32Bytes);
+ var result = totp.ComputeTotp(); // <- got 2FA coed at this time!
+ return result;
+ }
+
+ private bool EnterUserName(IWebDriver driver, SecureString username)
+ {
+ var input = driver.WaitUntilAvailable(By.XPath(Elements.Xpath[Reference.Login.UserId]), new TimeSpan(0, 0, 30));
+ if (input == null)
+ return false;
+
+ input.SendKeys(username.ToUnsecureString());
+ input.SendKeys(Keys.Enter);
+ return true;
+ }
+
+ private static void EnterPassword(IWebDriver driver, SecureString password)
+ {
+ var input = driver.FindElement(By.XPath(Elements.Xpath[Reference.Login.LoginPassword]));
+ input.SendKeys(password.ToUnsecureString());
+ input.Submit();
+ }
+
+ private static void EnterOneTimeCode(IWebDriver driver, SecureString mfaSecrectKey)
+ {
+ int attempts = 0;
+ while (true)
+ {
+ try
+ {
+ IWebElement input = GetOtcInput(driver);
+ var oneTimeCode = GenerateOneTimeCode(mfaSecrectKey);
+ input.SendKeys(oneTimeCode);
+ input.Submit();
+ return;
+ }
+ catch (Exception e)
+ {
+ Trace.TraceWarning($"An Error ocur entering OTC. Exception: {e}");
+ if (attempts >= Constants.DefaultRetryAttempts)
+ throw;
+ Thread.Sleep(Constants.DefaultRetryDelay);
+ attempts++;
}
}
+ }
+
+ private static IWebElement GetOtcInput(IWebDriver driver)
+ => driver.FindElement(By.XPath(Elements.Xpath[Reference.Login.OneTimeCode]));
+
+ private static void ClickStaySignedIn(IWebDriver driver)
+ {
+ var xpath = By.XPath(Elements.Xpath[Reference.Login.StaySignedIn]);
+ driver.WaitUntilVisible(xpath, new TimeSpan(0, 0, 5),
+ e => driver.ClickWhenAvailable(xpath));
+ }
- return redirect ? LoginResult.Redirect : LoginResult.Success;
+ private static void SwitchToDefaultContent(IWebDriver driver)
+ {
+ SwitchToMainFrame(driver);
+
+ //Switch Back to Default Content for Navigation Steps
+ driver.SwitchTo().DefaultContent();
+ }
+
+ private static void SwitchToMainFrame(IWebDriver driver)
+ {
+ driver.WaitForPageToLoad();
+ driver.SwitchTo().Frame(0);
+ driver.WaitForPageToLoad();
}
internal BrowserCommandResult PassThroughLogin(Uri uri)
{
@@ -193,7 +271,7 @@ internal BrowserCommandResult PassThroughLogin(Uri uri)
});
}
-
+
public void ADFSLoginAction(LoginRedirectEventArgs args)
{
@@ -209,16 +287,9 @@ public void ADFSLoginAction(LoginRedirectEventArgs args)
//Insert any additional code as required for the SSO scenario
//Wait for CRM Page to load
- d.WaitUntilVisible(By.XPath(Elements.Xpath[Reference.Login.CrmMainPage])
- , new TimeSpan(0, 0, 60),
- e =>
- {
- e.WaitForPageToLoad();
- e.SwitchTo().Frame(0);
- e.WaitForPageToLoad();
- },
- f => { throw new Exception("Login page failed."); });
-
+ d.WaitUntilVisible(By.XPath(Elements.Xpath[Reference.Login.CrmMainPage]), new TimeSpan(0, 0, 60),
+ e => SwitchToMainFrame(d),
+ f => throw new Exception("Login page failed."));
}
public void MSFTLoginAction(LoginRedirectEventArgs args)
@@ -249,13 +320,8 @@ public void MSFTLoginAction(LoginRedirectEventArgs args)
//Wait for CRM Page to load
d.WaitUntilVisible(By.XPath(Elements.Xpath[Reference.Login.CrmMainPage])
, new TimeSpan(0, 0, 60),
- e =>
- {
- e.WaitForPageToLoad();
- e.SwitchTo().Frame(0);
- e.WaitForPageToLoad();
- },
- f => { throw new Exception("Login page failed."); });
+ e => SwitchToMainFrame(d),
+ f => throw new Exception("Login page failed."));
}
@@ -264,55 +330,46 @@ public void MSFTLoginAction(LoginRedirectEventArgs args)
#region Navigation
internal BrowserCommandResult OpenApp(string appName, int thinkTime = Constants.DefaultThinkTime)
{
- this.Browser.ThinkTime(thinkTime);
+ Browser.ThinkTime(thinkTime);
- return this.Execute(GetOptions("Open App"), driver =>
+ return Execute(GetOptions($"Open App {appName}"), driver =>
{
driver.SwitchTo().DefaultContent();
//Handle left hand Nav in Web Client
- if (driver.HasElement(By.XPath(AppElements.Xpath[AppReference.Navigation.WebAppMenuButton])))
- {
- driver.ClickWhenAvailable(By.XPath(AppElements.Xpath[AppReference.Navigation.WebAppMenuButton]));
-
- OpenAppFromMenu(driver, appName);
- }
- else if (driver.HasElement(By.XPath(AppElements.Xpath[AppReference.Navigation.UCAppMenuButton]))) //Handle Left Hand Nav in UC Client
- {
- driver.ClickWhenAvailable(By.XPath(AppElements.Xpath[AppReference.Navigation.UCAppMenuButton]));
-
- OpenAppFromMenu(driver, appName);
- }
- else if (driver.HasElement(By.XPath(AppElements.Xpath[AppReference.Navigation.UCIAppContainer]))) //Handle main.aspx?ForcUCI=1
- {
- var tileContainer = driver.FindElement(By.XPath(AppElements.Xpath[AppReference.Navigation.UCIAppContainer]));
- tileContainer.FindElement(By.XPath(AppElements.Xpath[AppReference.Navigation.UCIAppTile].Replace("[NAME]", appName))).Click(true);
-
- WaitForMainPage();
- }
- else
- {
- //Switch to frame 0
- driver.SwitchTo().Frame(0);
-
- if (driver.HasElement(By.XPath(AppElements.Xpath[AppReference.Navigation.UCIAppContainer])))
- {
- var tileContainer = driver.FindElement(By.XPath(AppElements.Xpath[AppReference.Navigation.UCIAppContainer]));
- tileContainer.FindElement(By.XPath(AppElements.Xpath[AppReference.Navigation.UCIAppTile].Replace("[NAME]", appName))).Click(true);
+ var success = TryOpenAppFromMenu(driver, appName, AppReference.Navigation.WebAppMenuButton) ||
+ TryOpenAppFromMenu(driver, appName, AppReference.Navigation.UCIAppMenuButton) ||
+ TryToClickInAppTile(appName, driver);
+ if (!success)
+ throw new InvalidOperationException($"App Name {appName} not found.");
- WaitForMainPage();
- }
- else
- throw new InvalidOperationException($"App Name {appName} not found.");
- }
Thread.Sleep(1000);
-
+ WaitForMainPage();
InitializeModes();
-
return true;
});
}
+ private bool TryOpenAppFromMenu(IWebDriver driver, string appName, string appMenuButton)
+ {
+ try
+ {
+ var xpathToAppMenu = By.XPath(AppElements.Xpath[appMenuButton]);
+ bool found = driver.TryFindElement(xpathToAppMenu, out var appMenu);
+ if (found)
+ {
+ appMenu.Click(true);
+ OpenAppFromMenu(driver, appName);
+ }
+ return found;
+ }
+ catch (Exception e)
+ {
+ throw new InvalidOperationException($"App Button {appMenuButton} not found.", e);
+ }
+
+ }
+
internal void OpenAppFromMenu(IWebDriver driver, string appName)
{
var container = driver.WaitUntilAvailable(By.XPath(AppElements.Xpath[AppReference.Navigation.AppMenuContainer]));
@@ -328,9 +385,22 @@ internal void OpenAppFromMenu(IWebDriver driver, string appName)
driver.WaitUntilVisible(By.XPath(AppElements.Xpath[AppReference.Application.Shell]));
driver.WaitUntilVisible(By.XPath(AppElements.Xpath[AppReference.Navigation.SiteMapLauncherButton]));
+ }
- WaitForMainPage();
+ private static bool TryToClickInAppTile(string appName, IWebDriver driver)
+ {
+ //Switch to frame 0
+ driver.SwitchTo().Frame(0);
+ IWebElement tileContainer;
+ bool success = driver.TryFindElement(By.XPath(AppElements.Xpath[AppReference.Navigation.UCIAppContainer]), out tileContainer);
+ if (success)
+ {
+ var appTile = tileContainer.FindElement(By.XPath(AppElements.Xpath[AppReference.Navigation.UCIAppTile].Replace("[NAME]", appName)));
+ appTile.Click(true);
+ }
+ return success;
}
+
internal BrowserCommandResult OpenGroupSubArea(string group, string subarea, int thinkTime = Constants.DefaultThinkTime)
{
this.Browser.ThinkTime(thinkTime);
@@ -420,30 +490,13 @@ internal BrowserCommandResult OpenSubArea(string area, string subarea, int
public BrowserCommandResult> OpenAreas(string area, int thinkTime = Constants.DefaultThinkTime)
{
- return this.Execute(GetOptions("Open Unified Interface Area"), driver =>
+ return Execute(GetOptions("Open Unified Interface Area"), driver =>
{
-
- //9.0.2
- var areas = OpenMenu().Value;
-
- if (areas != null)
- {
- if (!areas.ContainsKey(area))
- {
- throw new InvalidOperationException($"No area with the name '{area}' exists.");
- }
-
- return areas;
- }
-
- //9.1
- areas = OpenMenuFallback(area).Value;
+ // 9.1 ?? 9.0.2 <- inverted order (fallback first) run quickly
+ var areas = OpenMenuFallback(area).Value ?? OpenMenu().Value;
if (!areas.ContainsKey(area))
- {
- // In this scenario -
throw new InvalidOperationException($"No area with the name '{area}' exists.");
- }
return areas;
});
@@ -510,10 +563,7 @@ public BrowserCommandResult> OpenMenuFallback(st
dictionary.Add(item.Text.ToLowerString(), item);
}
},
- e =>
- {
- throw new InvalidOperationException("The Main Menu is not available.");
- });
+ e => throw new InvalidOperationException("The Main Menu is not available."));
}
if (driver.HasElement(By.XPath(AppElements.Xpath[AppReference.Navigation.SiteMapAreaMoreButton])))
@@ -2149,7 +2199,7 @@ public BrowserCommandResult SetValue(string field, DateTime value, string
timeField.SendKeys(time);
},
d => timeField.GetAttribute("value") == time,
- new TimeSpan(0, 0, 9), 3
+ new TimeSpan(0, 0, 9), 3
);
driver.WaitForTransaction();
}
@@ -2157,7 +2207,7 @@ public BrowserCommandResult SetValue(string field, DateTime value, string
{
throw new InvalidOperationException($"Timeout after 10 seconds. Expected: {value}. Actual: {timeField.GetAttribute("value")}", ex);
}
-
+
return true;
});
}
@@ -2555,7 +2605,7 @@ public BrowserCommandResult GetValue(DateTimeControl control)
var dateField = driver.WaitUntilAvailable(xPath, $"Field: {field} Does not exist");
string strDate = dateField.GetAttribute("value");
var date = DateTime.Parse(strDate);
-
+
// Try get Time
var timeFieldXPath = By.XPath(AppElements.Xpath[AppReference.Entity.FieldControlDateTimeTimeInputUCI].Replace("[FIELD]", field));
bool success = driver.TryFindElement(timeFieldXPath, out var timeField);
@@ -2738,7 +2788,7 @@ internal BrowserCommandResult GetHeaderValue(LookupItem control)
return GetValue(control);
});
}
-
+
internal BrowserCommandResult GetHeaderValue(LookupItem[] controls)
{
return this.Execute(GetOptions($"Get Header Activityparty LookupItem Value {controls.First().Name}"), driver =>
@@ -2803,7 +2853,7 @@ internal BrowserCommandResult GetHeaderValue(BooleanItem control)
return GetValue(control);
});
}
-
+
internal BrowserCommandResult GetHeaderValue(DateTimeControl control)
{
return this.Execute(GetOptions($"Get Header DateTime Value {control.Name}"), driver =>
diff --git a/Microsoft.Dynamics365.UIAutomation.Api.UCI/packages.config b/Microsoft.Dynamics365.UIAutomation.Api.UCI/packages.config
index b6bb0eab..8aa1f99d 100644
--- a/Microsoft.Dynamics365.UIAutomation.Api.UCI/packages.config
+++ b/Microsoft.Dynamics365.UIAutomation.Api.UCI/packages.config
@@ -2,6 +2,7 @@
+
diff --git a/Microsoft.Dynamics365.UIAutomation.Api/DTOs/ElementReference.cs b/Microsoft.Dynamics365.UIAutomation.Api/DTOs/ElementReference.cs
index 0e13b8bb..60d63410 100644
--- a/Microsoft.Dynamics365.UIAutomation.Api/DTOs/ElementReference.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Api/DTOs/ElementReference.cs
@@ -250,6 +250,7 @@ public static class Elements
{ "Login_SignIn", "id(\"cred_sign_in_button\")"},
{ "Login_CrmMainPage", "id(\"crmTopBar\")"},
{ "Login_StaySignedIn", "id(\"idSIButton9\")"},
+ { "Login_OneTimeCode", "//input[@name='otc']"},
//Notification
{ "Notification_AppMessageBar", "id(\"crmAppMessageBar\")"},
diff --git a/Microsoft.Dynamics365.UIAutomation.Browser/Extensions/SeleniumExtensions.cs b/Microsoft.Dynamics365.UIAutomation.Browser/Extensions/SeleniumExtensions.cs
index 99a5eb36..3a2a9fb8 100644
--- a/Microsoft.Dynamics365.UIAutomation.Browser/Extensions/SeleniumExtensions.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Browser/Extensions/SeleniumExtensions.cs
@@ -7,12 +7,12 @@
using OpenQA.Selenium.Support.Events;
using OpenQA.Selenium.Support.UI;
using System;
+using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
-using System.Threading;
using System.Web.Script.Serialization;
namespace Microsoft.Dynamics365.UIAutomation.Browser
@@ -302,6 +302,17 @@ public static bool TryFindElement(this IWebElement element, By by, out IWebEleme
}
}
+ public static void ClickIfVisible(this IWebDriver driver, By by, bool ignoreStaleElementException = true)
+ {
+ try
+ {
+ var link = driver.FindElement(by);
+ if (link.Displayed)
+ link.Click(ignoreStaleElementException);
+ }
+ catch (NoSuchElementException){}
+ }
+
public static bool IsVisible(this IWebDriver driver, By by)
{
try
@@ -329,10 +340,8 @@ public static bool IsVisible(this IWebElement element, By by)
public static void SetVisible(this IWebDriver driver, By by, bool visible)
{
IWebElement element = driver.FindElement(by);
- if (visible)
- driver.ExecuteScript($"document.getElementById('{element.GetAttribute("Id")}').setAttribute('style', 'display: inline;')");
- else
- driver.ExecuteScript($"document.getElementById('{element.GetAttribute("Id")}').setAttribute('style', 'display: none;')");
+ var visibility = visible ? "inline" : "none";
+ driver.ExecuteScript($"document.getElementById('{element.GetAttribute("Id")}').setAttribute('style', 'display: {visibility};')");
}
public static void SendKeys(this IWebElement element, string value, bool clear)
@@ -410,12 +419,13 @@ public static bool WaitFor(this IWebDriver driver, Predicate predica
public static bool WaitForPageToLoad(this IWebDriver driver)
{
- return WaitForPageToLoad(driver, Constants.DefaultTimeout.Seconds);
+ return WaitForPageToLoad(driver, (int)Constants.DefaultTimeout.TotalSeconds);
}
public static bool WaitForTransaction(this IWebDriver driver)
{
- return WaitForTransaction(driver, Constants.DefaultTimeout.Seconds);
+ var seconds = (int)Constants.DefaultTimeout.TotalSeconds;
+ return WaitForTransaction(driver, seconds);
}
//public static bool WaitForPageToLoad(this IWebDriver driver, TimeSpan timeout)
@@ -437,7 +447,6 @@ public static bool WaitForPageToLoad(this IWebDriver driver, int maxWaitTimeInSe
//Checks every 500 ms whether predicate returns true if returns exit otherwise keep trying till it returns ture
wait.Until(d => {
-
try
{
state = ((IJavaScriptExecutor)driver).ExecuteScript(@"return document.readyState").ToString();
@@ -487,7 +496,7 @@ public static bool WaitForTransaction(this IWebDriver driver, int maxWaitTimeInS
try
{
//Poll every half second to see if UCI is idle
- WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(500));
+ WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(maxWaitTimeInSeconds));
wait.Until(d =>
{
try
@@ -507,9 +516,9 @@ public static bool WaitForTransaction(this IWebDriver driver, int maxWaitTimeInS
return state;
});
}
- catch (Exception)
+ catch(Exception)
{
-
+ // ignored
}
return state;
@@ -527,12 +536,11 @@ public static object WaitForScript(this IWebDriver driver, string script, TimeSp
{
WebDriverWait wait = new WebDriverWait(driver, timeout);
- wait.Until((d) =>
+ wait.Until(d =>
{
try
{
object returnValue = ExecuteScript(driver, script);
-
return returnValue;
}
catch (InvalidOperationException)
@@ -547,74 +555,56 @@ public static object WaitForScript(this IWebDriver driver, string script, TimeSp
return null;
}
-
- public static IWebElement WaitUntilAvailable(this IWebDriver driver, By by)
- {
- return WaitUntilAvailable(driver, by, Constants.DefaultTimeout, null, null);
- }
-
- public static IWebElement WaitUntilAvailable(this IWebDriver driver, By by, TimeSpan timeout)
- {
- return WaitUntilAvailable(driver, by, timeout, null, null);
- }
-
+
public static IWebElement WaitUntilAvailable(this IWebDriver driver, By by, string exceptionMessage)
{
- return WaitUntilAvailable(driver, by, Constants.DefaultTimeout, null, d =>
- {
- throw new InvalidOperationException(exceptionMessage);
- });
+ return WaitUntilAvailable(driver, by, Constants.DefaultTimeout, null, d => throw new InvalidOperationException(exceptionMessage));
}
-
+
public static IWebElement WaitUntilAvailable(this IWebDriver driver, By by, TimeSpan timeout, string exceptionMessage)
{
- return WaitUntilAvailable(driver, by, timeout, null, d =>
- {
- throw new InvalidOperationException(exceptionMessage);
- });
+ return WaitUntilAvailable(driver, by, timeout, null, d => throw new InvalidOperationException(exceptionMessage));
}
- public static IWebElement WaitUntilAvailable(this IWebDriver driver, By by, TimeSpan timeout, Action successCallback)
+ public static IWebElement WaitUntilAvailable(this IWebDriver driver, By by, TimeSpan? timeout = null, Action successCallback = null, Action failureCallback = null)
{
- return WaitUntilAvailable(driver, by, timeout, successCallback, null);
+ Func conditions = d =>
+ {
+ ReadOnlyCollection elements = d.FindElements(by);
+ int? count = elements?.Count;
+ if (count == null || count == 0)
+ return null;
+
+ var result = count > 1
+ ? elements.FirstOrDefault(x => x?.Displayed == true)
+ : elements.First(x => x != null);
+
+ return result;
+ };
+ return WaitUntil(driver, conditions, timeout ?? Constants.DefaultTimeout, successCallback, failureCallback);
}
- public static IWebElement WaitUntilAvailable(this IWebDriver driver, By by, TimeSpan timeout, Action successCallback, Action failureCallback)
+ private static IWebElement WaitUntil(IWebDriver driver, Func conditions, TimeSpan? timeout, Action successCallback, Action failureCallback)
+ => TryWaitUntil(driver, conditions, timeout ?? Constants.DefaultTimeout, successCallback, failureCallback);
+
+ private static IWebElement TryWaitUntil(IWebDriver driver, Func conditions, TimeSpan timeout, Action successCallback, Action failureCallback)
{
- WebDriverWait wait = new WebDriverWait(driver, timeout);
- bool? success;
- IWebElement returnElement = null;
-
+ var wait = new WebDriverWait(driver, timeout);
wait.IgnoreExceptionTypes(typeof(NoSuchElementException), typeof(StaleElementReferenceException));
+ IWebElement result = null;
try
{
- var foundElements = wait.Until(d => d.FindElements(by));
- if (foundElements != null && foundElements.Count > 1)
- {
- returnElement = foundElements.FirstOrDefault(x => x.Displayed == true);
- }
- else
- {
- returnElement = foundElements.FirstOrDefault();
- }
- success = true;
- }
- catch (NoSuchElementException)
- {
- success = false;
- }
- catch (WebDriverTimeoutException)
- {
- success = false;
+ result = wait.Until(conditions);
}
+ catch (WebDriverTimeoutException) { }
- if (success.HasValue && success.Value && successCallback != null)
- successCallback(driver);
- else if (success.HasValue && !success.Value && failureCallback != null)
- failureCallback(driver);
+ if (result != null)
+ successCallback?.Invoke(driver);
+ else
+ failureCallback?.Invoke(driver);
- return returnElement;
+ return result;
}
public static bool WaitUntilVisible(this IWebDriver driver, By by)
@@ -679,15 +669,15 @@ public static bool RepeatUntil(this IWebDriver driver, Action action, Predicate<
try
{
action();
- attemps --;
- success = wait.Until(d => predicate(d));
+ attemps--;
+ success = wait.Until(d => predicate(d));
}
- catch (WebDriverTimeoutException){}
+ catch (WebDriverTimeoutException) { }
}
if (success)
successCallback?.Invoke();
- else
+ else
failureCallback?.Invoke();
return success;
@@ -721,10 +711,6 @@ public static bool WaitUntilClickable(this IWebDriver driver, By by, TimeSpan ti
success = true;
}
- catch (NoSuchElementException)
- {
- success = false;
- }
catch (WebDriverTimeoutException)
{
success = false;
@@ -746,15 +732,11 @@ public static string ToTraceString(this FindElementEventArgs e)
try
{
if (e.Element != null)
- {
return string.Format("{4} - [{0},{1}] - <{2}>{3}{2}>", e.Element.Location.X, e.Element.Location.Y, e.Element.TagName, e.Element.Text, e.FindMethod);
- }
- else
- {
- return e.FindMethod.ToString();
- }
+
+ return e.FindMethod.ToString();
}
- catch (Exception)
+ catch(Exception)
{
return e.FindMethod.ToString();
}
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/Microsoft.Dynamics365.UIAutomation.Sample.csproj b/Microsoft.Dynamics365.UIAutomation.Sample/Microsoft.Dynamics365.UIAutomation.Sample.csproj
index d9a016f2..2b503ebf 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/Microsoft.Dynamics365.UIAutomation.Sample.csproj
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/Microsoft.Dynamics365.UIAutomation.Sample.csproj
@@ -102,6 +102,7 @@
+
@@ -110,6 +111,7 @@
+
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/Properties/AssemblyInfo.cs b/Microsoft.Dynamics365.UIAutomation.Sample/Properties/AssemblyInfo.cs
index 12ff07f9..fedaea7c 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/Properties/AssemblyInfo.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/Properties/AssemblyInfo.cs
@@ -1,5 +1,4 @@
using System.Reflection;
-using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/SharedAPI/AzureInsights/OpenLead.cs b/Microsoft.Dynamics365.UIAutomation.Sample/SharedAPI/AzureInsights/OpenLead.cs
index c364c61a..b943dd87 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/SharedAPI/AzureInsights/OpenLead.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/SharedAPI/AzureInsights/OpenLead.cs
@@ -1,7 +1,6 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
-using Microsoft.Dynamics365.UIAutomation.Api;
using Microsoft.Dynamics365.UIAutomation.Browser;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/SharedAPI/AzureInsights/UploadTelemetryUCI.cs b/Microsoft.Dynamics365.UIAutomation.Sample/SharedAPI/AzureInsights/UploadTelemetryUCI.cs
index f0c69595..ca77a7d4 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/SharedAPI/AzureInsights/UploadTelemetryUCI.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/SharedAPI/AzureInsights/UploadTelemetryUCI.cs
@@ -3,22 +3,16 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
using System.Linq;
-using System.Security;
using System.Collections.Generic;
+using Microsoft.Dynamics365.UIAutomation.Sample.UCI;
namespace Microsoft.Dynamics365.UIAutomation.Sample.SharedAPI
{
[TestClass]
- public class UploadTelemetryUCI
+ public class UploadTelemetryUCI : TestsBase
{
-
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
- private readonly string _azureKey = System.Configuration.ConfigurationManager.AppSettings["AzureKey"].ToString();
+ private readonly string _azureKey = System.Configuration.ConfigurationManager.AppSettings["AzureKey"];
[TestMethod]
public void SharedTestUploadTelemetryUCI()
@@ -28,12 +22,11 @@ public void SharedTestUploadTelemetryUCI()
var options = TestSettings.Options;
options.AppInsightsKey = _azureKey;
options.UCIPerformanceMode = true;
-
-
+
var client = new WebClient(options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/SharedAPI/BrowserTests/BrowserTests.cs b/Microsoft.Dynamics365.UIAutomation.Sample/SharedAPI/BrowserTests/BrowserTests.cs
index c7abf3b5..2581b861 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/SharedAPI/BrowserTests/BrowserTests.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/SharedAPI/BrowserTests/BrowserTests.cs
@@ -1,5 +1,4 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
-using Microsoft.Dynamics365.UIAutomation.Api;
using Microsoft.Dynamics365.UIAutomation.Browser;
namespace Microsoft.Dynamics365.UIAutomation.Sample.SharedAPI
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/TestSettings.cs b/Microsoft.Dynamics365.UIAutomation.Sample/TestSettings.cs
index 54da41d1..4c35b0bd 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/TestSettings.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/TestSettings.cs
@@ -18,13 +18,13 @@ public static class TestSettings
private static readonly string Type = ConfigurationManager.AppSettings["BrowserType"];
private static readonly string RemoteType = ConfigurationManager.AppSettings["RemoteBrowserType"];
private static readonly string RemoteHubServerURL = ConfigurationManager.AppSettings["RemoteHubServer"];
- private static readonly string DriversPath = ConfigurationManager.AppSettings["DriversPath"];
- private static readonly bool? UsePrivateMode = Convert.ToBoolean(ConfigurationManager.AppSettings["UsePrivateMode"]);
+ private static readonly string DriversPath = ConfigurationManager.AppSettings["DriversPath"] ?? string.Empty;
+ private static readonly bool UsePrivateMode = Convert.ToBoolean(ConfigurationManager.AppSettings["UsePrivateMode"] ?? "true");
public static BrowserOptions Options = new BrowserOptions
{
BrowserType = (BrowserType)Enum.Parse(typeof(BrowserType), Type),
- PrivateMode = UsePrivateMode ?? true,
+ PrivateMode = UsePrivateMode,
FireEvents = false,
Headless = false,
UserAgent = false,
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/BusinessProcessFlow/BusinessProcessFlowNextStage.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/BusinessProcessFlow/BusinessProcessFlowNextStage.cs
index 7c062526..a2402399 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/BusinessProcessFlow/BusinessProcessFlowNextStage.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/BusinessProcessFlow/BusinessProcessFlowNextStage.cs
@@ -2,36 +2,25 @@
// Licensed under the MIT license.
using Microsoft.VisualStudio.TestTools.UnitTesting;
-using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class BusinessProcessFlowNextStageUCI
+ public class BusinessProcessFlowNextStage : TestsBase
{
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
+ [TestInitialize]
+ public override void InitTest() => base.InitTest();
+
+ [TestCleanup]
+ public override void FinishTest() => base.FinishTest();
+
+ public override void NavigateToHomePage() => _xrmApp.Navigation.OpenSubArea("Sales", "Leads");
[TestMethod]
public void UCITestBusinessProcessFlowNextStage()
{
- var client = new WebClient(TestSettings.Options);
- using (var xrmApp = new XrmApp(client))
- {
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
-
- xrmApp.Navigation.OpenApp(UCIAppName.Sales);
-
- xrmApp.Navigation.OpenSubArea("Sales", "Leads");
-
- xrmApp.Grid.OpenRecord(0);
-
- xrmApp.BusinessProcessFlow.NextStage("Qualify");
- }
+ _xrmApp.Grid.OpenRecord(0);
+ _xrmApp.BusinessProcessFlow.NextStage("Qualify");
}
}
}
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/BusinessProcessFlow/SwitchBusinessProcessFlow.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/BusinessProcessFlow/SwitchBusinessProcessFlow.cs
index d2780275..8c6a48a6 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/BusinessProcessFlow/SwitchBusinessProcessFlow.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/BusinessProcessFlow/SwitchBusinessProcessFlow.cs
@@ -2,37 +2,30 @@
// Licensed under the MIT license.
using Microsoft.VisualStudio.TestTools.UnitTesting;
-using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class SwitchBusinessProcessFlowUCI
+ public class SwitchBusinessProcessFlow : TestsBase
{
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
+ [TestInitialize]
+ public override void InitTest() => base.InitTest();
+
+ [TestCleanup]
+ public override void FinishTest() => base.FinishTest();
+
+ public override void NavigateToHomePage() => _xrmApp.Navigation.OpenSubArea("Sales", "Leads");
[TestMethod]
public void UCITestSwitchBusinessProcessFlow()
{
- var client = new WebClient(TestSettings.Options);
- using (var xrmApp = new XrmApp(client))
- {
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
-
- xrmApp.Navigation.OpenApp(UCIAppName.Sales);
+ _xrmApp.Navigation.OpenSubArea("Sales", "Leads");
- xrmApp.Navigation.OpenSubArea("Sales", "Leads");
+ _xrmApp.Grid.OpenRecord(0);
- xrmApp.Grid.OpenRecord(0);
+ //xrmApp.Entity.SwitchProcess("AccountEventingProcess");
+ _xrmApp.Entity.SwitchProcess("Lead to Opportunity Sales Process");
- //xrmApp.Entity.SwitchProcess("AccountEventingProcess");
- xrmApp.Entity.SwitchProcess("Lead to Opportunity Sales Process");
- }
}
}
}
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/CommandBar/AssignAccount.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/CommandBar/AssignAccount.cs
index f05e4caf..ed719eaf 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/CommandBar/AssignAccount.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/CommandBar/AssignAccount.cs
@@ -3,41 +3,31 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class AssignAccountUCI
+ public class AssignAccount : TestsBase
{
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
+ [TestInitialize]
+ public override void InitTest() => base.InitTest();
+
+ [TestCleanup]
+ public override void FinishTest() => base.FinishTest();
+
+ public override void NavigateToHomePage() => _xrmApp.Navigation.OpenSubArea("Sales", "Accounts");
[TestMethod]
public void UCITestAssignAccount()
{
- var client = new WebClient(TestSettings.Options);
- using (var xrmApp = new XrmApp(client))
- {
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
-
- xrmApp.Navigation.OpenApp(UCIAppName.Sales);
-
- xrmApp.Navigation.OpenSubArea("Sales", "Accounts");
-
- xrmApp.Grid.OpenRecord(0);
-
- xrmApp.ThinkTime(2000);
+ _xrmApp.Grid.OpenRecord(0);
- xrmApp.CommandBar.ClickCommand("Assign");
+ _xrmApp.ThinkTime(2000);
- xrmApp.Dialogs.Assign(Dialogs.AssignTo.User, "Grant");
+ _xrmApp.CommandBar.ClickCommand("Assign");
- }
+ _xrmApp.Dialogs.Assign(Dialogs.AssignTo.User, "Grant");
}
}
}
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/CommandBar/CloseOpportunity.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/CommandBar/CloseOpportunity.cs
index 045bca87..f09a6373 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/CommandBar/CloseOpportunity.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/CommandBar/CloseOpportunity.cs
@@ -2,39 +2,31 @@
// Licensed under the MIT license.
using Microsoft.VisualStudio.TestTools.UnitTesting;
-using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class CloseOpportunityUCI
+ public class CloseOpportunity : TestsBase
{
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
+ [TestInitialize]
+ public override void InitTest() => base.InitTest();
+
+ [TestCleanup]
+ public override void FinishTest() => base.FinishTest();
+
+ public override void NavigateToHomePage() => _xrmApp.Navigation.OpenSubArea("Sales", "Opportunities");
[TestMethod]
public void UCITestCloseOpportunity()
{
- var client = new WebClient(TestSettings.Options);
- using (var xrmApp = new XrmApp(client))
- {
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
-
- xrmApp.Navigation.OpenApp(UCIAppName.Sales);
-
- xrmApp.Navigation.OpenSubArea("Sales", "Opportunities");
-
- xrmApp.Grid.OpenRecord(0);
+ _xrmApp.Navigation.OpenSubArea("Sales", "Opportunities");
- xrmApp.CommandBar.ClickCommand("Close as Won");
+ _xrmApp.Grid.OpenRecord(0);
- xrmApp.Dialogs.CloseOpportunity(123.45, DateTime.Now, "test");
+ _xrmApp.CommandBar.ClickCommand("Close as Won");
- }
+ _xrmApp.Dialogs.CloseOpportunity(123.45, DateTime.Now, "test");
}
}
}
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/CommandBar/CommandButton.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/CommandBar/CommandButton.cs
index f11947ea..3f43ca1b 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/CommandBar/CommandButton.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/CommandBar/CommandButton.cs
@@ -2,59 +2,38 @@
// Licensed under the MIT license.
using Microsoft.VisualStudio.TestTools.UnitTesting;
-using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Collections.Generic;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class CommandButton
+ public class CommandButton : TestsBase
{
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
+ [TestInitialize]
+ public override void InitTest() => base.InitTest();
+
+ [TestCleanup]
+ public override void FinishTest() => base.FinishTest();
+
+ public override void NavigateToHomePage() => _xrmApp.Navigation.OpenSubArea("Sales", "Accounts");
[TestMethod]
public void UCITestNewCommandBarButton()
{
- var client = new WebClient(TestSettings.Options);
- using (var xrmApp = new XrmApp(client))
- {
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
-
- xrmApp.Navigation.OpenApp(UCIAppName.Sales);
-
- xrmApp.Navigation.OpenSubArea("Sales", "Accounts");
-
- xrmApp.CommandBar.ClickCommand("New");
- xrmApp.ThinkTime(2000);
- }
+ _xrmApp.Navigation.OpenSubArea("Sales", "Accounts");
+ _xrmApp.CommandBar.ClickCommand("New");
+ _xrmApp.ThinkTime(2000);
}
[TestMethod]
public void UCITestRetrieveCommandBarValues()
{
- var client = new WebClient(TestSettings.Options);
- using (var xrmApp = new XrmApp(client))
- {
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
-
- xrmApp.Navigation.OpenApp(UCIAppName.Sales);
-
- xrmApp.Navigation.OpenSubArea("Sales", "Accounts");
-
- var commandValues = xrmApp.CommandBar.GetCommandValues().Value;
- int commandCount = commandValues.Count;
-
- var includeMoreCommandValues = xrmApp.CommandBar.GetCommandValues(true).Value;
- int totalCommandCount = includeMoreCommandValues.Count;
+ var commandValues = _xrmApp.CommandBar.GetCommandValues().Value;
+ int commandCount = commandValues.Count;
- xrmApp.ThinkTime(2000);
+ var includeMoreCommandValues = _xrmApp.CommandBar.GetCommandValues(true).Value;
+ int totalCommandCount = includeMoreCommandValues.Count;
- }
+ _xrmApp.ThinkTime(2000);
}
}
}
\ No newline at end of file
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/CommandBar/DuplicateDetection.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/CommandBar/DuplicateDetection.cs
index a905111f..10db29e0 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/CommandBar/DuplicateDetection.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/CommandBar/DuplicateDetection.cs
@@ -2,42 +2,32 @@
// Licensed under the MIT license.
using Microsoft.VisualStudio.TestTools.UnitTesting;
-using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class DuplicateDetectionUCI
+ public class DuplicateDetection : TestsBase
{
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
+ [TestInitialize]
+ public override void InitTest() => base.InitTest();
+ [TestCleanup]
+ public override void FinishTest() => base.FinishTest();
+
+ public override void NavigateToHomePage() => _xrmApp.Navigation.OpenSubArea("Sales", "Contacts");
[TestMethod]
public void UCITestDuplicateDetection()
{
- var client = new WebClient(TestSettings.Options);
- using (var xrmApp = new XrmApp(client))
- {
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
-
- xrmApp.Navigation.OpenApp(UCIAppName.Sales);
-
- xrmApp.Navigation.OpenSubArea("Sales", "Contacts");
-
- xrmApp.CommandBar.ClickCommand("New");
+ _xrmApp.Navigation.OpenSubArea("Sales", "Contacts");
- xrmApp.Entity.SetValue("firstname", "EasyRepro");
- xrmApp.Entity.SetValue("lastname", "Duplicate");
- xrmApp.Entity.SetValue("emailaddress1", "jz3@jztest.com");
+ _xrmApp.CommandBar.ClickCommand("New");
- xrmApp.Entity.Save();
+ _xrmApp.Entity.SetValue("firstname", "EasyRepro");
+ _xrmApp.Entity.SetValue("lastname", "Duplicate");
+ _xrmApp.Entity.SetValue("emailaddress1", "jz3@jztest.com");
- }
+ _xrmApp.Entity.Save();
}
}
}
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/CommandBar/SelectDashboard.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/CommandBar/SelectDashboard.cs
index 4c714cf3..123fb493 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/CommandBar/SelectDashboard.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/CommandBar/SelectDashboard.cs
@@ -2,35 +2,24 @@
// Licensed under the MIT license.
using Microsoft.VisualStudio.TestTools.UnitTesting;
-using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class SelectDashboardUCI
+ public class SelectDashboard : TestsBase
{
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
+ [TestInitialize]
+ public override void InitTest() => base.InitTest();
+
+ [TestCleanup]
+ public override void FinishTest() => base.FinishTest();
[TestMethod]
public void UCITestSelectDashboard()
{
- var client = new WebClient(TestSettings.Options);
- using (var xrmApp = new XrmApp(client))
- {
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
-
- xrmApp.Navigation.OpenApp(UCIAppName.Sales);
-
- xrmApp.Navigation.ClickQuickLaunchButton("Dashboards");
-
- xrmApp.Dashboard.SelectDashboard("My Knowledge Dashboard");
+ _xrmApp.Navigation.ClickQuickLaunchButton("Dashboards");
- }
+ _xrmApp.Dashboard.SelectDashboard("My Knowledge Dashboard");
}
}
}
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Controls/Grid.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Controls/Grid.cs
index 19c150e6..4569f5ab 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Controls/Grid.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Controls/Grid.cs
@@ -10,7 +10,7 @@
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class Grid
+ public class Grid : TestsBase
{
private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
@@ -23,7 +23,7 @@ public void UCIGridSort()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateAccount.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateAccount.cs
index 26777176..3634b825 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateAccount.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateAccount.cs
@@ -2,41 +2,30 @@
// Licensed under the MIT license.
using Microsoft.VisualStudio.TestTools.UnitTesting;
-using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class CreateAccountUCI
+ public class CreateAccount : TestsBase
{
+ [TestInitialize]
+ public override void InitTest() => base.InitTest();
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
+ [TestCleanup]
+ public override void FinishTest() => base.FinishTest();
+
+ public override void NavigateToHomePage() => _xrmApp.Navigation.OpenSubArea("Sales", "Accounts");
[TestMethod]
public void UCITestCreateAccount()
{
- var client = new WebClient(TestSettings.Options);
- using (var xrmApp = new XrmApp(client))
- {
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
-
- xrmApp.Navigation.OpenApp(UCIAppName.Sales);
-
- xrmApp.Navigation.OpenSubArea("Sales", "Accounts");
+ _xrmApp.Navigation.OpenSubArea("Sales", "Accounts");
- xrmApp.CommandBar.ClickCommand("New");
+ _xrmApp.CommandBar.ClickCommand("New");
- xrmApp.Entity.SetValue("name", TestSettings.GetRandomString(5,15));
+ _xrmApp.Entity.SetValue("name", TestSettings.GetRandomString(5, 15));
- xrmApp.Entity.Save();
-
- }
-
+ _xrmApp.Entity.Save();
}
}
}
\ No newline at end of file
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateActivity.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateActivity.cs
index cd91b89a..97941bb7 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateActivity.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateActivity.cs
@@ -3,29 +3,20 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
using System;
-using System.Globalization;
-using System.Security;
-using Microsoft.Dynamics365.UIAutomation.Api.UCI;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class CreateActivityUCI
+ public class CreateActivityUCI : TestsBase
{
-
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestCreateActivity_SetDateTimes()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateCase.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateCase.cs
index b7065465..35a5b6d3 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateCase.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateCase.cs
@@ -3,28 +3,19 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class CreateCaseUCI
+ public class CreateCaseUCI : TestsBase
{
-
-
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestCreateCase()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.CustomerService);
@@ -41,7 +32,6 @@ public void UCITestCreateCase()
xrmApp.Entity.Save();
}
-
}
}
}
\ No newline at end of file
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateContact.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateContact.cs
index 4d6dc3cf..32c0427c 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateContact.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateContact.cs
@@ -3,27 +3,19 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class CreateContactUCI
+ public class CreateContactUCI : TestsBase
{
-
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestCreateContact()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateLead.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateLead.cs
index 403720b7..dda15451 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateLead.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateLead.cs
@@ -3,27 +3,19 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class CreateLeadUCI
+ public class CreateLeadUCI: TestsBase
{
-
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestCreateLead()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -38,9 +30,7 @@ public void UCITestCreateLead()
xrmApp.Entity.SetValue("lastname", TestSettings.GetRandomString(5,10));
xrmApp.Entity.Save();
-
}
-
}
}
}
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateOpportunity.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateOpportunity.cs
index 3a9fd04b..444bdb63 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateOpportunity.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Create/CreateOpportunity.cs
@@ -1,29 +1,22 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
+using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class CreateOpportunityUCI
+ public class CreateOpportunityUCI : TestsBase
{
-
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"]);
-
[TestMethod]
public void UCITestCreateOpportunity()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -45,7 +38,7 @@ public void UCITestCreateOpportunity_SetHeaderDate()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Delete/DeleteAccount.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Delete/DeleteAccount.cs
index b9d3ab97..0d82ba91 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Delete/DeleteAccount.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Delete/DeleteAccount.cs
@@ -3,27 +3,19 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class DeleteAccountUCI
+ public class DeleteAccountUCI : TestsBase
{
-
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestDeleteAccount()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Delete/DeleteCase.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Delete/DeleteCase.cs
index 2e1286a5..66e8608f 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Delete/DeleteCase.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Delete/DeleteCase.cs
@@ -3,27 +3,19 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class DeleteCaseUCI
+ public class DeleteCaseUCI : TestsBase
{
-
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestDeleteCase()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.CustomerService);
@@ -37,9 +29,7 @@ public void UCITestDeleteCase()
xrmApp.Dialogs.ConfirmationDialog(true); //Click OK on the Delete confirmation dialog (false to cancel)
xrmApp.ThinkTime(3000);
-
}
-
}
}
}
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Delete/DeleteContact.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Delete/DeleteContact.cs
index f4beade3..cd7d5e58 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Delete/DeleteContact.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Delete/DeleteContact.cs
@@ -3,27 +3,19 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class DeleteContactUCI
+ public class DeleteContactUCI : TestsBase
{
-
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestDeleteContact()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Delete/DeleteLead.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Delete/DeleteLead.cs
index 766f6292..b1a55fe8 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Delete/DeleteLead.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Delete/DeleteLead.cs
@@ -3,27 +3,20 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class DeleteLeadUCI
+ public class DeleteLeadUCI : TestsBase
{
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestDeleteLead()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Delete/DeleteOpportunity.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Delete/DeleteOpportunity.cs
index f46de213..9e860db4 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Delete/DeleteOpportunity.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Delete/DeleteOpportunity.cs
@@ -3,27 +3,19 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class DeleteOpportunityUCI
+ public class DeleteOpportunityUCI : TestsBase
{
-
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestDeleteOpportunity()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/GetValue.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/GetValue.cs
index 5702dade..0d5e2fc8 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/GetValue.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/GetValue.cs
@@ -3,26 +3,20 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class GetValueUci
+ public class GetValueUci: TestsBase
{
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestGetValueFromOptionSet()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -41,7 +35,7 @@ public void UCITestGetValueFromLookup()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -60,7 +54,7 @@ public void UCITestActivityPartyGetValue()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -83,7 +77,7 @@ public void UCITestGetValueFromDateTime()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/GlobalSearch/GlobalCategorizedSearch.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/GlobalSearch/GlobalCategorizedSearch.cs
index ecb83694..0b97c0ac 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/GlobalSearch/GlobalCategorizedSearch.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/GlobalSearch/GlobalCategorizedSearch.cs
@@ -3,26 +3,19 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class GlobalCategorizedSearchUci
+ public class GlobalCategorizedSearchUci : TestsBase
{
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"]);
-
[TestMethod]
public void UCITestGlobalCategorizedSearch()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/GlobalSearch/GlobalRelevanceSearch.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/GlobalSearch/GlobalRelevanceSearch.cs
index 8abe9d36..ec6ebc56 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/GlobalSearch/GlobalRelevanceSearch.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/GlobalSearch/GlobalRelevanceSearch.cs
@@ -3,26 +3,19 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class GlobalRelevanceSearchUci
+ public class GlobalRelevanceSearchUci: TestsBase
{
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"]);
-
[TestMethod]
public void UCITestGlobalRelevanceSearch()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Login/Login.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Login/Login.cs
new file mode 100644
index 00000000..212e42b3
--- /dev/null
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Login/Login.cs
@@ -0,0 +1,27 @@
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+
+namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI.Login
+{
+ [TestClass]
+ public class Login : TestsBase
+ {
+ [TestInitialize]
+ public override void InitTest() => base.InitTest();
+
+ [TestCleanup]
+ public override void FinishTest() => base.FinishTest();
+
+ public override void NavigateToHomePage() => _xrmApp.Navigation.OpenSubArea("Sales", "Accounts");
+
+ [TestMethod]
+ public void MultiFactorLogin()
+ {
+ _xrmApp.Grid.SwitchView("All Accounts");
+
+ _xrmApp.CommandBar.ClickCommand("New");
+
+ _xrmApp.Entity.SetValue("name", _timed("Test API Account"));
+ _xrmApp.Entity.SetValue("telephone1", "555-555-5555");
+ }
+ }
+}
\ No newline at end of file
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Navigation/FormSelector.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Navigation/FormSelector.cs
index 258b9fce..0f4837f5 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Navigation/FormSelector.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Navigation/FormSelector.cs
@@ -3,26 +3,19 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class FormSelectorUci
+ public class FormSelectorUci: TestsBase
{
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"]);
-
[TestMethod]
public void UCITestOpenGlobalSearchSelectForm()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Navigation/GlobalSearch.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Navigation/GlobalSearch.cs
index a3f9602b..98214af4 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Navigation/GlobalSearch.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Navigation/GlobalSearch.cs
@@ -3,26 +3,19 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class OpenGlobalSearchUci
+ public class OpenGlobalSearchUci: TestsBase
{
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"]);
-
[TestMethod]
public void UCITestOpenGlobalSearch()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
xrmApp.Navigation.OpenGlobalSearch();
}
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Navigation/OpenNavigation.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Navigation/OpenNavigation.cs
index 9a2d8f13..beac3bed 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Navigation/OpenNavigation.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Navigation/OpenNavigation.cs
@@ -3,26 +3,19 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class OpenNavigationUci
+ public class OpenNavigationUci: TestsBase
{
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"]);
-
[TestMethod]
public void UCITestOpenOptions()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
xrmApp.Navigation.OpenOptions();
xrmApp.Navigation.OpenOptInForLearningPath();
@@ -37,7 +30,7 @@ public void UCITestOpenGuidedHelp()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
xrmApp.Navigation.OpenGuidedHelp();
}
@@ -49,7 +42,7 @@ public void UCITestOpenSoftwareLicensing()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
xrmApp.Navigation.OpenSoftwareLicensing();
}
@@ -61,7 +54,7 @@ public void UCITestOpenToastNotifications()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
xrmApp.Navigation.OpenToastNotifications();
}
@@ -72,7 +65,7 @@ public void UCITestOpenAbout()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
xrmApp.Navigation.OpenAbout();
}
@@ -84,7 +77,7 @@ public void UCITestOpenRelatedCommonActivities()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -102,7 +95,7 @@ public void UCITestOpenGroupSubArea()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Navigation/PortalAdmin.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Navigation/PortalAdmin.cs
index 84631116..4f04f31b 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Navigation/PortalAdmin.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Navigation/PortalAdmin.cs
@@ -3,26 +3,19 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class PortalAdminUci
+ public class PortalAdminUci: TestsBase
{
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"]);
-
[TestMethod]
public void UCITestOpenPortalAdmin()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
xrmApp.Navigation.OpenPortalAdmin();
}
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/QuickCreate/QuickCreate.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/QuickCreate/QuickCreate.cs
index 6f5357d8..ea930aee 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/QuickCreate/QuickCreate.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/QuickCreate/QuickCreate.cs
@@ -2,26 +2,20 @@
// Licensed under the MIT license.
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class QuickCreateContactUCI
+ public class QuickCreateContactUCI: TestsBase
{
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestQuickCreateContact()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -44,7 +38,7 @@ public void UCITestQuickCreateCase()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.CustomerService);
@@ -67,7 +61,7 @@ public void UCITestQuickCreateOpportunity()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/HighlightAccount.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/HighlightAccount.cs
index e7d47a27..f0f819d7 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/HighlightAccount.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/HighlightAccount.cs
@@ -3,27 +3,19 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class HighlightAccount
+ public class HighlightAccount: TestsBase
{
-
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestHighlightActiveAccount()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/OpenAccount.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/OpenAccount.cs
index 8a205411..fd7c189e 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/OpenAccount.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/OpenAccount.cs
@@ -3,27 +3,20 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class OpenAccountUCI
+ public class OpenAccountUCI: TestsBase
{
-
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestOpenActiveAccount()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
xrmApp.Navigation.OpenApp("Sales");
@@ -48,7 +41,7 @@ public void UCITestGetActiveGridItems()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -68,7 +61,7 @@ public void UCITestOpenTabDetails()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -95,7 +88,7 @@ public void UCITestGetObjectId()
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -116,7 +109,7 @@ public void UCITestOpenSubGridRecord()
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/OpenCase.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/OpenCase.cs
index 47effe9f..21a56de9 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/OpenCase.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/OpenCase.cs
@@ -3,26 +3,20 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class OpenCaseUCI
+ public class OpenCaseUCI: TestsBase
{
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestOpenActiveCase()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.CustomerService);
@@ -40,7 +34,7 @@ public void UCITestOpenCase()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.CustomerService);
@@ -61,7 +55,7 @@ public void UCITestOpenCaseById()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.CustomerService);
@@ -80,7 +74,7 @@ public void UCITestOpenCaseRetrieveHeaderValues()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.CustomerService);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/OpenContact.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/OpenContact.cs
index 175377d9..d4bdee09 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/OpenContact.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/OpenContact.cs
@@ -3,28 +3,20 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
using System.Collections.Generic;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class OpenContactUCI
+ public class OpenContactUCI: TestsBase
{
-
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestOpenActiveContact()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -44,7 +36,7 @@ public void UCITestOpenRecordSetNavigator()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -74,7 +66,7 @@ public void UCITestOpenSubGridRecord()
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -99,7 +91,7 @@ public void UCITestLookupSearch()
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -127,7 +119,7 @@ public void UCITestLookupNew()
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -155,7 +147,7 @@ public void UCITestOpenContactRetrieveHeaderValues()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.CustomerService);
@@ -179,7 +171,7 @@ public void UCITestOpenContactRelatedEntity()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.CustomerService);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/OpenLead.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/OpenLead.cs
index efa85434..e8f99c50 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/OpenLead.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/OpenLead.cs
@@ -3,27 +3,19 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class OpenLeadUCI
+ public class OpenLeadUCI: TestsBase
{
-
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestOpenActiveLead()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -43,7 +35,7 @@ public void UCITestRetrieveBPFFields()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -72,7 +64,7 @@ public void UCITestPinBPFStage()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -94,7 +86,7 @@ public void UCITestCloseBPFStage()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/OpenOpportunity.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/OpenOpportunity.cs
index 14faec90..0c4e5c62 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/OpenOpportunity.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Read/OpenOpportunity.cs
@@ -3,27 +3,19 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class OpenOpportunityUCI
+ public class OpenOpportunityUCI: TestsBase
{
-
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestOpenActiveOpportunity()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -43,7 +35,7 @@ public void UCITestOpenOpportunityLookupAccount()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -66,7 +58,7 @@ public void UCITestOpenOpportunitySearchLookupAccount()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/SetValue.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/SetValue.cs
index 376e8e22..89e4c413 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/SetValue.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/SetValue.cs
@@ -3,26 +3,20 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class SetValueUci
+ public class SetValueUci : TestsBase
{
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestSetValue()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -42,7 +36,7 @@ public void UCITestSelectOptionSetValue()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -62,7 +56,7 @@ public void UCITestOpenLookupSetValue()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -84,7 +78,7 @@ public void UCITestActivityPartySetValue()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -115,7 +109,7 @@ public void UCITestActivityPartyAddValues()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -142,7 +136,7 @@ public void UCITestActivityPartyRemoveValues()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -169,7 +163,7 @@ public void UCITestActivityClearValues()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -195,7 +189,7 @@ public void UCITestDateTimeSetValue()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/SpecialConfigurationTests/RandomAccountTest.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/SpecialConfigurationTests/RandomAccountTest.cs
index 0989371d..d677017f 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/SpecialConfigurationTests/RandomAccountTest.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/SpecialConfigurationTests/RandomAccountTest.cs
@@ -3,20 +3,12 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
-using System.Text;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class RandomAccountTest
+ public class RandomAccountTest: TestsBase
{
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCIRandomAccountTest()
{
@@ -24,7 +16,7 @@ public void UCIRandomAccountTest()
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/TestsBase.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/TestsBase.cs
new file mode 100644
index 00000000..10a40bd5
--- /dev/null
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/TestsBase.cs
@@ -0,0 +1,55 @@
+// Created by: Rodriguez Mustelier Angel (rodang)
+// Modify On: 2020-01-23 02:51
+
+using System;
+using System.Configuration;
+using System.Security;
+using Microsoft.Dynamics365.UIAutomation.Api.UCI;
+using Microsoft.Dynamics365.UIAutomation.Browser;
+
+namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
+{
+ public class TestsBase
+ {
+ protected readonly Uri _xrmUri = new Uri(ConfigurationManager.AppSettings["OnlineCrmUrl"]);
+ protected readonly SecureString _username = ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
+ protected readonly SecureString _password = ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
+ protected readonly SecureString _mfaSecrectKey = ConfigurationManager.AppSettings["MfaSecrectKey"].ToSecureString();
+ protected readonly bool _usePrivateMode = Convert.ToBoolean(ConfigurationManager.AppSettings["UsePrivateMode"]);
+
+ protected XrmApp _xrmApp;
+ protected string _timed(string value) => $"{value} {DateTime.Now:yyyy-MM-dd HH:mm:ss.fff}";
+
+ public virtual void InitTest()
+ {
+ CreateApp();
+ NavigateToHomePage();
+ }
+
+ public virtual void FinishTest()
+ {
+ CloseApp();
+ }
+
+ public void CreateApp(bool privateMode = true)
+ {
+ BrowserOptions options = TestSettings.Options;
+ options.PrivateMode = privateMode || _usePrivateMode;
+ options.UCIPerformanceMode = false;
+
+ var client = new WebClient(options);
+ _xrmApp = new XrmApp(client);
+
+ _xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
+ _xrmApp.Navigation.OpenApp(UCIAppName.Sales);
+ }
+
+ public void CloseApp()
+ {
+ _xrmApp.Dispose();
+ _xrmApp = null;
+ }
+
+ public virtual void NavigateToHomePage() { }
+ }
+}
\ No newline at end of file
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Timeline/AddActivity.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Timeline/AddActivity.cs
index 88f5984a..e7d79238 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Timeline/AddActivity.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Timeline/AddActivity.cs
@@ -1,25 +1,18 @@
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
using Microsoft.VisualStudio.TestTools.UnitTesting;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class AddActivity
+ public class AddActivity: TestsBase
{
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestAccountAddAppointment()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -41,7 +34,7 @@ public void UCITestAccountAddEmail()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -81,7 +74,7 @@ public void UCITestAccountGetMultiSelectEmail()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -125,7 +118,7 @@ public void UCITestAccountRemoveMultiSelectEmail()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -161,7 +154,7 @@ public void UCITestAccountAddPhoneCall()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -183,7 +176,7 @@ public void UCITestAccountAddTask()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Timeline/AddNote.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Timeline/AddNote.cs
index 2ccf660e..b91894d7 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Timeline/AddNote.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Timeline/AddNote.cs
@@ -1,25 +1,18 @@
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
using Microsoft.VisualStudio.TestTools.UnitTesting;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class AddNote
+ public class AddNote: TestsBase
{
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestAccountAddNote()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Timeline/AddPost.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Timeline/AddPost.cs
index 17f3a8f9..583ef928 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Timeline/AddPost.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Timeline/AddPost.cs
@@ -1,25 +1,18 @@
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
using Microsoft.VisualStudio.TestTools.UnitTesting;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class AddPostUCI
+ public class AddPostUCI: TestsBase
{
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestAccountAddPost()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/UnifiedInterface.orderedtest b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/UnifiedInterface.orderedtest
index d9dc0505..9635b9ad 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/UnifiedInterface.orderedtest
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/UnifiedInterface.orderedtest
@@ -1,7 +1,7 @@
-
+
@@ -14,13 +14,14 @@
-
-
-
-
+
+
+
+
+
@@ -37,10 +38,10 @@
-
+
-
+
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Update/UpdateAccount.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Update/UpdateAccount.cs
index 5f4548d8..6fe49632 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Update/UpdateAccount.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Update/UpdateAccount.cs
@@ -3,27 +3,19 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class UpdateAccountUCI
+ public class UpdateAccountUCI: TestsBase
{
-
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestUpdateActiveAccount()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Update/UpdateCase.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Update/UpdateCase.cs
index 650f2ec8..c9a90667 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Update/UpdateCase.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Update/UpdateCase.cs
@@ -3,27 +3,19 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class UpdateCaseUCI
+ public class UpdateCaseUCI : TestsBase
{
-
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestUpdateActiveCase()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.CustomerService);
@@ -47,7 +39,7 @@ public void UCITestUpdateActiveCaseSetHeaderValues()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.CustomerService);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Update/UpdateContact.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Update/UpdateContact.cs
index d6bd02d7..cd64ab14 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Update/UpdateContact.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Update/UpdateContact.cs
@@ -3,27 +3,19 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class UpdateContactUCI
+ public class UpdateContactUCI: TestsBase
{
-
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestUpdateActiveContact()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -48,7 +40,7 @@ public void UCITestUpdateActiveContactSetHeaderValues()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.CustomerService);
@@ -72,7 +64,7 @@ public void UCITestUpdateClearFields()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.CustomerService);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Update/UpdateLead.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Update/UpdateLead.cs
index 7974c345..8cf7f33e 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Update/UpdateLead.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Update/UpdateLead.cs
@@ -3,27 +3,19 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class UpdateLeadUCI
+ public class UpdateLeadUCI: TestsBase
{
-
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestUpdateActiveLead()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -47,7 +39,7 @@ public void UCITestOpenActiveLeadBPF()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Update/UpdateOpportunity.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Update/UpdateOpportunity.cs
index a22dd8d1..c4152b7b 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Update/UpdateOpportunity.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Update/UpdateOpportunity.cs
@@ -3,27 +3,19 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class UpdateOpportunityUCI
+ public class UpdateOpportunityUCI: TestsBase
{
-
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestUpdateActiveOpportunity()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Validate/CheckFieldRequired.cs b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Validate/CheckFieldRequired.cs
index db8fecb6..60dfcce5 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Validate/CheckFieldRequired.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/UCI/Validate/CheckFieldRequired.cs
@@ -3,27 +3,19 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Dynamics365.UIAutomation.Api.UCI;
-using Microsoft.Dynamics365.UIAutomation.Browser;
-using System;
-using System.Security;
namespace Microsoft.Dynamics365.UIAutomation.Sample.UCI
{
[TestClass]
- public class IsFieldRequired
+ public class IsFieldRequired: TestsBase
{
-
- private readonly SecureString _username = System.Configuration.ConfigurationManager.AppSettings["OnlineUsername"].ToSecureString();
- private readonly SecureString _password = System.Configuration.ConfigurationManager.AppSettings["OnlinePassword"].ToSecureString();
- private readonly Uri _xrmUri = new Uri(System.Configuration.ConfigurationManager.AppSettings["OnlineCrmUrl"].ToString());
-
[TestMethod]
public void UCITestConfirmFieldIsNotRequired()
{
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
@@ -48,7 +40,7 @@ public void UCITestConfirmFieldIsRequired()
var client = new WebClient(TestSettings.Options);
using (var xrmApp = new XrmApp(client))
{
- xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
+ xrmApp.OnlineLogin.Login(_xrmUri, _username, _password, _mfaSecrectKey);
xrmApp.Navigation.OpenApp(UCIAppName.Sales);
diff --git a/Microsoft.Dynamics365.UIAutomation.Sample/app.config b/Microsoft.Dynamics365.UIAutomation.Sample/app.config
index 1774585f..00b38be1 100644
--- a/Microsoft.Dynamics365.UIAutomation.Sample/app.config
+++ b/Microsoft.Dynamics365.UIAutomation.Sample/app.config
@@ -14,11 +14,12 @@
+
-
+