Avançar para o conteúdo principal

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

  1. Se ainda não o fez, execute yarn da raiz de monorepo para instalar dependências.

  2. 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.

  3. 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:

  1. Feche todos os apps e bloqueie o emulador (vá para bloquear a tela).
  2. Desligue o emulador
  3. Ligue e vá para configurações de emulador (... botão) -> Snapshots -> Settings
  4. Definir Auto-Save para No

Resolução de Problemas

  1. Certifique-se de ter o watchman instalado: brew install watchman
  2. É um problema de desintoxicação conhecido que o teste falhará se um emulador for renomeado.
  3. 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.