Files
nala 250ac35fd1
tests / ci (push) Canceled after 0s
first commit
2026-09-28 10:01:09 +02:00

5.6 KiB
Raw Permalink Blame History

Validação da extensão — 28/09/2026

Verificações executadas

  • Em 28/09, protecção de versões das fichas territoriais aplicada localmente. Backup storage/app/private/portfolio-version-backup-20260928-011346/ restaurado e conferido em 93 tabelas; após migration, apenas migrations mudou de 34 para 35. As 29 fichas publicadas foram preservadas com version_no=1. A suite inclui recusa de gravação/publicação obsoletas com HTTP 409. O teste de navegador anteriormente registado não foi repetido para este novo controlo; cobertura desta alteração por testes HTTP, TypeScript, lint e build.

  • Suite PHP completa: 138 testes, 1.463 verificações aprovadas, em PostgreSQL/PostGIS isolado na porta 55441, base portal_services_test.

  • PHPStan completo e verificação TypeScript aprovados; análise focada repetida após as alterações finais. Pint aplicado aos novos ficheiros PHP. Lint dos componentes alterados executado; corrigido tratamento de falha da cópia de ligação.

  • Build Vite aprovado. As verificações de PHP não correram durante a substituição do manifesto do build.

  • O contrato OpenAPI descreve 27 operações, correspondentes às 25 rotas registadas (referências e empresas com ID opcional correspondem a criar e editar). JSON, referências internas e cobertura de métodos/rotas conferidos; isto não substitui validação completa por uma ferramenta OpenAPI externa.

  • Backup anterior à migration restaurado e conferido em 76 tabelas. Depois da migration: 88 tabelas; 114 opções semeadas, restantes tabelas novas vazias. Contagens de negócio anteriores preservadas; migrations passou de 32 a 33 e sessions de 1 a 2. Manifesto e reconciliação permanecem no directório privado do backup.

  • Segundo backup restaurado e conferido nas 88 tabelas antes da extensão de perfil/conversa; após a segunda migration, 93 tabelas e apenas alteração da contagem de migrations (33 → 34).

  • Latência local: cinco pedidos HTTP sequenciais por endpoint, medianas de 170,67 ms na pesquisa, 173,39 ms nas referências e 160,86 ms no mapa. Servidor PHP de desenvolvimento, pequeno cadastro local, sem concorrência; não é SLA nem teste de carga.

Navegador

Microsoft Edge headless via DevTools Protocol, 390×844 e 1440×1000. Evidência pública: onze páginas, breadcrumbs, apoio fixo, ausência de transbordo horizontal; cenário aritmético do simulador confirmado. Nenhum erro JavaScript observado.

Evidência autenticada: dezoito observações de ecrãs/etapas, com contas e oportunidade exclusivamente sintéticas na base isolada. Foram exercitados:

  1. Educação e ficha pública.
  2. Login, área pessoal e criação de rascunho.
  3. Identificação, participação, objectivo e necessidade educativa com quantidade/unidade.
  4. Gravação preservando a etapa actual.
  5. Upload privado pela API multipart, com versão incrementada.
  6. Revisão, consentimento, submissão e protocolo visível na área pessoal.
  7. Reenvio idempotente com o mesmo protocolo.
  8. Login de gestor, referências, edição de contexto e retirada da publicação.
  9. Leitura do pedido pelo gestor e recusa 404 a outro investidor.
  10. Perfil e empresa declarada, pré-preenchimento da manifestação, conversa investidor/apoio, consulta de versão histórica e marcação de notificação como lida.
  11. Recusa 419 de pedido cross-site com sessão mas sem token. O Laravel 13 aceita pedidos same-origin pelo cabeçalho de origem validado; esse comportamento foi conferido no middleware instalado, não confundido com desactivação da protecção.

Não foram detectados campos visíveis sem rótulo, transbordo horizontal ou erros JavaScript nesses ecrãs. A primeira tentativa usou uma porta ocupada por outro servidor PHP sem driver PostgreSQL; o teste foi repetido com servidor dedicado na porta 18027. A fixture de QA foi corrigida para marcar explicitamente o email verificado, sem alterar utilizadores operacionais.

O upload foi exercitado pela API a partir da sessão real do navegador; o selector nativo de ficheiros não foi automatizado. As verificações de autorizações complementam os testes HTTP, que cobrem adulteração de checksum, opções de grupo errado, ausência de consentimento, retirada de publicação, conflito de versão, relações territoriais cumulativas, CSV e isolamento.

Repetição automatizada

Com uma base descartável terminada em _test, PostgreSQL/PostGIS e variáveis DB_* explícitas:

php vendor/bin/phpunit --filter 'InvestmentUnification|InvestmentPortfolio|PublicPortalNavigation' --do-not-cache-result
php vendor/bin/phpunit --filter InvestmentWorkspace --do-not-cache-result
php vendor/bin/phpunit --do-not-cache-result
php vendor/bin/phpstan analyse --no-progress --memory-limit=512M
npm run types:check
npm run build

RefreshDatabase recria tabelas no ambiente de teste. Não executar esses comandos de teste contra a base operacional. Em PowerShell com restrições a scripts, usar npm.cmd.

Limites

Os ensaios não demonstram WCAG 2.2 AA integral, experiência com leitor de ecrã, carga concorrente, desempenho de produção, entrega de notificações ou SuiteCRM externo, nem integridade da base remota ainda inacessível. O mapa foi validado com pontos sintéticos nos testes PostGIS e estado vazio quando não há coordenadas públicas. Não foi desenhada cartografia fictícia para preencher a interface.

A aprovação de requisitos pelo proprietário foi respeitada. Homologação com participantes, formação, deploy remoto e monitorização no destino continuam por executar; não são etapas que se possam declarar aprovadas apenas com esta evidência local.