<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Ronald&#39;s Blog</title>
    <link>https://ronaldbosma.github.io/</link>
    <description>Recent content on Ronald&#39;s Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <copyright>Ronald Bosma - All rights reserved</copyright>
    <lastBuildDate>Thu, 09 Jul 2026 20:00:00 +0200</lastBuildDate><atom:link href="https://ronaldbosma.github.io/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Deep Object Comparison in MSTest with Assert.AreEquivalent</title>
      <link>https://ronaldbosma.github.io/blog/2026/07/09/deep-object-comparison-in-mstest-with-assert.areequivalent/</link>
      <pubDate>Thu, 09 Jul 2026 20:00:00 +0200</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2026/07/09/deep-object-comparison-in-mstest-with-assert.areequivalent/</guid>
      <description>MSTest v4.3.0 introduces the Assert.AreEquivalent&lt;!-- raw HTML omitted --&gt; method that performs a deep equality comparison of two objects, checking that all properties have the same value. In this post, I&amp;rsquo;ll show you what it can do and how it compares to AwesomeAssertions and Shouldly.</description>
    </item>
    
    <item>
      <title>Grouping APIs in Azure API Management Using Tags</title>
      <link>https://ronaldbosma.github.io/blog/2026/03/23/grouping-apis-in-azure-api-management-using-tags/</link>
      <pubDate>Mon, 23 Mar 2026 07:00:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2026/03/23/grouping-apis-in-azure-api-management-using-tags/</guid>
      <description>When you have a lot of APIs in Azure API Management, the view can become unwieldy. By applying tags to your APIs you can group and filter them in both the Azure Portal and the Developer Portal. In this post I&amp;rsquo;ll show you how to assign tags to APIs using Bicep and how to automatically bubble up operation-level tags from an OpenAPI spec to the API level.</description>
    </item>
    
    <item>
      <title>Implement Failover in API Management with a Load-balanced Pool</title>
      <link>https://ronaldbosma.github.io/blog/2026/03/09/implement-failover-in-api-management-with-a-load-balanced-pool/</link>
      <pubDate>Mon, 09 Mar 2026 06:00:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2026/03/09/implement-failover-in-api-management-with-a-load-balanced-pool/</guid>
      <description>In this post, I&amp;rsquo;ll show you how to implement (regional) failover in Azure API Management using priority-based load-balanced pools, backend circuit breakers and retry policies. The setup sends traffic to the local backend by default and automatically fails over to the secondary backend when the primary backend becomes unavailable.</description>
    </item>
    
    <item>
      <title>GitHub Actions Workflow for Azure Developer CLI (azd) Templates</title>
      <link>https://ronaldbosma.github.io/blog/2026/03/02/github-actions-workflow-for-azure-developer-cli-azd-templates/</link>
      <pubDate>Mon, 02 Mar 2026 06:00:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2026/03/02/github-actions-workflow-for-azure-developer-cli-azd-templates/</guid>
      <description>In this post, I&amp;rsquo;ll show how I structure a GitHub Actions workflow for Azure Developer CLI (azd) templates so I can automate the process of building, deploying, verifying and cleaning up. The workflow makes it easier to validate my own changes and review external contributions. I&amp;rsquo;ll walk through each job with practical snippets and explain why I split build, deployment and verification.</description>
    </item>
    
    <item>
      <title>Tips and Tricks for Authoring Azure Developer CLI (azd) Templates</title>
      <link>https://ronaldbosma.github.io/blog/2026/02/23/tips-and-tricks-for-authoring-azure-developer-cli-azd-templates/</link>
      <pubDate>Mon, 23 Feb 2026 07:00:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2026/02/23/tips-and-tricks-for-authoring-azure-developer-cli-azd-templates/</guid>
      <description>I&amp;rsquo;ve created several Azure Developer CLI (azd) templates over the past year. In this post, I share practical tips and tricks for authoring azd templates, including parameter management, naming conventions, hooks, pipelines and handling Entra ID resources.</description>
    </item>
    
    <item>
      <title>Alert Processing Rules in Bicep: Add Action Groups or Suppress Notifications</title>
      <link>https://ronaldbosma.github.io/blog/2026/02/02/alert-processing-rules-in-bicep-add-action-groups-or-suppress-notifications/</link>
      <pubDate>Mon, 02 Feb 2026 17:45:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2026/02/02/alert-processing-rules-in-bicep-add-action-groups-or-suppress-notifications/</guid>
      <description>Alert processing rules let you add action groups or suppress notifications without changing alert rules. In this post I explain the actionRules resource in Bicep and show two scenarios: adding an action group and suppressing notifications on a schedule for failed availability tests.</description>
    </item>
    
    <item>
      <title>Track Availability in Application Insights using Logic App Workflow</title>
      <link>https://ronaldbosma.github.io/blog/2026/01/26/track-availability-in-application-insights-using-logic-app-workflow/</link>
      <pubDate>Mon, 26 Jan 2026 17:00:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2026/01/26/track-availability-in-application-insights-using-logic-app-workflow/</guid>
      <description>I&amp;rsquo;ve worked with clients following a low-code first strategy where Logic Apps are preferred over .NET solutions. This post shows you how to create custom availability tests using Logic App (Standard) workflows and track the results in Application Insights. This approach gives you access to all Logic App capabilities while requiring minimal code.</description>
    </item>
    
    <item>
      <title>Track Availability in Application Insights using .NET</title>
      <link>https://ronaldbosma.github.io/blog/2026/01/19/track-availability-in-application-insights-using-.net/</link>
      <pubDate>Mon, 19 Jan 2026 09:00:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2026/01/19/track-availability-in-application-insights-using-.net/</guid>
      <description>Standard availability tests in Application Insights have limitations like no multi-step authentication, no mTLS support and no access to private networks. This post shows you how to create custom availability tests using .NET and Azure Functions to overcome these restrictions while gaining full control over your monitoring logic.</description>
    </item>
    
    <item>
      <title>Track Availability in Application Insights using Standard Test</title>
      <link>https://ronaldbosma.github.io/blog/2026/01/12/track-availability-in-application-insights-using-standard-test/</link>
      <pubDate>Mon, 12 Jan 2026 08:45:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2026/01/12/track-availability-in-application-insights-using-standard-test/</guid>
      <description>When connecting to external systems in integration projects, availability tests help you monitor system uptime, verify security measures are up to date and confirm systems can be reached. This post shows you how to create Application Insights standard tests through Bicep to automate your availability monitoring with infrastructure-as-code.</description>
    </item>
    
    <item>
      <title>Rate Limiting in Azure API Management</title>
      <link>https://ronaldbosma.github.io/blog/2026/01/06/rate-limiting-in-azure-api-management/</link>
      <pubDate>Tue, 06 Jan 2026 14:00:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2026/01/06/rate-limiting-in-azure-api-management/</guid>
      <description>Learn how to use Azure API Management&amp;rsquo;s rate-limit and rate-limit-by-key policies to protect backends from overwhelming traffic and fairly distribute capacity among clients. Includes practical examples, monitoring guidance and key considerations for different scenarios.</description>
    </item>
    
    <item>
      <title>Catch-All API in Azure API Management: Forward Any Request</title>
      <link>https://ronaldbosma.github.io/blog/2025/12/15/catch-all-api-in-azure-api-management-forward-any-request/</link>
      <pubDate>Mon, 15 Dec 2025 16:00:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2025/12/15/catch-all-api-in-azure-api-management-forward-any-request/</guid>
      <description>Sometimes you just want to forward any request from Azure API Management to a backend without defining a detailed API contract. In this post I show how to create a simple Catch-All API that supports multiple HTTP methods and matches any URL.</description>
    </item>
    
    <item>
      <title>Generic Error Handling in API Management</title>
      <link>https://ronaldbosma.github.io/blog/2025/12/01/generic-error-handling-in-api-management/</link>
      <pubDate>Mon, 01 Dec 2025 17:15:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2025/12/01/generic-error-handling-in-api-management/</guid>
      <description>Learn how to implement centralized error handling in Azure API Management at the global scope, reducing duplicate logic and ensuring consistent error responses across all APIs while maintaining flexibility for custom scenarios.</description>
    </item>
    
    <item>
      <title>Sanitizing Response Headers in API Management</title>
      <link>https://ronaldbosma.github.io/blog/2025/11/24/sanitizing-response-headers-in-api-management/</link>
      <pubDate>Mon, 24 Nov 2025 09:30:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2025/11/24/sanitizing-response-headers-in-api-management/</guid>
      <description>By default, Azure API Management returns all headers from the backend to the client, which may include sensitive information. This post demonstrates three approaches to sanitizing response headers: explicit removal, allowlist-based filtering and blocklist-based filtering.</description>
    </item>
    
    <item>
      <title>Call OAuth-Protected APIs from Azure DevOps Using Federated Credentials</title>
      <link>https://ronaldbosma.github.io/blog/2025/11/10/call-oauth-protected-apis-from-azure-devops-using-federated-credentials/</link>
      <pubDate>Mon, 10 Nov 2025 16:00:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2025/11/10/call-oauth-protected-apis-from-azure-devops-using-federated-credentials/</guid>
      <description>Learn how to execute automated integration tests against OAuth-protected APIs from Azure DevOps pipelines using federated credentials. This enables secure API testing without managing secrets in your CI/CD pipeline.</description>
    </item>
    
    <item>
      <title>Call OAuth-Protected APIs from GitHub Actions Using Federated Credentials</title>
      <link>https://ronaldbosma.github.io/blog/2025/11/03/call-oauth-protected-apis-from-github-actions-using-federated-credentials/</link>
      <pubDate>Mon, 03 Nov 2025 16:00:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2025/11/03/call-oauth-protected-apis-from-github-actions-using-federated-credentials/</guid>
      <description>Learn how to execute automated integration tests against OAuth-protected APIs from GitHub Actions workflows using federated credentials. This enables secure API testing without managing secrets in your CI/CD pipeline.</description>
    </item>
    
    <item>
      <title>Call OAuth-Protected Backends from API Management using Send-Request Policy with Client Certificate</title>
      <link>https://ronaldbosma.github.io/blog/2025/10/20/call-oauth-protected-backends-from-api-management-using-send-request-policy-with-client-certificate/</link>
      <pubDate>Mon, 20 Oct 2025 16:00:00 +0200</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2025/10/20/call-oauth-protected-backends-from-api-management-using-send-request-policy-with-client-certificate/</guid>
      <description>Learn how to implement certificate-based OAuth authentication in API Management using JWT assertions and the send-request policy. This approach provides stronger security than client secrets by proving possession of a private key without transmitting it.</description>
    </item>
    
    <item>
      <title>Call OAuth-Protected Backends from API Management using Send-Request Policy with Client Secret</title>
      <link>https://ronaldbosma.github.io/blog/2025/10/13/call-oauth-protected-backends-from-api-management-using-send-request-policy-with-client-secret/</link>
      <pubDate>Mon, 13 Oct 2025 16:00:00 +0200</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2025/10/13/call-oauth-protected-backends-from-api-management-using-send-request-policy-with-client-secret/</guid>
      <description>When API Management&amp;rsquo;s credential manager isn&amp;rsquo;t suitable for your OAuth scenarios, you can implement token handling directly using policies. In this post, I show how to call OAuth-protected backends using the send-request policy with Client Credentials Flow and a client secret stored in Key Vault.</description>
    </item>
    
    <item>
      <title>Call OAuth-Protected Backends from API Management using Credential Manager</title>
      <link>https://ronaldbosma.github.io/blog/2025/10/06/call-oauth-protected-backends-from-api-management-using-credential-manager/</link>
      <pubDate>Mon, 06 Oct 2025 16:00:00 +0200</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2025/10/06/call-oauth-protected-backends-from-api-management-using-credential-manager/</guid>
      <description>Azure API Management&amp;rsquo;s credential manager provides a simple, managed way to handle OAuth flows with automatic token acquisition and caching. In this post, I show how to configure it using Bicep and integrate it into your APIs. I also highlight key considerations to help you decide when credential manager is the right choice versus custom token handling.</description>
    </item>
    
    <item>
      <title>Call OAuth-Protected APIs with Managed Identity from API Management</title>
      <link>https://ronaldbosma.github.io/blog/2025/09/29/call-oauth-protected-apis-with-managed-identity-from-api-management/</link>
      <pubDate>Mon, 29 Sep 2025 16:00:00 +0200</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2025/09/29/call-oauth-protected-apis-with-managed-identity-from-api-management/</guid>
      <description>Learn how to use API Management to call OAuth-protected APIs with managed identity. This enables secure API-to-API communication and privilege delegation patterns without managing secrets.</description>
    </item>
    
    <item>
      <title>Call OAuth-Protected APIs with Managed Identity from Logic Apps</title>
      <link>https://ronaldbosma.github.io/blog/2025/09/24/call-oauth-protected-apis-with-managed-identity-from-logic-apps/</link>
      <pubDate>Wed, 24 Sep 2025 17:00:00 +0200</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2025/09/24/call-oauth-protected-apis-with-managed-identity-from-logic-apps/</guid>
      <description>Azure Logic Apps Standard makes it easy to call OAuth-protected APIs using managed identity. This post demonstrates how to use the HTTP action&amp;rsquo;s built-in authentication and token caching for secure, reliable calls.</description>
    </item>
    
    <item>
      <title>Call OAuth-Protected APIs with Managed Identity from .NET</title>
      <link>https://ronaldbosma.github.io/blog/2025/09/20/call-oauth-protected-apis-with-managed-identity-from-.net/</link>
      <pubDate>Sat, 20 Sep 2025 14:30:00 +0200</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2025/09/20/call-oauth-protected-apis-with-managed-identity-from-.net/</guid>
      <description>Learn how to call OAuth-protected APIs from .NET applications using Azure managed identity. This post shows how to implement secure API calls from Azure Functions without managing secrets, using the Azure Identity library and custom HTTP message handlers.</description>
    </item>
    
    <item>
      <title>Protect APIs in Azure API Management with OAuth</title>
      <link>https://ronaldbosma.github.io/blog/2025/09/16/protect-apis-in-azure-api-management-with-oauth/</link>
      <pubDate>Tue, 16 Sep 2025 19:30:00 +0200</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2025/09/16/protect-apis-in-azure-api-management-with-oauth/</guid>
      <description>Discover how to secure APIs in Azure API Management with OAuth 2.0 and Microsoft Entra ID using a fully automated, infrastructure-as-code approach. This post walks through deploying everything with Bicep, including app registrations via the Microsoft Graph Bicep extension, so you can avoid manual portal setup and ensure repeatable deployments.</description>
    </item>
    
    <item>
      <title>Convert Base64 to multipart/form-data with API Management</title>
      <link>https://ronaldbosma.github.io/blog/2025/09/04/convert-base64-to-multipart/form-data-with-api-management/</link>
      <pubDate>Thu, 04 Sep 2025 18:30:00 +0200</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2025/09/04/convert-base64-to-multipart/form-data-with-api-management/</guid>
      <description>In this post, I&amp;rsquo;ll show you how to use Azure API Management policies to transform a JSON request containing a base64-encoded file into a multipart/form-data request. This lets you connect clients that send files in JSON with backends that require standard form uploads.</description>
    </item>
    
    <item>
      <title>Azure Integration Services Quickstart</title>
      <link>https://ronaldbosma.github.io/blog/2025/02/21/azure-integration-services-quickstart/</link>
      <pubDate>Fri, 21 Feb 2025 11:00:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2025/02/21/azure-integration-services-quickstart/</guid>
      <description>I&amp;rsquo;ve recently published a Bicep template for quickly deploying Azure Integration Services, including Azure API Management, Function App, Logic App, Service Bus and Event Hubs namespace, along with supporting resources such as Application Insights, Key Vault and Storage Account.</description>
    </item>
    
    <item>
      <title>Testing PSRule Rules for API Management Policies with Pester</title>
      <link>https://ronaldbosma.github.io/blog/2024/09/26/testing-psrule-rules-for-api-management-policies-with-pester/</link>
      <pubDate>Thu, 26 Sep 2024 16:00:00 +0200</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2024/09/26/testing-psrule-rules-for-api-management-policies-with-pester/</guid>
      <description>In my previous blog post, I demonstrated how to use PSRule to validate Azure API Management policies by defining several custom rules, each with specific logic. As a fan of Test Driven Development, I created these rules following a test-first approach. In this post, I’ll walk you through how to write automated tests for these PSRule rules using Pester, a popular testing framework for PowerShell.</description>
    </item>
    
    <item>
      <title>Validate API Management policies with PSRule</title>
      <link>https://ronaldbosma.github.io/blog/2024/09/02/validate-api-management-policies-with-psrule/</link>
      <pubDate>Mon, 02 Sep 2024 19:30:00 +0200</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2024/09/02/validate-api-management-policies-with-psrule/</guid>
      <description>I&amp;rsquo;ve been working with Azure API Management for a while now, and one of the challenges I&amp;rsquo;ve faced is finding a reliable way to validate the XML policies I write. While tools like SonarQube are excellent for code quality checks, they don&amp;rsquo;t support the specific checks required for Azure API Management policies. In this blog post, I&amp;rsquo;ll demonstrate how to use PSRule to validate your Azure API Management policies effectively.</description>
    </item>
    
    <item>
      <title>Reqnroll Parsable Value Retriever and Comparer</title>
      <link>https://ronaldbosma.github.io/blog/2024/07/17/reqnroll-parsable-value-retriever-and-comparer/</link>
      <pubDate>Wed, 17 Jul 2024 08:00:00 +0200</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2024/07/17/reqnroll-parsable-value-retriever-and-comparer/</guid>
      <description>In this blog post, we&amp;rsquo;ll explore how to use the &lt;code&gt;IParsable&amp;lt;T&amp;gt;&lt;/code&gt; interface to build a generic Reqnroll value retriever and comparer. We&amp;rsquo;ll start by creating custom value retrievers and comparers, then develop a reusable solution with generics, and finally, we&amp;rsquo;ll use reflection to make it even more generic. (This solution also works for its predecessor, SpecFlow, when using .NET 7 or higher.)</description>
    </item>
    
    <item>
      <title>Replace placeholders in string with user-defined Bicep function</title>
      <link>https://ronaldbosma.github.io/blog/2024/06/21/replace-placeholders-in-string-with-user-defined-bicep-function/</link>
      <pubDate>Fri, 21 Jun 2024 15:00:00 +0200</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2024/06/21/replace-placeholders-in-string-with-user-defined-bicep-function/</guid>
      <description>When you have a string value in Bicep with multiple placeholders that you want to replace, it can be tricky to find a good way to do this. In this blog post, I will show you how you can replace placeholders in a string with a couple of user-defined functions.</description>
    </item>
    
    <item>
      <title>Apply Azure naming convention using Bicep functions</title>
      <link>https://ronaldbosma.github.io/blog/2024/06/05/apply-azure-naming-convention-using-bicep-functions/</link>
      <pubDate>Wed, 05 Jun 2024 08:00:00 +0200</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2024/06/05/apply-azure-naming-convention-using-bicep-functions/</guid>
      <description>When deploying Azure resources, it&amp;rsquo;s a good practice to apply a naming convention to your resources. This will help you to identify the purpose of the resource and the environment it belongs to. In this blog post, I will show you how to apply a naming convention using Bicep user-defined functions. This post also includes a short introduction to the (experimental) Bicep Testing Framework.</description>
    </item>
    
    <item>
      <title>Securing backend connections with mTLS in API Management</title>
      <link>https://ronaldbosma.github.io/blog/2024/05/24/securing-backend-connections-with-mtls-in-api-management/</link>
      <pubDate>Fri, 24 May 2024 10:15:00 +0200</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2024/05/24/securing-backend-connections-with-mtls-in-api-management/</guid>
      <description>In this third post on working with client certificates in Azure API Management, we&amp;rsquo;ll focus on securing backend connections with mTLS. Using Bicep, we&amp;rsquo;ll reference a client certificate stored in Key Vault, make it available in API Management and configure a backend resource that uses the certificate during the mTLS handshake.</description>
    </item>
    
    <item>
      <title>Validate client certificates in API Management when it&#39;s behind an Application Gateway</title>
      <link>https://ronaldbosma.github.io/blog/2024/02/19/validate-client-certificates-in-api-management-when-its-behind-an-application-gateway/</link>
      <pubDate>Mon, 19 Feb 2024 19:00:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2024/02/19/validate-client-certificates-in-api-management-when-its-behind-an-application-gateway/</guid>
      <description>It&amp;rsquo;s not uncommon for Azure API Management to be deployed in a Virtual Network, only allowing external access via an Azure Application Gateway. In this second post on working with client certificates in API Management, we&amp;rsquo;ll explore how to configure an Application Gateway for mTLS and forward the client certificate to API Management for further validation. We&amp;rsquo;ll also look at the difference between strict and passthrough modes.</description>
    </item>
    
    <item>
      <title>Validate client certificates in API Management</title>
      <link>https://ronaldbosma.github.io/blog/2024/02/02/validate-client-certificates-in-api-management/</link>
      <pubDate>Fri, 02 Feb 2024 11:00:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2024/02/02/validate-client-certificates-in-api-management/</guid>
      <description>This blog post is the start of a series on how to work with client certificates in Azure API Management to set up a mutual TLS (mTLS) connection. While Azure&amp;rsquo;s official documentation provides excellent guidance on setting up client certificates via the Azure Portal, we&amp;rsquo;ll dive into using Bicep to automate the process. In this first post, we&amp;rsquo;ll cover the basics of how to validate client certificates in API Management.</description>
    </item>
    
    <item>
      <title>Where to position SpecFlow in the Test Pyramid?</title>
      <link>https://ronaldbosma.github.io/blog/2023/05/11/where-to-position-specflow-in-the-test-pyramid/</link>
      <pubDate>Thu, 11 May 2023 20:45:00 +0200</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2023/05/11/where-to-position-specflow-in-the-test-pyramid/</guid>
      <description>Automated testing is an essential part of software development, and determining the appropriate scope for your tests is crucial. This is also true when automating Gherkin scenarios with SpecFlow (or Cucumber). In this post I explore the different levels of the test pyramid and describe my preferred level for SpecFlow tests.</description>
    </item>
    
    <item>
      <title>Deploy Azure Workbook and App Insights Function</title>
      <link>https://ronaldbosma.github.io/blog/2023/03/10/deploy-azure-workbook-and-app-insights-function/</link>
      <pubDate>Fri, 10 Mar 2023 15:00:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2023/03/10/deploy-azure-workbook-and-app-insights-function/</guid>
      <description>In this post I explain how to deploy an Azure workbook using Bicep and set environment specific variables. I&amp;rsquo;ll also show how to deploy a shared kusto function in Application Insights with the Azure CLI.</description>
    </item>
    
    <item>
      <title>Azure Workbook Tips &amp; Tricks</title>
      <link>https://ronaldbosma.github.io/blog/2023/02/28/azure-workbook-tips-tricks/</link>
      <pubDate>Tue, 28 Feb 2023 19:30:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2023/02/28/azure-workbook-tips-tricks/</guid>
      <description>If you use Azure, you most likely use Application Insights for logging. You can use a dashboard to visualize your logging and gain better insights, but dashboards come with some limitations. For more flexibility Azure has worbooks. In this blog post I&amp;rsquo;ll share some tips &amp;amp; tricks that I&amp;rsquo;ve gathered over the years. As a sample, we&amp;rsquo;ll create a workbook that shows information about requests sent to an API Management instance.</description>
    </item>
    
    <item>
      <title>Transform SpecFlow Table Column</title>
      <link>https://ronaldbosma.github.io/blog/2022/10/29/transform-specflow-table-column/</link>
      <pubDate>Sat, 29 Oct 2022 12:30:00 +0200</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2022/10/29/transform-specflow-table-column/</guid>
      <description>In a previous blog post I wrote about a trick on how to remove technical ids from Gherkin scenarios while still using technical ids in the step definitions. The proposed solution worked well for the given scenario, but not for other cases. In this post I look at several approaches on how to solve this issue.</description>
    </item>
    
    <item>
      <title>Handling exceptions in SpecFlow</title>
      <link>https://ronaldbosma.github.io/blog/2021/05/31/handling-exceptions-in-specflow/</link>
      <pubDate>Mon, 31 May 2021 07:30:00 +0200</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2021/05/31/handling-exceptions-in-specflow/</guid>
      <description>I use Gherkin scenarios to describe the functional specifications of my software and SpecFlow to automate these scenarios as tests. Usually there will be a couple of scenarios describing the happy path of the feature I&amp;rsquo;m building but also some scenarios concerning failures. In this post I&amp;rsquo;ll show my solution how to handle failures in the form of exceptions with the Driver pattern.</description>
    </item>
    
    <item>
      <title>Provision an Azure VM in an Azure Pipelines Environment</title>
      <link>https://ronaldbosma.github.io/blog/2021/03/16/provision-an-azure-vm-in-an-azure-pipelines-environment/</link>
      <pubDate>Tue, 16 Mar 2021 00:00:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2021/03/16/provision-an-azure-vm-in-an-azure-pipelines-environment/</guid>
      <description>In the past I&amp;rsquo;ve created a custom Azure Pipelines task to install .NET Core on a Windows server. To test this task, I had to manually setup an environment with virtual machines. I wanted to automate this process, so I created a YAML pipeline in Azure DevOps that automatically provisions an Azure virtual machine and registers the virtual machine in an Azure Pipelines environment.</description>
    </item>
    
    <item>
      <title>Handling technical ids in Gherkin with SpecFlow</title>
      <link>https://ronaldbosma.github.io/blog/2020/08/08/handling-technical-ids-in-gherkin-with-specflow/</link>
      <pubDate>Sat, 08 Aug 2020 00:00:00 +0200</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2020/08/08/handling-technical-ids-in-gherkin-with-specflow/</guid>
      <description>Gherkin scenarios in Specification by Example are used to describe the functional requirements of your software. They should be readable for the team and also for the business that uses the software. Technical ids don&amp;rsquo;t have a place here. They&amp;rsquo;re usually included in scenarios for test automation purposes but make the them harder to read. So, what to do when your code requires a technical id?</description>
    </item>
    
    <item>
      <title>How to install .NET Core on a Windows server</title>
      <link>https://ronaldbosma.github.io/blog/2020/05/07/how-to-install-.net-core-on-a-windows-server/</link>
      <pubDate>Thu, 07 May 2020 00:00:00 +0200</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2020/05/07/how-to-install-.net-core-on-a-windows-server/</guid>
      <description>In this post I show how I install and update the .NET Core Runtime &amp;amp; Hosting Bundle on Windows servers using Azure Pipelines. Making patching .NET Core a trivial matter.</description>
    </item>
    
    <item>
      <title>Using multi-stage YAML pipeline to create and publish NuGet packages</title>
      <link>https://ronaldbosma.github.io/blog/2019/09/03/using-multi-stage-yaml-pipeline-to-create-and-publish-nuget-packages/</link>
      <pubDate>Tue, 03 Sep 2019 00:00:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2019/09/03/using-multi-stage-yaml-pipeline-to-create-and-publish-nuget-packages/</guid>
      <description>I&amp;rsquo;ve recently created a new NuGet package called FluentAssertions.ArgumentMatchers.Moq that I published on nuget.org. In order to make the process of creating and publishing this package as smooth and simple as possible, I&amp;rsquo;ve created a multi-stage YAML pipeline in Azure DevOps.</description>
    </item>
    
    <item>
      <title>Build And Release Hugo Site Using Azure Pipelines</title>
      <link>https://ronaldbosma.github.io/blog/2019/03/24/build-and-release-hugo-site-using-azure-pipelines/</link>
      <pubDate>Sun, 24 Mar 2019 00:00:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2019/03/24/build-and-release-hugo-site-using-azure-pipelines/</guid>
      <description>In this post I&amp;rsquo;ll give a step-by-step explanation on how I build and publish my Hugo blog site to GitHub Pages using Azure Pipelines.</description>
    </item>
    
    <item>
      <title>Cleaning Up Your Test Data Creation</title>
      <link>https://ronaldbosma.github.io/blog/2019/03/20/cleaning-up-your-test-data-creation/</link>
      <pubDate>Wed, 20 Mar 2019 00:00:00 +0100</pubDate>
      
      <guid>https://ronaldbosma.github.io/blog/2019/03/20/cleaning-up-your-test-data-creation/</guid>
      <description>I still come across a lot of automated tests with many lines of code just to create an object. Even when most data is not relevant for the scenario being tested.</description>
    </item>
    
  </channel>
</rss>
