Cansado de testar manual? Vamos automatizar com Playwright!

Python Norte 2023

Quem sou eu?

Vanilton Pinheiro

Analista de Sistemas

Cadastre-se para vagas

# O que vamos precisar

Ferramentas

  1. Python 3.7+
  2. IDE PyCharm Community ou Professional
  3. SO:
    1. Windows
    2. Linux
    3. MacOS

1

Conceitos de teste de software

2

Conceitos de Playwright

3

Hands On de prática de teste com Playwright + Pytest

4

Considerações Finais

# O que veremos

Automatizar? Mas por quê?

# Conceitos de teste de software

Lento

Rápido

$$$

$

# de testes

  • Automação de API
  • Contrato ou Mock
  • Unitário
  • Automação Funcional

Legal parente, mas como faz?

  1. Obrigatoriamente implementado através de alguma ferramenta que simule as operações do usuário.
  2. Deve-se estruturar o teste verificando o resultado esperado com o obtido.
# Conceitos de teste de software
# Conceitos de teste de software

O MVP para automatizar

1. Navegar

  • Abrir um navegador
  • Acessar uma página web
  • Voltar uma página
  • Capturar texto da página
  • Ler uma URL
  • Ler título de uma página

3. Capturar

  • Clicar em botões, links e outros elementos
  • Preencher campos
  • Selecionar elementos

2. Interagir

4. Esperar

  • Aguardar a exibição de elementos

Playwright - Arquitetura

# Conceitos de Playwright
# Conceitos de Playwright

Arquitetura do Playwright 

# Conceitos de Playwright

Arquitetura do Playwright 

Teste

HTTP Request

Web Socket (TCP)

Abrir o navegador

Clicar no elemento

Comandos

Mão na massa parente!

# Instalando com plugin Pytest
pip install pytest-playwright

# Atualizando versão instalada para mais atual
pip install -U pytest-playwright

# Instalando navegadores
playwright install

# Mão na Massa 

O MVP para automatizar

1. Navegar

  • Abrir um navegador
  • Acessar uma página web
  • Voltar uma página
  • Capturar texto da página
  • Ler uma URL
  • Ler título de uma página

3. Capturar

  • Clicar em botões, links e outros elementos
  • Preencher campos
  • Selecionar elementos

2. Interagir

4. Esperar

  • Aguardar a exibição de elementos
# Mão na Massa 

Vamos praticar via CLI

#Sigla de navegadores
# cr -> chromium, ff -> firefox, wk -> webkit

# Exemplos de uso via CLI
playwright --help # Opções do executor Playwright
playwright open -b cr https://vanilton.net # Abrir navegador chrome em um site
playwright open --help # Opções do comando open 
playwright pdf --timeout 50000 https://google.com meu_pdf.pdf 

# Gerar PDF da página
playwright screenshot --timeout 30000  http://vanilton.net ss_full.png
# Gerar imagem PNG da página com um determinado tamanho de tela
playwright screenshot --timeout 30000 --viewport-size "720, 1280" https://vanilton.net ss_portrait.png
# Gravar passos de teste
playwright codegen https://vanilton.net --save-trace trace.zip
# Abrir um trace gravado
playwright show-trace trace.zip 
# Mão na Massa 

Vamos praticar via Interactive mode ou REPL - Read-Eval-Print Loop

# Mão na Massa 

>>> from playwright.sync_api import sync_playwright
>>> playwright = sync_playwright().start()
>>> browser = playwright.chromium.launch(headless=False)
>>> page = browser.new_page()

Vamos praticar via Script

# Mão na Massa 

from playwright.sync_api import Page

def test_basic_test(page: Page):
  # ...
# Mão na Massa 

Nossa missão

  • Vamos acessar a aplicação todos, que nada mais é que uma lista de atividades a serem feitas com o status completado ou ativas. A aplicação permite além de inserir tarefas obviamente, realizar remoção e edição das tarefas com clique duplo. 
  1. Acesse: https://vanilton.net/web-test/todos/
  2. Insira 3 tarefas
  3. Complete uma das tarefas adicionadas
  4. Acesse a lista de tarefas completadas
  5. Verifique a tarefa na lista através da expect:
from playwright.sync_api import sync_playwright, expect
..
..
expect(locator).to_be_visible()

Considerações Finais

# Considerações 

08/2022

06/2023

Considerações Finais

# Considerações 

  • Ótima documentação
  • Atualização constante
  • Facilidade na configuração
  • Opções de Debug 
  • Record and Playback
  • Várias opções de localizadores
  • Integração com Pytest (fixtures)

vanilton18@gmail.com

Vanilton Pinheiro

Siga-me! 

Obrigado!

Python-Norte-2023

By Vanilton Pinheiro

Python-Norte-2023

Cansado de testar manual? Vamos automatizar com Playwright!

  • 37