{"id":3297,"date":"2022-05-14T15:12:44","date_gmt":"2022-05-14T15:12:44","guid":{"rendered":"https:\/\/exceedthecloud.com\/?p=3297"},"modified":"2022-06-03T03:44:49","modified_gmt":"2022-06-03T03:44:49","slug":"setting-up-and-running-functional-tests-with-azure-devops","status":"publish","type":"post","link":"https:\/\/exceedthecloud.com\/?p=3297","title":{"rendered":"Setting Up and Running Functional Tests with Azure DevOps"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<p><a href=\"http:\/\/www.seleniumhq.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Selenium<\/a>&nbsp;is a portable open source software-testing framework for web applications. It has the capability to operate on almost every operating system. It supports all modern browsers and multiple languages including .NET (C#), Java.<\/p>\n\n\n\n<p>In this lab, you will learn how to execute Selenium test cases on a C# web application, as part of the Azure DevOps Release pipeline.<\/p>\n\n\n\n<p>After you complete this lab, you will be able to:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Configure a self-hosted Azure DevOps agent<\/li><li>Configure release pipeline<\/li><li>Trigger build and release<\/li><li>Run tests in Chrome and Firefox<\/li><\/ul>\n\n\n\n<p><strong>Review applications required for this lab<\/strong><\/p>\n\n\n\n<p>Identify the applications that you\u2019ll use in this lab:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Microsoft Edge<\/li><\/ul>\n\n\n\n<p><strong>Set up an Azure DevOps organization.<\/strong><\/p>\n\n\n\n<p>If you don\u2019t already have an Azure DevOps organization that you can use for this lab, create one by following the instructions available at&nbsp;<a href=\"https:\/\/exceedthecloud.com\/?p=2937\" target=\"_blank\" rel=\"noreferrer noopener\">Create an organization or project collection<\/a>.<\/p>\n\n\n\n<p>Prepare an Azure subscription<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Identify an existing Azure subscription or create a new one.<\/li><li>Verify that you have a Microsoft account or an Azure AD account with the Owner role in the Azure subscription and the Global Administrator role in the Azure AD tenant associated with the Azure subscription. For details, refer to&nbsp;<a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/role-based-access-control\/role-assignments-list-portal\" target=\"_blank\" rel=\"noreferrer noopener\">List Azure role assignments using the Azure portal<\/a>&nbsp;and&nbsp;<a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/active-directory\/roles\/manage-roles-portal#view-my-roles\" target=\"_blank\" rel=\"noreferrer noopener\">View and assign administrator roles in Azure Active Directory<\/a>.<\/li><\/ul>\n\n\n\n<p><strong>Lab 0: Configure the lab prerequisites<\/strong><\/p>\n\n\n\n<p>In this Lab, you will set up the prerequisites for the lab, which include the preconfigured Parts Unlimited team project based on an Azure DevOps Demo Generator template and Azure resources.<\/p>\n\n\n\n<p><strong>Task 1: Configure the team project<\/strong><\/p>\n\n\n\n<p>In this task, you will use Azure DevOps Demo Generator to generate a new project based on the&nbsp;<strong>Selenium<\/strong>&nbsp;template.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On your lab computer, start a web browser and navigate to&nbsp;<a href=\"https:\/\/azuredevopsdemogenerator.azurewebsites.net\/\" target=\"_blank\" rel=\"noreferrer noopener\">Azure DevOps Demo Generator<\/a>. This utility site will automate the process of creating a new Azure DevOps project within your account that is prepopulated with content (work items, repos, etc.) required for the lab.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: For more information on the site, see&nbsp;<a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/devops\/demo-gen\" target=\"_blank\" rel=\"noreferrer noopener\">What is the Azure DevOps Services Demo Generator?<\/a>.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"2\"><li>Click&nbsp;<strong>Sign in<\/strong>&nbsp;and sign in using the Microsoft account associated with your Azure DevOps subscription.<\/li><li>If required, on the&nbsp;<strong>Azure DevOps Demo Generator<\/strong>&nbsp;page, click&nbsp;<strong>Accept<\/strong>&nbsp;to accept the permission requests for accessing your Azure DevOps subscription.<\/li><li>On the&nbsp;<strong>Create New Project<\/strong>&nbsp;page, in the&nbsp;<strong>New Project Name<\/strong>&nbsp;textbox, type&nbsp;<strong>Setting&nbsp;Up&nbsp;and&nbsp;Running&nbsp;Functional&nbsp;Tests<\/strong>, in the&nbsp;<strong>Select organization<\/strong>&nbsp;dropdown list, select your Azure DevOps organization, and then click&nbsp;<strong>Choose template<\/strong>.<\/li><li>In the list of templates, in the toolbar, click&nbsp;<strong>DevOps Labs<\/strong>, select the&nbsp;<strong>Selenium<\/strong>&nbsp;template and click&nbsp;<strong>Select Template<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"286\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture1-1.png\" alt=\"\" class=\"wp-image-3298\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture1-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture1-1-300x138.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p>Back on the&nbsp;<strong>Create New Project<\/strong>&nbsp;page, click&nbsp;<strong>Create Project<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"326\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture2-1.png\" alt=\"\" class=\"wp-image-3299\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture2-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture2-1-300x157.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><strong>Note<\/strong>: Wait for the process to complete. This should take about 2 minutes. In case the process fails, navigate to your DevOps organization, delete the project, and try again.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the&nbsp;<strong>Create New Project<\/strong>&nbsp;page, click&nbsp;<strong>Navigate to project<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"361\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture3-1.png\" alt=\"\" class=\"wp-image-3300\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture3-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture3-1-300x174.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Task 2: Create Azure resources<\/strong><\/p>\n\n\n\n<p>In this task, you will provision an Azure VM running Windows Server 2016 along with SQL Express 2017, Chrome, and Firefox.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Click here in&nbsp;<a href=\"https:\/\/portal.azure.com\/#create\/Microsoft.Template\/uri\/https%3A%2F%2Fraw.githubusercontent.com%2FMicrosoft%2Falmvm%2Fmaster%2Flabs%2Fvstsextend%2Fselenium%2Farmtemplate%2Fazuredeploy.json\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Deploy to Azure<\/strong><\/a>&nbsp;link. This will automatically redirect you to the&nbsp;<strong>Custom deployment<\/strong>&nbsp;blade in the Azure portal.<\/li><li>If prompted, sign in with the user account that has the Owner role in the Azure subscription you will be using in this lab and has the role of the Global Administrator in the Azure AD tenant associated with this subscription.<\/li><li>On the&nbsp;<strong>Custom deployment<\/strong>&nbsp;blade, select&nbsp;<strong>Edit template<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"692\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture4-1.png\" alt=\"\" class=\"wp-image-3301\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture4-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture4-1-271x300.png 271w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p>On the&nbsp;<strong>Edit template<\/strong>&nbsp;blade, locate the line&nbsp;&#8220;https:\/\/raw.githubusercontent.com\/microsoft\/azuredevopslabs\/master\/labs\/vstsextend\/selenium\/armtemplate\/chrome_firefox_VSTSagent_IIS.ps1&#8221;, replace it with&nbsp;https:\/\/raw.githubusercontent.com\/MicrosoftLearning\/AZ400-DesigningandImplementingMicrosoftDevOpsSolutions\/master\/Allfiles\/Labs\/11b\/chrome_firefox_VSTSagent_IIS.ps1, and click&nbsp;<strong>Save<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"428\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture5-1.png\" alt=\"\" class=\"wp-image-3302\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture5-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture5-1-300x206.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Back on the&nbsp;<strong>Custom deployment<\/strong>&nbsp;blade, specify the following settings:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td>Setting<\/td><td>Value<\/td><\/tr><\/thead><tbody><tr><td>Subscription<\/td><td>the name of the Azure subscription you are using in this lab<\/td><\/tr><tr><td>Resource group<\/td><td>the name of a new resource group&nbsp;<strong>exceedm11l02-RG<\/strong><\/td><\/tr><tr><td>Region<\/td><td>the name of the Azure region in which you want to deploy the Azure resources in this lab<\/td><\/tr><tr><td>Virtual Machine Name<\/td><td><strong>exceed11bvm<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"2\"><li>Click&nbsp;<strong>Review + create<\/strong>&nbsp;and then click&nbsp;<strong>Create<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"680\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture6-1.png\" alt=\"\" class=\"wp-image-3303\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture6-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture6-1-275x300.png 275w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><strong>Note<\/strong>: Wait for the process to complete. This should take about 15 minutes.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Lab 1: Implement Selenium tests by using a self-hosted Azure DevOps agent<\/strong><\/p>\n\n\n\n<p>In this Lab, you will implement Selenium tests by using a self-hosted Azure DevOps agent.<\/p>\n\n\n\n<p><strong>Task 1: Configure a self-hosted Azure DevOps agent<\/strong><\/p>\n\n\n\n<p>In this task, you will configure a self-hosted agent by using the VM you deployed in the previous Lab. Selenium requires the agent to be run in the interactive mode to execute the UI tests.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the web browser window displaying the Azure portal, search for and select&nbsp;<strong>Virtual machines<\/strong>&nbsp;and, from the&nbsp;<strong>Virtual machines<\/strong>&nbsp;blade, select&nbsp;<strong>exceed11bvm<\/strong>.<\/li><li>On the&nbsp;<strong>exceed11bvm<\/strong>&nbsp;blade, select&nbsp;<strong>Connect<\/strong>, in the drop-down menu, select&nbsp;<strong>RDP<\/strong>, on the&nbsp;<strong>RDP<\/strong>&nbsp;tab of the&nbsp;<strong>exceed11bvm | Connect<\/strong>&nbsp;blade, select&nbsp;<strong>Download RDP File<\/strong>&nbsp;and open the downloaded file.<\/li><li>When prompted, sign in with the following credentials:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td>Setting<\/td><td>Value<\/td><\/tr><\/thead><tbody><tr><td>User Name<\/td><td><strong>vmadmin<\/strong><\/td><\/tr><tr><td>Password<\/td><td><strong>P2ssw0rd@123<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"4\"><li>Within the Remote Desktop session to&nbsp;<strong>exceed11bvm<\/strong>, open a Chrome web browser window, navigate to&nbsp;<strong><a href=\"https:\/\/dev.azure.com\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/dev.azure.com<\/a><\/strong>&nbsp;and sign in to your Azure DevOps organization.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"576\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture7-1.png\" alt=\"\" class=\"wp-image-3304\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture7-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture7-1-300x277.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p>In the lower left corner of the&nbsp;<strong>Azure DevOps<\/strong>&nbsp;portal, click&nbsp;<strong>Organization settings<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"572\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture8-1.png\" alt=\"\" class=\"wp-image-3305\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture8-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture8-1-300x275.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the vertical menu on the left hand side of the page, in the&nbsp;<strong>Pipelines<\/strong>&nbsp;section, click&nbsp;<strong>Agent pools<\/strong>.<\/li><li>On the&nbsp;<strong>Agent pools<\/strong>&nbsp;pane, click&nbsp;<strong>Default<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"570\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture9-1.png\" alt=\"\" class=\"wp-image-3306\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture9-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture9-1-300x274.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p>On the&nbsp;<strong>Default<\/strong>&nbsp;pane, click&nbsp;<strong>New agent<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"380\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture10-1.png\" alt=\"\" class=\"wp-image-3307\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture10-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture10-1-300x183.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture10-1-80x50.png 80w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p>On the&nbsp;<strong>Get the agent<\/strong>&nbsp;panel, ensure that the&nbsp;<strong>Windows<\/strong>&nbsp;tab and the&nbsp;<strong>x64<\/strong>&nbsp;section are selected and then click&nbsp;<strong>Download<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"649\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture11-1.png\" alt=\"\" class=\"wp-image-3308\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture11-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture11-1-288x300.png 288w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Start File Explorer, create a directory&nbsp;<strong>C:\\AzAgent<\/strong>&nbsp;and extract content of the downloaded agent zip file residing in the&nbsp;<strong>Downloads<\/strong>&nbsp;folder into this directory.<\/li><li>Within the Remote Desktop session to&nbsp;<strong>exceed11bvm<\/strong>, right-click the&nbsp;<strong>Start<\/strong>&nbsp;menu and click&nbsp;<strong>Command Prompt (Admin)<\/strong>.<\/li><li>Within the&nbsp;<strong>Administrator: Command Prompt<\/strong>&nbsp;window, run the following to start the installation of the agent binaries:<\/li><\/ul>\n\n\n\n<p>CodeCopy<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd C:\\AzAgent\nConfig.cmd\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the&nbsp;<strong>Administrator: Command Prompt<\/strong>&nbsp;window, when prompted to&nbsp;<strong>Enter server URL<\/strong>, type&nbsp;<strong>https:\/\/dev.azure.com\/&lt;your-DevOps-organization-name&gt;<\/strong>, where&nbsp;<strong>&lt;your-DevOps-organization-name&gt;<\/strong>&nbsp;represents the name of your Azure DevOps Organization, and press the&nbsp;<strong>Enter<\/strong>&nbsp;key.<\/li><li>In the&nbsp;<strong>Administrator: Command Prompt<\/strong>&nbsp;window, when prompted&nbsp;<strong>Enter Authentication type (press enter for PAT)<\/strong>, press the&nbsp;<strong>Enter key<\/strong>.<\/li><li>In the&nbsp;<strong>Administrator: Command Prompt<\/strong>&nbsp;window, when prompted&nbsp;<strong>Enter personal access token<\/strong>, switch to the Azure DevOps portal, close the&nbsp;<strong>Get the agent<\/strong>&nbsp;panel, in the upper right corner of the Azure DevOps page, click the&nbsp;<strong>User settings<\/strong>&nbsp;icon, in the dropdown menu, click&nbsp;<strong>Personal access tokens<\/strong>, on the&nbsp;<strong>Personal Access Tokens<\/strong>&nbsp;pane, and click&nbsp;<strong>+ New Token<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"520\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture12-1.png\" alt=\"\" class=\"wp-image-3309\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture12-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture12-1-300x250.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"424\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture13-1.png\" alt=\"\" class=\"wp-image-3310\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture13-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture13-1-300x204.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<ol class=\"wp-block-list\" type=\"1\"><li>On the&nbsp;<strong>Create a new personal access token<\/strong>&nbsp;pane, specify the following settings and click&nbsp;<strong>Create<\/strong>&nbsp;(leave all others with their default values):<\/li><\/ol>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td>Setting<\/td><td>Value<\/td><\/tr><\/thead><tbody><tr><td>Name<\/td><td><strong>Setting&nbsp;Up&nbsp;and&nbsp;Running&nbsp;Functional&nbsp;Tests lab<\/strong><\/td><\/tr><tr><td>Scopes<\/td><td><strong>Custom Defined<\/strong><\/td><\/tr><tr><td>Scopes<\/td><td>Click&nbsp;<strong>Show all scopes<\/strong>&nbsp;(at the bottom of the window)<\/td><\/tr><tr><td>Scopes<\/td><td><strong>Agent Pools<\/strong>&nbsp;&#8211;&nbsp;<strong>Read &amp; Manage<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"604\" height=\"795\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture14-1.png\" alt=\"\" class=\"wp-image-3311\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture14-1.png 604w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture14-1-228x300.png 228w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the&nbsp;<strong>Success<\/strong>&nbsp;pane, copy the value of the personal access token to Clipboard.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: Make sure you copy the token. You will not be able to retrieve it once you close this pane.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>On the&nbsp;<strong>Success<\/strong>&nbsp;pane, click&nbsp;<strong>Close<\/strong>.<\/li><li>Switch back to the&nbsp;<strong>Administrator: Command Prompt<\/strong>&nbsp;window and paste the content of Clipboard and press the&nbsp;<strong>Enter key<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"448\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture15-1.png\" alt=\"\" class=\"wp-image-3312\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture15-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture15-1-300x215.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the&nbsp;<strong>Administrator: Command Prompt<\/strong>&nbsp;window, when prompted&nbsp;<strong>Enter agent pool (press enter for default)<\/strong>, press the&nbsp;<strong>Enter key<\/strong>.<\/li><li>In the&nbsp;<strong>Administrator: Command Prompt<\/strong>&nbsp;window, when prompted&nbsp;<strong>Enter agent name (press enter for exceed11bvm)<\/strong>, press the&nbsp;<strong>Enter key<\/strong>.<\/li><li>In the&nbsp;<strong>Administrator: Command Prompt<\/strong>&nbsp;window, when prompted&nbsp;<strong>Enter work folder (press enter for _work)<\/strong>, press the&nbsp;<strong>Enter key<\/strong>.<\/li><li>In the&nbsp;<strong>Administrator: Command Prompt<\/strong>&nbsp;window, when prompted&nbsp;<strong>Enter run agent as service (Y\/N) (press enter for N)<\/strong>, press the&nbsp;<strong>Enter key<\/strong>.<\/li><li>In the&nbsp;<strong>Administrator: Command Prompt<\/strong>&nbsp;window, when prompted&nbsp;<strong>Enter configure autologon and run agent on startup (Y\/N) (press enter for N)<\/strong>, press the&nbsp;<strong>Enter key<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"455\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture16-1.png\" alt=\"\" class=\"wp-image-3313\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture16-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture16-1-300x219.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Once the agent is registered, in the&nbsp;<strong>Administrator: Command Prompt<\/strong>&nbsp;window, type&nbsp;<strong>run.cmd<\/strong>&nbsp;and press the&nbsp;<strong>Enter<\/strong>&nbsp;to start the agent.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: You also need to install the Dac Framework which is used by the application you will be deploying later in the lab.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Within the Remote Desktop session to&nbsp;<strong>exceed11bvm<\/strong>, start another instance of the web browser, navigate to the&nbsp;<a href=\"https:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id=58207&amp;WT.mc_id=rss_alldownloads_extensions\" target=\"_blank\" rel=\"noreferrer noopener\">Microsoft SQL Server Data-Tier Application Framework (18.2) download page<\/a>&nbsp;and click&nbsp;<strong>Download<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"639\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture17-1.png\" alt=\"\" class=\"wp-image-3314\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture17-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture17-1-293x300.png 293w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the&nbsp;<strong>Choose the download you want<\/strong>, select the&nbsp;<strong>EN\\x64\\DacFramework.msi<\/strong>&nbsp;checkbox and click&nbsp;<strong>Next<\/strong>. This will trigger automatic download of the&nbsp;<strong>DacFramework.msi<\/strong>&nbsp;file.<\/li><li>Once the download of the&nbsp;<strong>DacFramework.msi<\/strong>&nbsp;file completes, use it to run the installation of the Microsoft SQL Server Data-Tier Application Framework with the default settings.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"489\" height=\"385\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture18-1.png\" alt=\"\" class=\"wp-image-3315\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture18-1.png 489w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture18-1-300x236.png 300w\" sizes=\"auto, (max-width: 489px) 100vw, 489px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"492\" height=\"383\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture19.png\" alt=\"\" class=\"wp-image-3316\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture19.png 492w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture19-300x234.png 300w\" sizes=\"auto, (max-width: 492px) 100vw, 492px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Task 2: Configure a release pipeline<\/strong><\/p>\n\n\n\n<p>In this task, you will configure the release pipeline.<\/p>\n\n\n\n<p><strong>Note<\/strong>: The Azure VM has the agent configured to deploy the applications and run Selenium testcases. The release definition uses&nbsp;<a href=\"https:\/\/docs.microsoft.com\/en-us\/vsts\/build-release\/concepts\/process\/phases\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Phases<\/strong><\/a>&nbsp;to deploy to target servers.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Within the Remote Desktop session to&nbsp;<strong>exceed11bvm<\/strong>, in the browser window displaying the&nbsp;<strong>Azure DevOps<\/strong>&nbsp;portal, click the&nbsp;<strong>Azure DevOps<\/strong>&nbsp;symbol in the upper left corner.<\/li><li>On the pane displaying your organization projects, click the tile representing the&nbsp;<strong>Setting&nbsp;Up&nbsp;and&nbsp;Running&nbsp;Functional&nbsp;Tests<\/strong>&nbsp;project.<\/li><li>On the&nbsp;<strong>Setting&nbsp;Up&nbsp;and&nbsp;Running&nbsp;Functional&nbsp;Tests<\/strong>&nbsp;pane, in the vertical navigational pane, select&nbsp;<strong>Pipelines<\/strong>, within the&nbsp;<strong>Pipelines<\/strong>&nbsp;section, click&nbsp;<strong>Releases<\/strong>&nbsp;and then, on the&nbsp;<strong>Selenium<\/strong>&nbsp;pane, click&nbsp;<strong>Edit<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"452\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture20-1.png\" alt=\"\" class=\"wp-image-3317\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture20-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture20-1-300x217.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p>On the&nbsp;<strong>All pipelines &gt; Selenium<\/strong>&nbsp;pane, click the&nbsp;<strong>Tasks<\/strong>&nbsp;tab header and, in the dropdown menu, click&nbsp;<strong>Dev<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"538\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture21-1.png\" alt=\"\" class=\"wp-image-3318\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture21-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture21-1-300x259.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Within the list of tasks of the&nbsp;<strong>Dev<\/strong>&nbsp;stage, review the&nbsp;<strong>IIS Deployment<\/strong>,&nbsp;<strong>SQL Deployment<\/strong>, and&nbsp;<strong>Selenium test execution<\/strong>&nbsp;deployment phases.<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>IIS Deployment phase<\/strong>: In this phase, we deploy application to the VM using the following tasks:<ul><li><strong>IIS Web App Manage<\/strong>: This task runs on the target machine where we registered agent. It creates a&nbsp;<em>website<\/em>&nbsp;and an&nbsp;<em>Application Pool<\/em>&nbsp;locally with the name&nbsp;<strong>PartsUnlimited<\/strong>&nbsp;running under the port&nbsp;<strong>82<\/strong>&nbsp;,&nbsp;<a href=\"http:\/\/localhost:82\/\"><strong>http:\/\/localhost:82<\/strong><\/a><\/li><li><strong>IIS Web App Deploy<\/strong>: This task deploys the application to the IIS server using&nbsp;<strong>Web Deploy<\/strong>.<\/li><\/ul><\/li><li><strong>Database deploy phase<\/strong>: In this phase, we use&nbsp;<a href=\"https:\/\/github.com\/Microsoft\/vsts-tasks\/blob\/master\/Tasks\/SqlDacpacDeploymentOnMachineGroup\/README.md\"><strong>SQL Server Database Deploy<\/strong><\/a>&nbsp;task to deploy&nbsp;<a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/data-tier-applications\/data-tier-applications\"><strong>dacpac<\/strong><\/a>&nbsp;file to the DB server.<\/li><li><strong>Selenium tests execution<\/strong>: Executing&nbsp;<strong>UI testing<\/strong>&nbsp;as part of the release process allows us to detect unexpected changes. Setting up automated browser based testing drives quality in your application, without having to do it manually. In this phase, we will execute Selenium tests on the deployed web application. The subsequent tasks describe using Selenium to test the websites in the release pipeline.<ul><li><strong>Visual Studio Test Platform Installer<\/strong>: The&nbsp;<a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/devops\/pipelines\/tasks\/tool\/vstest-platform-tool-installer?view=vsts\">Visual Studio Test Platform Installer<\/a>&nbsp;task will acquire the Microsoft test platform from nuget.org or a specified feed, and add it to the tools cache. It satisfies the&nbsp;<strong>vstest<\/strong>&nbsp;requirements so any subsequent Visual Studio Test task in a build or release pipeline can run without needing a full Visual Studio install on the agent machine.<\/li><li><strong>Run Selenium UI tests<\/strong>: This&nbsp;<a href=\"https:\/\/github.com\/Microsoft\/azure-pipelines-tasks\/blob\/master\/Tasks\/VsTestV2\/README.md\">task<\/a>&nbsp;uses&nbsp;<strong>vstest.console.exe<\/strong>&nbsp;to execute the selenium testcases on the agent machines.<\/li><\/ul><\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the&nbsp;<strong>All pipelines &gt; Selenium<\/strong>&nbsp;pane, click the&nbsp;<strong>IIS Deployment<\/strong>&nbsp;phase and, on the&nbsp;<strong>Agent job<\/strong>&nbsp;pane, verify that the&nbsp;<strong>Default<\/strong>&nbsp;Agent pool is selected.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"669\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture22.png\" alt=\"\" class=\"wp-image-3319\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture22.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture22-280x300.png 280w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p>Repeat the previous step for&nbsp;<strong>SQL Deployment<\/strong>&nbsp;and the&nbsp;<strong>Selenium tests execution<\/strong>&nbsp;phases. If needed, click&nbsp;<strong>Save<\/strong>&nbsp;to save the changes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"659\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture23-1.png\" alt=\"\" class=\"wp-image-3320\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture23-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture23-1-284x300.png 284w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Task 3: Trigger Build and Release<\/strong><\/p>\n\n\n\n<p>In this task, we will trigger the&nbsp;<strong>Build<\/strong>&nbsp;to compile Selenium C# scripts along with the Web application. The resulting binaries are copied to self-hosted agent and the Selenium scripts are executed as part of the automated&nbsp;<strong>Release<\/strong>.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Within the Remote Desktop session to&nbsp;<strong>exceed11bvm<\/strong>, in the browser window displaying the&nbsp;<strong>Azure DevOps<\/strong>&nbsp;portal, in the vertical navigational pane, in the&nbsp;<strong>Pipelines<\/strong>&nbsp;section, click&nbsp;<strong>Pipelines<\/strong>&nbsp;and then, on the&nbsp;<strong>Pipelines<\/strong>&nbsp;pane, click&nbsp;<strong>Selenium<\/strong>.<\/li><li>On the&nbsp;<strong>Selenium<\/strong>&nbsp;pane, click&nbsp;<strong>Run pipeline<\/strong>&nbsp;and, on the&nbsp;<strong>Run pipeline<\/strong>, click&nbsp;<strong>Run<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"395\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture24-1.png\" alt=\"\" class=\"wp-image-3321\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture24-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture24-1-300x190.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture24-1-80x50.png 80w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"461\" height=\"829\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture25-1.png\" alt=\"\" class=\"wp-image-3322\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture25-1.png 461w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture25-1-167x300.png 167w\" sizes=\"auto, (max-width: 461px) 100vw, 461px\" \/><\/figure>\n\n\n\n<p><strong>Note<\/strong>: This build will publish the test artifacts to Azure DevOps, which will be used in release.<\/p>\n\n\n\n<p><strong>Note<\/strong>: Once the build is successful, release will be triggered.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the pipeline runs pane, in the&nbsp;<strong>Jobs<\/strong>&nbsp;section, click&nbsp;<strong>Phase 1<\/strong>&nbsp;and monitor the build progress until its completion.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"553\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture26-1.png\" alt=\"\" class=\"wp-image-3323\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture26-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture26-1-300x266.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the browser window displaying the&nbsp;<strong>Azure DevOps<\/strong>&nbsp;portal, in the vertical navigational pane, in the&nbsp;<strong>Pipelines<\/strong>&nbsp;section, click&nbsp;<strong>Releases<\/strong>, click the entry representing the release, and, on the&nbsp;<strong>Selenium &gt; Release-1<\/strong>&nbsp;pane, click&nbsp;<strong>Dev<\/strong>.<\/li><li>On the&nbsp;<strong>Selenium &gt; Release-1 &gt; Dev<\/strong>&nbsp;pane, monitor the corresponding deployment.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"262\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture27-1.png\" alt=\"\" class=\"wp-image-3324\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture27-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture27-1-300x126.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Once the&nbsp;<strong>Selenium test execution<\/strong>&nbsp;phase starts, monitor the web browser tests.<\/li><li>Once the release completes, on the&nbsp;<strong>Selenium &gt; Release-1 &gt; Dev<\/strong>&nbsp;pane, click on the&nbsp;<strong>Tests<\/strong>&nbsp;tab to analyze the test results. Select the required filters from the dropdown in&nbsp;<strong>Outcome<\/strong>&nbsp;section to view the tests and their status.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"503\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture28-1.png\" alt=\"\" class=\"wp-image-3325\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture28-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/Picture28-1-300x242.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Review<\/strong><\/p>\n\n\n\n<p>In this lab, you learned how to execute Selenium test cases on a C# web application, as part of the Azure DevOps Release pipeline.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><mark class=\"kt-highlight\">Reminder: Don\u2019t forget to delete or shutdown all unused Azure resources after your labs for cost saving<\/mark><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Selenium&nbsp;is a portable open source software-testing framework for web applications. It has the capability to operate on almost every operating system. It supports all modern browsers and multiple languages including .NET (C#), Java. In this lab, you will learn how &hellip; <a href=\"https:\/\/exceedthecloud.com\/?p=3297\">Continued<\/a><\/p>\n","protected":false},"author":1,"featured_media":3327,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"kt_blocks_editor_width":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[16,4,26],"tags":[8,105,107,115],"class_list":["post-3297","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","category-practical-labs-series","category-web","tag-azure","tag-devops","tag-pipelines","tag-selenium"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/05\/istockphoto-1128252197-612x612-1.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/posts\/3297","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3297"}],"version-history":[{"count":3,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/posts\/3297\/revisions"}],"predecessor-version":[{"id":3377,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/posts\/3297\/revisions\/3377"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/media\/3327"}],"wp:attachment":[{"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3297"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3297"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3297"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}