Executar a Carteira Localmente
Como configurar a Carteira Celo localmente, completar funções básicas da carteira, e resolução de problemas comuns.
Configuração da Carteira
A aplicação usa React Native e um light node executando o celo cliente. Você necessita de instalar Java 8, o Android SDK, Yarn, e Node.js v12.x para executar a aplicação.
Para tal, siga as instruções de configuração.
(Opcional) Melhoria Gradle
Isto torna o Gradle mais rápido:
exportar GRADLE_OPTS='-Dorg.gradle.daemon=true -Dorg.gradle.parallel=true -Dorg.gradle.jvmargs="-Xmx4096m -XX:+HeapDumpOnOutOfMemoryError"'
Em execução
Se ainda não o fez, execute
yarn
da raiz de monorepo para instalar dependências.Anexe o seu dispositivo ou inicie um dispositivo emulado.
Você pode verificar se o seu dispositivo está correctamente conectado a ADB com
dispositivos abd
. Mais informação sobre a execução do aplicativo em dispositivos Android pode ser encontrada na Documentação React Native.Compilar o projeto e iniciar o bundler com
yarn run dev
Isto irá construir o aplicativo num dispositivo (físico ou emulado) e abrir um terminal com um servidor js.
Nota: Nós vimos alguns problemas ao executar o bundler de iTerm
Em depuração
Para depurar, você deve executar:
yarn run dev:show-menu
Um menu irá aparecer no aplicativo e você deve selecionar Iniciar Depuração Remota de JS
. Isso irá abrir uma nova aba em seu navegador com o registrador Native do React no console. Para obter uma imagem completa, o filtro do console deve ser definido para Todos os níveis
.
Você provavelmente vai querer abrir o menu de desenvolvimento novamente e ativar Live Reloading
e Hot Reloading
para tornar o desenvolvimento mais rápido.
(Opcional) Aplicativo de depurador nativo do React
O aplicativo de depurador nativo do React junta muito bem as ferramentas de desenvolvimento do Redux e do Chrome.
Perfil de aplicativos
Inicie o emulador e carregue o aplicativo. Em seguida execute o seguinte para iniciar react devtools.
yarn run react-devtools
Ele deve se conectar automaticamente ao aplicativo em execução, e inclui um profiler (segunda aba). Inicie o gravador com o perfil, usando o aplicativo, e parar a gravação. O gráfico de chama fornece uma visão de cada componente e subcomponente. A largura é proporcional a quanto tempo levou para carregar. Se é cinzento, não foi novamente apresentado com a alteração 'commit' ou DOM. Detalhes sobre o profiler react nativo estão aqui. O maior aspecto a procurar é o grande número de renderizações quando nenhum estado mudou. A redução de renderizações pode ser feita através de componentes puro em react ou sobrecarga do método de atualização de componente deve ser exemplo aqui.
Conectando a redes
Por padrão, temos a rede alfajores
configurada. Se você tem outras redes de teste que você quer usar com o aplicativo, você pode baixar os artefatos do contrato conforme instruções no pacote do protocolo. Depois de fazer isso, você pode executar
yarn run update-contracts --testnets=my_testnet,my_other_testnet
--testnets
deve ser uma lista de testes, separados por vírgula, cujos artefatos você tem em ../protocol/build
. update-contracts
irá copiá-los para o aplicativo móvel para uso. Evite check-ins desnecessários de artefatos contratados.
Testar
Teste de snapshot
Usamos testes de snapshot do Jest para afirmar que nenhuma alteração intencional para a árvore de componentes foi feita sem a intenção explícita do desenvolvedor. Veja um exemplo em src/components/CodeRow.test.tsx
. Se se espera que seu snapshot desvie, você pode atualizar o snapshot com a flag --updateSnapshot
ao executar o teste.
Testes de renderização superficiais
Usamos Enzyme como uma ferramenta de teste adicional. Ele permite renderização rasa, o que reduz o tempo de execução e a quantidade de fragmentos que você precisa fazer, renderizando apenas os filhos imediatos (e não os netos etc.). Além disso, você pode interagir com a árvore renderizada para afirmar as reações adequadas ao usuário interação e entrada. Veja um exemplo no src/components/CodeRow.test.tsx
ou leia mais sobre a documentação.
Testes E2E
Usamos Detox para testes E2E. Para executar os testes localmente, você deve ter o emulador adequado configurado. Instruções de instalação do emulador podem ser encontradas aqui. Por favor, certifique-se de configurar o emulador com que você gostaria de executar os testes é configurado corretamente com o nome Pixel_API_29_AOSP_x86_64
.
Por favor, defina 123456
como o código pin no emulador, já que os testes de e2e dependem disso.
Em seguida, as configurações do snapshot da VM devem ser modificadas:
- Feche todos os apps e bloqueie o emulador (vá para bloquear a tela).
- Desligue o emulador
- Ligue e vá para configurações de emulador (... botão) -> Snapshots -> Settings
- Definir Auto-Save para No
Resolução de Problemas
- Certifique-se de ter o watchman instalado:
brew install watchman
- É um problema de desintoxicação conhecido que o teste falhará se um emulador for renomeado.
- Certifique-se de que o emulador não está sendo executado antes de executar os testes.
Para informações sobre como executar e estender os testes e2e, consulte o e2e readme.
Gerando tipos de GraphQL
Estamos usando o Gerador de Código GraphQL para digitar corretamente consultas GraphQL. Se você fizer uma alteração em uma consulta, execute yarn run gen-types
para atualizar os tipos no diretório typings
.
Chaves API do Celo Wallet
Executando a App The Celo sem chaves de API
O aplicativo móvel pode ser executado sem colocar as chaves Firebase no lugar, alterando a variável env FIREBASE_ENABLED
para false no pacote móvel.
Para a configuração da Testnet, uma variável env chamada MNEMONIC
deve ser definida com uma semente para gerar chaves privadas dos validadores. Lembre-se de tornar esta seed longa o suficiente para ser protegida (20 palavras ou mais).
Por favor, mantenha suas chaves secretas - evite vinculá-las ao github e/ou à publicação de chaves para sua infraestrutura de qualquer forma.