Pular para o conteĆŗdo principal

šŸ“‚ Projeto

šŸ”§ Configuração e Execução​

šŸ“‹ PrĆ©-requisitos​

āš ļø Importante: Certifique-se de que as dependĆŖncias foram instaladas no projeto raiz "qa-solar" e que o comando yarn dev foi executado antes de iniciar os testes.

Requisitos do Sistema:

  • Python 3.8+: Interpretador Python necessĆ”rio
  • Virtual Environment: Ambiente virtual isolado (recomendado)
  • Chrome/Chromium: Navegador para execução dos testes

šŸš€ Comandos DisponĆ­veis​

Configuração Inicial​

# Criar ambiente virtual
python -m venv venv

# Ativar ambiente virtual
# Linux/Mac:
source venv/bin/activate
# Windows:
venv\Scripts\activate

# Instalar dependĆŖncias
pip install -r requirements.txt

# Instalar browsers do Playwright
rfbrowser init

Execução de Testes​

Via Makefile (Recomendado)

# Executar todos os testes
make test-all

# Executar testes com tag especĆ­fica
make test-scenario TAG=login

# Executar arquivo especĆ­fico
make test-file FILE_PATH=tests/specs/login.robot

# Executar testes em paralelo
make parallel

# Limpar relatórios
make clean

# Verificar qualidade do código
make lint

# Formatar arquivos
make tidy

# Ver ajuda
make help

Via Robot Framework

# Executar todos os testes
robot --outputdir results/reports tests/specs

# Executar com tag especĆ­fica
robot --outputdir results/reports --include login tests/specs

# Executar em paralelo
pabot --processes 4 --outputdir results/reports tests/specs

# Executar com argumentos
robot --outputdir results/reports -A args.robotargs tests/specs

šŸ“‚ Estrutura do Projeto​

tests/robot/
ā”œā”€ā”€ tests/
│ ā”œā”€ā”€ specs/ # Arquivos de teste (.robot)
│ │ ā”œā”€ā”€ login.robot # Testes de autenticação
│ │ ā”œā”€ā”€ register.robot # Testes de cadastro
│ │ ā”œā”€ā”€ profile.robot # Testes de perfil
│ │ ā”œā”€ā”€ listUsers.robot # Testes de listagem
│ │ └── recoverPassword.robot # Testes de recuperação
│ ā”œā”€ā”€ resources/ # Keywords e recursos
│ │ ā”œā”€ā”€ keywords.resource # Keywords principais
│ │ ā”œā”€ā”€ loginKeywords.resource # Keywords de login
│ │ ā”œā”€ā”€ registerKeywords.resource # Keywords de cadastro
│ │ ā”œā”€ā”€ profileKeywords.resource # Keywords de perfil
│ │ ā”œā”€ā”€ listUsersKeywords.resource # Keywords de listagem
│ │ └── recoverKeywords.resource # Keywords de recuperação
│ ā”œā”€ā”€ library/ # Bibliotecas Python
│ │ ā”œā”€ā”€ CustomDataLibrary.py # Geração de dados
│ │ ā”œā”€ā”€ CustomLibrary.py # UtilitĆ”rios gerais
│ │ └── GenerateCPFLibrary.py # Geração de CPF
│ └── data/ # Dados e variĆ”veis
│ └── variables.py # VariĆ”veis globais
ā”œā”€ā”€ results/ # Relatórios e logs
│ ā”œā”€ā”€ reports/ # Relatórios HTML
│ ā”œā”€ā”€ logs/ # Logs de execução
│ └── screenshots/ # Screenshots de falhas
ā”œā”€ā”€ requirements.txt # DependĆŖncias Python
ā”œā”€ā”€ Makefile # Comandos simplificados
ā”œā”€ā”€ package.json # Metadados do projeto
ā”œā”€ā”€ args.robotargs # Argumentos do Robot
└── CHANGELOG.md # Histórico de mudanƧas

āš™ļø ConfiguraƧƵes AvanƧadas​

šŸ”§ Configuração do Robot Framework​

O projeto utiliza configuraƧƵes otimizadas para performance e legibilidade:

*** Settings ***
Documentation Suite de testes para validar funcionalidades.

Resource ../resources/keywords.resource
Resource ../resources/loginKeywords.resource

Test Setup Preparar Teste ${BASE_URL}
Test Teardown Fechar O Navegador

*** Test Cases ***
CenƔrio 1: Deveria Ser Possƭvel Fazer Login
[Documentation] Testa login com credenciais vƔlidas.
Digitar O Email Do Usuario generic@example.com
Digitar O Password Do Usuario 123456
Clicar No Botão De Entrar Na Conta
Verificar O Feedback Do Usuario Login realizado com sucesso!

🌐 VariĆ”veis de Ambiente​

# tests/data/variables.py
API_URL = "http://localhost:3001"
BASE_URL = "http://localhost:8181/"

# Credenciais
EMAIL = "generic@example.com"
PASSWORD = "123456"

# Mensagens
TOAST_MESSAGE = "Por favor, corrija os erros no formulƔrio."
INPUT_NAMES = ["fullname", "cpfcnpj", "email", "password", "password-confirmation"]
INPUT_ERRORS = ["O Nome Completo é obrigatório.", "O CPF/CNPJ é obrigatório.", ...]

šŸ”§ Configuração do Makefile​

# Diretórios e arquivos
TESTS_DIR = tests/specs
OUTPUT_DIR = results/reports
OUTPUT_DIR_BROWSER = results
PROCESSES = 4

# Comandos principais
test-all: clean
@echo "Executando todos os testes com Robot Framework..."
BROWSER_OUTPUTDIR=$(OUTPUT_DIR_BROWSER)/screenshots robot --outputdir $(OUTPUT_DIR) $(TESTS_DIR)

parallel: clean
@echo "Executando testes em paralelo com Pabot..."
BROWSER_OUTPUTDIR=$(OUTPUT_DIR_BROWSER)/screenshots pabot --processes $(PROCESSES) --outputdir $(OUTPUT_DIR) $(TESTS_DIR)

lint:
@echo "Verificando a qualidade do código com Robocop..."
robocop -ft .robot,.resource $(TESTS_DIR)

šŸ“š Keywords e Recursos​

šŸ” Keywords de Autenticação​

*** Keywords ***
Preparar Teste Com API
[Arguments] ${BASE_URL} ${route}=
Abrir O Navegador ${BASE_URL}
Login Via API
Navegar Para A Rota ${route}

Login Via API
${payload}= Evaluate {"email": "${EMAIL}", "password": "${PASSWORD}"} json
${response}= POST ${API_URL}/auth/login json=${payload}
Should Be Equal As Numbers ${response.status_code} 200

${responseJson}= Evaluate ${response.text} json
${token}= Set Variable ${responseJson["token"]}

LocalStorage Set Item user-token ${token}

šŸŽ² Keywords de Geração de Dados​

*** Keywords ***
Preencher Todos Os Campos
${cpf}= Generate Valid Cpf
${fullName}= Generate Full Name
${email}= Generate Email
${phone}= Generate Phone

Fill Text css=[data-testid="input-fullname"] ${fullName}
Fill Text css=[data-testid="input-socialname"] Nome Social
Fill Text css=[data-testid="input-document"] ${cpf}
Fill Text css=[data-testid="input-phone"] ${phone}
Fill Text css=[data-testid="input-email"] ${email}
Fill Text css=[data-testid="input-password"] 123456
Fill Text css=[data-testid="input-password-confirmation"] 123456

🧪 PadrĆ£o de Testes​

*** Test Cases ***
CenƔrio 1: Deveria Ser Possƭvel Fazer Login Com Credenciais VƔlidas
[Documentation] Testa login com credenciais corretas.
[Tags] login smoke
Digitar O Email Do Usuario generic@example.com
Digitar O Password Do Usuario 123456
Clicar No Botão De Entrar Na Conta
Verificar O Feedback Do Usuario Login realizado com sucesso!

šŸ› ļø Bibliotecas Customizadas​

šŸŽ² CustomDataLibrary​

from faker import Faker

class CustomDataLibrary:
def __init__(self):
self.faker = Faker("pt_BR")

def generate_full_name(self):
return self.faker.name()

def generate_first_name(self):
return self.faker.first_name()

def generate_email(self):
return self.faker.email()

def generate_phone(self):
return '(12) 9 8888-7777'

šŸŽÆ GenerateCPFLibrary​

import random

class GenerateCPFLibrary:
def generate_valid_cpf(self):
"""Gera um CPF vÔlido aleatório."""
def calculate_digit(cpf):
weights = range(len(cpf) + 1, 1, -1)
total = sum(int(digit) * weight for digit, weight in zip(cpf, weights))
remainder = total % 11
return str(11 - remainder if remainder > 1 else 0)

cpf_base = [random.randint(0, 9) for _ in range(9)]
cpf_base.append(int(calculate_digit(cpf_base)))
cpf_base.append(int(calculate_digit(cpf_base)))
return "".join(map(str, cpf_base))

šŸ”§ CustomLibrary​

from urllib.parse import urlparse

class CustomLibrary:
def __init__(self):
pass

def parse_url(self, url):
"""Analisa uma URL e retorna os componentes como um objeto ParseResult."""
parsed_url = urlparse(url)
return parsed_url

def get_from_list(self, lst, index):
"""Retorna o elemento da lista no Ć­ndice especificado."""
return lst[index]

def get_list_length(self, lst):
"""Retorna o comprimento da lista."""
return len(lst)

šŸ› ļø DependĆŖncias Principais​

Produção​

  • Robot Framework: 7.1.1 - Framework de automação
  • Browser Library: 19.0.1 - Automação de navegadores com Playwright
  • Requests Library: 0.9.7 - Testes de API
  • Faker: 33.1.0 - Geração de dados fictĆ­cios
  • Python-dotenv: 1.0.1 - Gerenciamento de variĆ”veis de ambiente

Desenvolvimento​

  • Pabot: 2.18.0 - Execução paralela de testes
  • Robocop: 5.5.0 - Linting e qualidade de código
  • Robotidy: 4.14.0 - Formatação de arquivos .robot
  • Assertion Engine: 3.0.3 - Engine de assertions
  • Stacktrace: 0.4.1 - Rastreamento de stack traces

šŸš€ OtimizaƧƵes de Performance​

⚔ ConfiguraƧƵes de Paralelização​

  • Pabot: Execução paralela com 4 processos
  • Browser Isolation: Cada processo executa em navegador isolado
  • Resource Sharing: Compartilhamento otimizado de recursos
  • Result Aggregation: Consolidação automĆ”tica de resultados

šŸ”§ ConfiguraƧƵes do Browser​

  • Headless Mode: Suporte para execução sem interface grĆ”fica
  • Screenshot: Capturas automĆ”ticas em caso de falha
  • Video Recording: Gravação de vĆ­deos para debugging
  • Network Interception: Interceptação de requisiƧƵes de rede