Cansado de testar manual? Vamos automatizar com Playwright!
Vanilton Pinheiro
Python Norte 2023
Quem sou eu?
Vanilton Pinheiro
Analista de Sistemas
Cadastre-se para vagas
# O que vamos precisar
Ferramentas
- Python 3.7+
- IDE PyCharm Community ou Professional
- SO:
- Windows
- Linux
- 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?
- Obrigatoriamente implementado através de alguma ferramenta que simule as operações do usuário.
- 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.
- Acesse: https://vanilton.net/web-test/todos/
- Insira 3 tarefas
- Complete uma das tarefas adicionadas
- Acesse a lista de tarefas completadas
- 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