As aplicações Web tornaram-se num pilar no atual cenário tecnológico. Contamos com estas plataformas para diversas tarefas, seja para comércio eletrónico, comunicação ou para recuperação de informações. Garantir que elas funcionem de maneira contínua e confiável é uma etapa fundamental no desenvolvimento de software. É aqui que a automação e os testes entram em ação.
Neste artigo, analisaremos como é que Robot Framework, uma popular framework de automação de testes open-souce, e Playwright, uma biblioteca eficaz de automação de navegador, criam uma dupla dinâmica para testes web eficientes e para uma fácil interação com o navegador. Iremos explorar a sintaxe, os recursos, como configurar esta combinação e aprender como criar test case abrangentes para aplicações web. Quer sejas um tester experiente que procura aprimorar o seu kit de ferramentas de automação ou quer sejas um programador que busca agilizar os processos de teste, a combinação de Robot Framework com Playwright têm o potencial de reinventar os teus esforços de automação web.
Robot Framework é uma framework de automação de teste extensível e de open-source utilizada para automatizar uma ampla gama de tarefas, desde testes funcionais de aplicações web até desenvolvimento orientado a testes de aceitação (ATDD) e possui um ecossistema rico de bibliotecas, como Selenium e Playwright. Essencialmente, Robot Framework emprega uma abordagem baseada em keywords, tornando-o acessível até a indivíduos com pouca experiência em programação. Os test cases são construídos recorrendo a linhas de texto simples em formato tabular, com forte ênfase na linguagem natural e na legibilidade. A sua simplicidade permite a colaboração entre membros técnicos e não técnicos da equipa, visto que estes últimos podem ajudar nos testes mesmo que não tenham conhecimentos técnicos.
O Robot Framework incentiva práticas como testes orientados a dados e o uso de variáveis, tags e palavras-chave reutilizáveis para criar conjuntos de testes bem estruturados e escaláveis. A estrutura também possui ferramentas para gerar relatórios e registos para garantir que o processo de testes é transparente e facilmente rastreável, auxiliando na identificação e resolução de problemas. Robot Framework também está equipado com documentação abrangente na sua página oficial e permite a criação de bibliotecas personalizadas adaptadas aos requisitos específicos do projeto.
Playwright é uma biblioteca de automação do navegador desenvolvida pela Microsoft que fornece uma solução poderosa de automação entre navegadores para aplicações Web modernas, permitindo que programadores e testers interajam com páginas Web, realizem testes baseados em browser e extraiam dados com facilidade e flexibilidade. Playwright oferece suporte à automação nos principais navegadores Web, incluindo Google Chrome, Mozilla Firefox e Microsoft Edge. O que diferencia esta estrutura é a sua API unificada e consistente, que permite aos testers escrever scripts de automação de browser que funcionam perfeitamente em diferentes mecanismos do mesmo.
Um dos recursos de destaque do Playwright é sua capacidade de interagir com páginas Web de maneiras semelhantes às interações dum utilizador, como clicar em botões, preencher formulários e navegar nas páginas. Além disso, ele pode interagir com iframes, executar ações em elementos shadow DOM e gerir caixas de diálogo pop-up, fornecendo uma abordagem holística para a automação de browsers. Tal como a Robot Framework, é compatível com uma ampla variedade de linguagens de programação, como JavaScript, Python e C#. A sua documentação é abrangente e fácil de usar, tornando-a acessível a programadores e testers de diversos níveis de experiência. Possui uma comunidade ativa e atualizações frequentes para garantir que programadores e testers estejam sempre equipados com os recursos e correções mais recentes.
Antes de começarmos a desenvolver testes com Robot Framework e a sua biblioteca Playwright (Browser), é necessário que Node 18 esteja previamente instalado. A estrutura e a biblioteca podem então ser instaladas usando pip:
Após instalar a biblioteca Playwright, denominada Browser Library, esta pode ser inicializada usando:
Após a instalação, pode-se criar um ficheiro com a extensão “.robot”, usando qualquer editor de texto, como Sublime ou VSCode.
O primeiro passo ao criar uma suíte de testes com Robot Framework é definir as suas configurações na seção ***Settings***:
Library: Especifica a biblioteca utilizada no teste. Neste caso é Browser para automação do navegador.
Suite Setup: Utilizado para especificar ações que devem ser executadas antes da execução dos test cases.
Suite Teardown: Utilizado para especificar ações que devem ser executadas após a execução dos test cases.
Documentation: Descreve a finalidade do conjunto de testes.
A seção *** Test Cases *** na Robot Framework é onde os test cases individuais são definidos junto com as etapas ou ações que devem ser executadas como parte de cada test case. Esta secção é uma parte crítica de um conjunto de testes, pois descreve os cenários específicos que serão testados. Vamos ver o exemplo abaixo:
Os elementos presentes no teste são os seguintes:
Handling Assertions: Este é um nome user-friendly que descreve a finalidade do test case. Também ajuda a identificar o caso de teste quando o conjunto de testes é executado.
[Documentation]: Esta é uma secção opcional que permite fornecer informações adicionais ou uma descrição do caso de teste.
[Tags]: Tags são rótulos opcionais que podes atribuir a um caso de teste. Eles são úteis para categorizar e organizar diferentes tipos de test case.
Test Case Setting: Estas são as ações que definem as etapas do seu test case. Eles usam keywords para representar operações ou interações com o teu sistema e são fornecidos por bibliotecas (como PlaywrightLibrary para automação do navegador). Neste teste, usamos keywords como New Page, Type Text, Click e Take Screenshot.
Consulta a documentação sobre palavras-chave da biblioteca do navegador (atualmente 131), aqui.
Também podemos adotar outra abordagem para testar usando argumentos. Para tal, podemos adicionar a configuração [Arguments]. Em seguida, passamos a definir o que queremos usar como parâmetros no nosso teste, conforme se segue:
Em vez de ter os valores já definidos no teste, usamos espaços reservados nos seus lugares (por exemplo, ${username}) para tornar o teste mais flexível e reutilizável. Uma vez definidos os [Arguments] podemos criar um novo teste como uma keyword do mesmo nome do teste configurado e utilizar os valores que passamos como argumentos, como podemos ver abaixo:
A identificação de elementos HTML é um aspeto crucial da automação Web e, no contexto de Robot Framework com Playwright, envolve especificar,localizar e interagir com tais elementos numa página web. No teste anterior, foram apresentadas diversas formas de identificar estes elementos numa página web:
Exemplo: Type Text input#username ${username}
Examplo: ${result}= Get Text //td[contains(@class, ‘sales-result’)]
Exemplo: Type Secret id:password ${password}
Exemplo: Click css=.btn.btn-primary:contains(‘Submit’)
Após terem sido escritas estas duas partes, o teste pode ser executado através de um terminal com o seguinte comando:
Quer os testers ou programadores optem por usar o Playwright com Robot Framework, ou não nos seus procedimentos de teste, aqui estão algumas das práticas e dicas mais importantes a serem consideradas ao criar test suites:
Ao longo deste artigo vimos que a integração do Robot Framework com o Playwright fornece uma solução confiável para automação web eficiente e legível. A sintaxe concisa da Robot Framework, combinada com os recursos robustos do Playwright, permite testes fáceis em vários navegadores, a identificação perfeita de elementos HTML e uma sincronização eficaz. Esta integração promove a colaboração e acelera o desenvolvimento de testes automatizados confiáveis, garantindo a entrega de aplicações web de alta qualidade. Embora ambas sejam frameworks poderosas por si só, complementar os pontos fortes de cada uma delas fornece aos testers outra ferramenta útil no mundo cada vez maior de testes de software.