.NET 6 + Selenium + Azure DevOps: implementação e automação de testes de Web sites

Renato Groffe
3 min readApr 11, 2022

--

Já abordei anteriormente neste blog o uso do Selenium WebDriver na implementação de testes de sites na Web, fazendo uso para isto do C# e de diferentes frameworks .NET (como SpecFlow e xUnit):

.NET 5 + Selenium WebDriver: implementando testes de Web sites,

Neste novo artigo trago um novo exemplo de implementação com Selenium WebDriver (uma atualização deste exemplo mencionado e que estava em .NET 5), utilizando agora recursos do .NET 6 e do C# 10 que simplificam consideravelmente a escrita de testes. Incluí aqui também um pipeline do Azure DevOps automatizando os testes, build e deployment da aplicação que estou validando.

O exemplo prático

O exemplo deste post foi demonstrado em detalhes em uma live recente do Canal .NET (a partir de 58:50), cujo conteúdo pode ser assistido gratuitamente no YouTube:

Recomendo fortemente que você assista a esse vídeo para ficar por dentro de todos os detalhes, já que este post resume tudo o que foi abordado durante a live.

O repositório com a aplicação e seus testes correspondentes já foi disponibilizado no GitHub:

https://github.com/renatogroffe/DotNet6-Site-SpecFlow-xUnit-FluentAssertions-Selenium-Chrome_ConversorDistancias

A aplicação que será submetida a testes converte distâncias em milhas para o valor equivalente em quilômetros, estando inicialmente com um problema de arredondamento (parti do pressuposto que seriam utilizadas 3 casas decimais para se arredondar o resultado da conversão):

Aplicação com problemas de arredondamento

Este exemplo tomou como base o framework SpecFlow (em conjunto com xUnit e Fluent Assertions) para a implementação dos testes. Para saber mais sobre as principais novidades no uso do SpecFlow com .NET 6 e o Visual Studio recomendo que você acesse o artigo:

.NET 6 + SpecFlow: novidades na criação de projetos de testes

Foi necessário ainda adicionar o package Selenium.WebDriver ao projeto:

Na próxima imagem podemos observar o resultado da execução dos testes (com falhas) a partir do Visual Studio 2022:

A seguir temos a user story (um arquivo .feature) que serviu de base para a elaboração dos testes:

E na próxima listagem o conjunto de construções (Step Definitions) que mapeiam as sentenças da user story para instruções validando as funcionalidades do site:

A classe ConvDistanciasPageObject é uma implementação do padrão Page Object (catalogado por Martin Fowler), encapsulando as interações do Selenium WebDriver com a página de conversão de distâncias a partir do Google Chrome (via tipo ChromeDriver):

Esta classe faz uso ainda extensões definidas no tipo estático WebDriverExtensions:

O código do pipeline do Azure DevOps automatizando testes, build e deployment (com o push de uma imagem Docker no Azure Container Registry e publicação da aplicação no Azure Kubernetes Service) também está no GitHub:

https://github.com/renatogroffe/AzureDevOps-DotNet6-AKS-ACR-SeleniumWebDriver-Tests_ConversaoDistancias

Para efeitos de simplificação incluí na listagem a seguir apenas o stage com os testes, em que o uso do virtual environment ubuntu-latest com o Azure Pipelines traz como vantagem o fato do ChromeDriver vir pré-instalado:

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker

No responses yet