Skip to content

ci: fundação Android - testes, CI e matriz de paridade - #4

Merged
Renato1909 merged 5 commits into
mainfrom
codex/fundacao-android-ci
Sep 20, 2026
Merged

Renato1909 merged 5 commits into
mainfrom
codex/fundacao-android-ci

Conversation

@Renato1909

Copy link
Copy Markdown
Owner

Resumo

Executa a Fase 1 do docs/ROADMAP.md e prepara a base segura para a integração futura com a plataforma LensClick.

Alterações principais

  • Sem senha no Room: a migração 2→3 recria a tabela users sem a coluna passwordHash (preservando perfis e índice único de e-mail); os hashes SHA-256 de demonstração passam a viver apenas em memória no processo (ConcurrentHashMap no repositório) e desaparecem ao reiniciar o app. Room agora exporta o schema para app/schemas/.
  • Testes úteis no lugar dos exemplos: 12 testes JVM (LensClickRepositoryTest — 7 casos de seed, cadastro, duplicidade e orçamentos; LensClickViewModelTest — 5 casos de sessão/estado) com FakeLensClickDao em memória, e 1 teste instrumentado (LensClickMigrationTest) que valida com MigrationTestHelper que a migração 2→3 descarta a coluna de senha.
  • CI Android (.github/workflows/android.yml): job de build debug + lint + testes JVM + compilação de androidTest (Ubuntu 24.04, JDK 21 Temurin, SDK 36.1) e jobs instrumentados em emuladores API 24 e 36. Actions fixadas por SHA, permissão somente leitura, sem segredos.
  • Documentação: docs/AMBIENTE_ANDROID.md (diagnóstico do ambiente, requisitos exatos e comandos) e docs/MATRIZ_PARIDADE.md (paridade app × web/API auditada no commit c3358c2 da plataforma, classificando cada capacidade como obrigatória/equivalente/web-only/adiada).
  • Arquitetura mínima: LensClickViewModel recebe o repositório por injeção via Factory (testável em JVM), e LensClickApp passa a usar essa factory.

Validação

  • Estes checks rodam neste PR via CI: assembleDebug, testDebugUnitTest, lintDebug, assembleDebugAndroidTest e connectedDebugAndroidTest (API 24 e 36).

Limitação do ambiente local

A máquina de desenvolvimento não possui Android SDK, ADB ou emulador (ANDROID_HOME/sdk.dir ausentes); o build local falha em SDK location not found antes de compilar. Nada foi instalado sem autorização. Diagnóstico completo e instruções em docs/AMBIENTE_ANDROID.md.

Decisões pendentes do mantenedor

  • applicationId definitivo (atual com.example.lensclickapp, provisório);
  • contrato móvel de autenticação revogável (Gate C — bloqueio antes de qualquer conexão com o backend);
  • política de papéis (fotógrafo também contratando) e destino da UX de orçamentos/propostas, que não existe na API atual;
  • marcar os checks deste workflow como obrigatórios na proteção da main.

Nenhuma conexão com produção, autenticação real, publicação ou credencial foi criada nesta fase.

- Remove passwordHash do Room (migracao 2->3, exportSchema) e mantem
  hashes de demonstracao apenas em memoria no processo
- Substitui testes de exemplo por base util: 12 testes JVM
  (repositorio e ViewModel com DAO fake) e teste instrumentado de
  migracao Room que garante a remocao da coluna de senha
- Injeta o repositorio no LensClickViewModel via Factory testavel
- Adiciona CI GitHub Actions: build debug, lint, testes JVM e
  instrumentados em emuladores API 24/36, actions fixadas por SHA
- Documenta diagnostico do ambiente local (docs/AMBIENTE_ANDROID.md)
  e a matriz de paridade app x web/API (docs/MATRIZ_PARIDADE.md)
- Atualiza HANDOFF e ROADMAP com o estado efetivo da Fase 1
Os runners ubuntu-24.04 atuais nao trazem sdkmanager no PATH; o job
falhava com 'sdkmanager: command not found'. Usa
android-actions/setup-android v4.0.4 fixada por SHA antes do
sdkmanager.
- Exporta app/schemas como assets do androidTest para o
  MigrationTestHelper localizar os JSONs de schema
- Cobre a migracao 2->3 diretamente: o schema v1 nunca foi exportado
  (exportSchema=false), entao nao ha 1.json para createDatabase(1)
- createDatabase(2) recria o schema v2 exato a partir do JSON
  exportado; a validacao contra o 3.json ocorre em runMigrationsAndValidate
- Versiona app/schemas (3.json gerado pelo KSP; 2.json reconstruido
  a partir do 3.json, pois v1/v2 nunca tiveram exportSchema ativo)
- androidTest assets.srcDir aponta para app/schemas, permitindo ao
  MigrationTestHelper localizar os JSONs no emulador
O MigrationTestHelper do room-testing 2.8.5 quebra no emulador com
AbstractMethodError de kotlinx.serialization ao desserializar o bundle
de schema. Substitui por criacao direta do banco v2 e execucao real da
MIGRATION_2_3 via SupportSQLiteOpenHelper, validando a remocao da
coluna de senha. Remove a dependencia room-testing e o assets.srcDir,
e descarta o 2.json reconstruido (desnecessario sem o helper).
@Renato1909
Renato1909 merged commit fbbd934 into main Sep 20, 2026
3 checks passed
@Renato1909
Renato1909 deleted the codex/fundacao-android-ci branch September 20, 2026 02:13
Renato1909 added a commit that referenced this pull request Sep 20, 2026
@Renato1909 Renato1909 changed the title ci: fundacao Android - testes, CI e matriz de paridade ci: fundação Android - testes, CI e matriz de paridade Sep 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant