O ponto da IA com testes primeiro é exato. Quando você escreve o teste antes, está especificando o contrato. A IA vira só um gerador de implementação que tem que satisfazer a spec, não inventar comportamento. Funciona bem na prática.
Sobre widgets no Flutter, concordo totalmente. Testar cor e tamanho é testar detalhe de CSS, basicamente. Muda constantemente e não representa comportamento real. O fluxo que importa é: botão clicou, página navegou, dado apareceu. Isso o e2e pega sem criar gargalo de manutenção.
A separação que você fez é o setup que faz sentido: unit para regras de negócio, e2e para fluxos visuais, interfaces para isolar APIs externas. Chega no mesmo lugar que o TDD prega, mas sem a rigidez de aplicar em tudo.