public void NavigateToPortal() { //config#navigateToPortal // Get the specified Portal Uri from the configuration file var portalUri = new Uri(ConfigurationManager.AppSettings["PortalUri"]); var extensionUri = new Uri(ConfigurationManager.AppSettings["ExtensionUri"]); // Make sure the servers are available PortalServer.WaitForServerReady(portalUri); ExtensionsServer.WaitForServerReady(extensionUri); // Create a webdriver instance to automate the browser. var webDriver = WebDriverFactory.Create(); // Create a Portal Authentication class to handle login, note that the portalUri parameter is used to validate that login was successful. var portalAuth = new PortalAuthentication(webDriver, portalUri); //config#sideLoadingExtension // Sign into the portal portalAuth.SignInAndSkipPostValidation(userName: "", /** The account login to use. Note Multi Factor Authentication (MFA) is not supported, you must use an account that does not require MFA **/ password: "", /** The account password **/ tenantDomainName: string.Empty, /** the tenant to login to, set only if you need to login to a specific tenant **/ query: "feature.canmodifyextensions=true", /** Query string to use when navigating to the portal. **/ fragment: "#" /** The hash fragment, use this to optionally navigate directly to your resource on sign in. **/); //config#navigateToPortal // Check for and click the Untrusted Extension prompt if its present Microsoft.Portal.TestFramework.Core.Shell.Portal.CheckAndClickExtensionTrustPrompt(webDriver); var portal = Microsoft.Portal.TestFramework.Core.Shell.Portal.FindPortal(webDriver, false); // Register a deployed extension via javascript and then reload the portal. Not required if using the query string method to load from localhost (webDriver as IJavaScriptExecutor).ExecuteScript("MsPortalImpl.Extension.registerTestExtension({ name: \"SamplesExtension\", uri: \"https://df.onecloud.azure-test.net/Samples\"});"); portal.WaitForPortalToReload(() => webDriver.Navigate().Refresh()); // Check for and click the Untrusted Extension prompt if its present Microsoft.Portal.TestFramework.Core.Shell.Portal.CheckAndClickExtensionTrustPrompt(webDriver); portal = Microsoft.Portal.TestFramework.Core.Shell.Portal.FindPortal(webDriver, false); //config#sideLoadingExtension //config#dispose // Clean up the webdriver after webDriver.Dispose(); //config#dispose }
public void CreateResourceGroupViaDeepLink() { // Get the specified Portal Uri from the configuration file var portalUri = new Uri(ConfigurationManager.AppSettings["PortalUri"]); var extensionUri = new Uri(ConfigurationManager.AppSettings["ExtensionUri"]); // Make sure the servers are available PortalServer.WaitForServerReady(portalUri); ExtensionsServer.WaitForServerReady(extensionUri); // Create a webdriver instance to automate the browser. webDriver = WebDriverFactory.Create(); // Create a Portal Authentication class to handle login, note that the portalUri parameter is used to validate that login was successful. var portalAuth = new PortalAuthentication(webDriver, portalUri); //config#openCreateViaDeepLink // Sign into the portal portalAuth.SignInAndSkipPostValidation(userName: "", /** The account login to use. Note Multi Factor Authentication (MFA) is not supported, you must use an account that does not require MFA **/ password: "", /** The account password **/ tenantDomainName: string.Empty, /** the tenant to login to, set only if you need to login to a specific tenant **/ query: "feature.canmodifyextensions=true", /** Query string to use when navigating to the portal. **/ fragment: "create/Microsoft.ResourceGroup" /** The hash fragment, we use this to navigate directly to the create blade on sign in. **/); //config#openCreateViaDeepLink // Check for and click the Untrusted Extension prompt if its present Portal.CheckAndClickExtensionTrustPrompt(webDriver); portal = Portal.FindPortal(webDriver, false); // Register a deployed extension via javascript and then reload the portal. Not required if using the query string method to load from localhost (webDriver as IJavaScriptExecutor).ExecuteScript("MsPortalImpl.Extension.registerTestExtension({ name: \"SamplesExtension\", uri: \"https://df.onecloud.azure-test.net/Samples\"});"); portal.WaitForPortalToReload(() => webDriver.Navigate().Refresh()); // Check for and click the Untrusted Extension prompt if its present Portal.CheckAndClickExtensionTrustPrompt(webDriver); portal = Portal.FindPortal(webDriver, false); //config#fillOutCreateForm var rgNameTextboxFieldLabel = "Resource group name"; var rgName = "Test-" + Guid.NewGuid(); var rgCreateBladeTitle = "Resource group"; // Find the create resource group blade which should be open because we deep linked into it var createRgBlade = portal.FindSingleBladeByTitle(rgCreateBladeTitle).WaitUntilBladeIsLoaded().WaitUntilAllPartsAreLoaded(); // Get the form section for the create blade so we can find the fields to fill out var formSection = createRgBlade.FindElement <FormSection>(); // Find the textbox with the label for resource group name var rgNameTextbox = formSection.FindFieldByLabel <Textbox>(rgNameTextboxFieldLabel); rgNameTextbox.Value = rgName + Keys.Tab; // Keys.Tab shifts focus out of the textfield so validation can kick in webDriver.WaitUntil(() => rgNameTextbox.IsEdited && rgNameTextbox.ValidationState.Equals(ControlValidationState.Valid), string.Format(CultureInfo.InvariantCulture, "The '{0}' field is still invalid or did not change into an edited state after entering a valid value.", rgNameTextboxFieldLabel)); TestContext.WriteLine("Resource group name's text box field was set to: " + rgNameTextbox.Value); // Fill out the rest of the fields. var subFilterComboBoxLabel = "Subscription"; FilterCombo subFilterComboBox = formSection.FindFieldByLabel <FilterCombo>(subFilterComboBoxLabel); var selectedSubFilterComboBoxValue = subFilterComboBox.Value; subFilterComboBox.SetValueToFirstDropdownMatch(selectedSubFilterComboBoxValue); var rgFilterComboBoxLabel = "Resource group location"; FilterCombo rgFilterComboBox = formSection.FindFieldByLabel <FilterCombo>(rgFilterComboBoxLabel); var rgSelectedFilterComboValue = rgFilterComboBox.Value; rgFilterComboBox.SetValueToFirstDropdownMatch(rgSelectedFilterComboValue); //config#fillOutCreateForm //config#clickCreateAndVerify // Find and click the create button (sometimes also called Ok button) CreateActionBar createActionBar = webDriver.WaitUntil(() => createRgBlade.FindElement <CreateActionBar>(), "Could not find the create action bar."); createActionBar.ClickOk(); webDriver.WaitUntil(() => portal.IsBladeClosed(rgCreateBladeTitle), string.Format(CultureInfo.InvariantCulture, "The {0} blade did not close after clicking the Create button on it's Create action bar.", rgCreateBladeTitle)); portal.GetNotifications(text: "Creating resource group '" + rgName + "' succeeded", timeout: TimeSpan.FromSeconds(90)); //config#clickCreateAndVerify }