diff --git a/README.md b/README.md index 796fe1f..46edabe 100644 --- a/README.md +++ b/README.md @@ -145,7 +145,7 @@ Autenticação: `POST /auth` com `{ "username": "admin", "password": "password12 - Relatório HTML automatizado a cada execução (`reports/report.html`, via `pytest-html`), com a versão da `master` publicada em [thomastds.github.io/qa-api-python](https://thomastds.github.io/qa-api-python/) via GitHub Pages. - Cobertura de código (`pytest-cov`) de `api/` e `models/` em cada execução, acompanhada no [Codecov](https://codecov.io/gh/ThomasTDS/qa-api-python). - Limpeza automática: a fixture `context` remove o booking criado no cenário (via token próprio de limpeza) ao final de cada teste, evitando acúmulo de dados na API pública. -- Retry automático (`pytest-rerunfailures`, `--reruns 1`): um cenário que falha roda uma segunda vez antes de ser reportado como falha, amortecendo instabilidade transitória da API pública de demonstração. +- Retry automático só para falhas de rede (`pytest-rerunfailures`, com `--reruns 1` e `only_rerun` no `pyproject.toml`): um teste que falha por erro de conexão ou timeout roda uma segunda vez, amortecendo a instabilidade da API pública de demonstração. Falhas de asserção ou de schema nunca são repetidas, para que um bug intermitente não passe na segunda tentativa. - Integração contínua via GitHub Actions: os testes rodam automaticamente a cada push e pull request para `master`, em Python 3.12 e 3.13, e também diariamente às 06:00 UTC (ver [.github/workflows/tests.yml](.github/workflows/tests.yml)) para detectar quebras causadas pela própria API pública, com o relatório HTML publicado como artifact do workflow. - Dependências atualizadas automaticamente pelo Dependabot (pip e GitHub Actions, semanal — ver [.github/dependabot.yml](.github/dependabot.yml)). PRs de patch/minor com CI verde são mergeados automaticamente ([.github/workflows/dependabot-auto-merge.yml](.github/workflows/dependabot-auto-merge.yml)); bumps de major exigem revisão manual. - Auditoria de vulnerabilidades conhecidas nas dependências instaladas a cada execução do CI, via [`pip-audit`](https://github.com/pypa/pip-audit); encontrar uma vulnerabilidade quebra o build. diff --git a/pyproject.toml b/pyproject.toml index 2a7faf9..b5a30ef 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,6 +33,10 @@ include = ["api*", "models*"] [tool.pytest.ini_options] testpaths = ["steps", "tests"] addopts = "--reruns 1 --html=reports/report.html --self-contained-html --cov=api --cov=models --cov-report=term-missing --cov-report=xml:reports/coverage.xml" +# O retry só vale para falhas de rede (conexão recusada ou timeout), que são +# instabilidade da API pública. Falha de asserção ou de schema nunca é +# repetida, para que um bug intermitente não passe na segunda tentativa. +only_rerun = ["^(ConnectionError|ConnectTimeout|ReadTimeout):"] markers = [ "smoke: fluxos ponta-a-ponta mais críticos (equivalente a npm run test:smoke)", "TC-001: id do test case, ver docs/test-cases.md",