Ir al contenido principal

Ejecutar la billetera localmente

Cómo configurarCello Wallet localmente, completar las funciones básicas de la billetera y solucionar problemas comunes.


Configuración de la billetera

La aplicación usa React Native y un nodo ligero ejecutando el cliente celo. Necesitará instalar Java 8, el Android SDK, Yarn y Node.js v12.x para ejecutar la aplicación.

Para ello, siga las instrucciones de configuración.

(Optional) Gradle improvement

Esto hace que Gradle sea más rápido:

export GRADLE_OPTS='-Dorg.gradle.daemon=true -Dorg.gradle.parallel=true -Dorg.gradle.jvmargs="-Xmx4096m -XX:+HeapDumpOnOutOfMemoryError"'

En ejecución

  1. Si aún no lo has hecho, ejecuta yarn desde la raíz monorepo para instalar las dependencias.

  2. Adjunta tu dispositivo o inicia uno emulado.

    Puedes verificar si tu dispositivo está conectado correctamente a ADB con adb devices. Puede encontrar más información sobre cómo ejecutar la aplicación en dispositivos Android en los documentos React Native.

  3. Compile el proyecto e inicie el paquete con

    yarn run dev

    Esto construirá la aplicación en un dispositivo (físico o emulado) y abrirá un terminal con un servidor js.

    Nota: Hemos visto algunos problemas ejecutando el bundler de metro desde iTerm

Depurando

Para depurar, debe ejecutar:

yarn run dev:show-menu

Un menú aparecerá en la aplicación y deberías pulsar Iniciar depuración JS remota. Esto abrirá una nueva pestaña en tu navegador con el registrador de React Native en la consola. Para obtener una imagen completa, el filtro de la consola debe establecerse en Todos los niveles.

Probablemente quieras volver a abrir el menú de desarrollo y activar Recarga en vivo y Recarga en caliente para hacer que el desarrollo sea más rápido.

(Opcional) Aplicación depurador React Native

La aplicación depurador React Native reúne las herramientas de desarrollo de Redux y Chrome de forma agradable.

Perfilando la aplicación

Iniciar el emulador y cargar la aplicación. Luego ejecute lo siguiente para iniciar React devtools.

yarn run react-devtools

Debería conectarse automáticamente a la aplicación en ejecución, e incluye un perfil (segunda pestaña). Iniciar la grabadora con el perfil, usando la aplicación, y detener la grabación. El gráfico de llamas proporciona una vista de cada componente y subcomponente. La anchura es proporcional al tiempo que se tardó en cargar. Si es gris, no fue re-renderizado en ese "commit" o cambio DOM. Los detalles sobre el perfil nativo de react están aquí. Lo más importante a buscar es un gran número de renders cuando ningún estado ha cambiado. La reducción de los renders se puede hacer a través de componentes puros en react o sobrecargando el método de actualización del componente should ejemplo aquí.

Conectándose a las redes

Por defecto, tenemos la red alfajores configurada. Si tienes otras redes de pruebas que quieres usar con la aplicación, puedes descargar los artefactos del contrato según instrucciones en el paquete de protocolo. Una vez que lo hayas hecho, puedes ejecutar

yarn run update-contracts --testnets=my_testnet,my_other_testnet

--testnets debe ser una lista separada por comas de redes de prueba cuyos artefactos tiene bajo ../protocol/build. update-contracts los copiará a la aplicación móvil para su uso. Evite comprobaciones innecesarias de los artefactos contratados.

Probando

Prueba de instantáneas

Utilizamos Jest snapshot testing para asegurar que no se han hecho cambios intencionales en el árbol de componentes sin intención explícita del desarrollador. Ver un ejemplo en src/components/CodeRow.test.tsx. Si se espera que la instantánea se desvie, se puede actualizar la instantánea con la bandera --updateSnapshot cuando se ejecuta la prueba.

Pruebas de renderizado poco profundas

Utilizamos Enzyme como una herramienta de prueba adicional. Permite un renderizado superficial, lo que reduce el tiempo de ejecución y la cantidad de stubbing que tienes que hacer al renderizar sólo los hijos inmediatos (y no los nietos, etc.) Además, puedes interactuar con el árbol renderizado para afirmar las reacciones apropiadas a la interacción y entrada del usuario. Ver un ejemplo en src/components/CodeRow.test.tsx o lee más sobre la documentación.

Pruebas E2E

Utilizamos Detox para pruebas E2E. Para ejecutar las pruebas localmente, debe tener el emulador adecuado. Las instrucciones de instalación del emulador pueden ser encontradas aquí. Por favor, asegúrese de configurar el emulador con el que desea ejecutar las pruebas está configurado correctamente con el nombre Pixel_API_29_AOSP_x86_64.

Por favor, establezca 123456 como el código pin en el emulador, ya que las pruebas e2e se basan en eso.

A continuación, la configuración de instantánea de VM debe ser modificada:

  1. Cerrar todas las aplicaciones y bloquee el emulador (ir a la pantalla de bloqueo).
  2. Apaga el emulador
  3. Vuelve a encenderlo y ve a la configuración del emulador (... button) -> Snapshots -> Settings
  4. Establecer auto-guardar en No

Solución de problemas

  1. Asegúrate de tener el vigilante instalado: brew install watchman
  2. Es un problema de desincronización conocido que la prueba fallará si un emulador es renombrado.
  3. Asegúrese de que el emulador no se está ejecutando antes de ejecutar las pruebas.

Para obtener información sobre cómo ejecutar y extender las pruebas e2e, consulte e2e readme.

Generando tipos GraphQL

Estamos usando Generador de código GraphQL para escribir correctamente las consultas GraphQL. Si haces un cambio en una consulta, ejecuta yarn run gen-types para actualizar los tipos en el directorio typings.

Claves API de Billetera de Celo

Ejecutar la aplicación Celo sin claves API

La aplicación móvil puede ejecutarse sin poner las teclas Firebase en su lugar cambiando la variable env FIREBASE_ENABLED a falso en el paquete móvil.

Para la configuración de Testnet, una variable env llamada MNEMONIC debe establecerse con una semilla para generar claves privadas de validadores. Recuerda hacer que esta semilla sea lo suficientemente larga como para ser asegurada (20 palabras o más).

Por favor, mantenga sus claves en secreto, evite que se comprometan a github y/o a publicar claves para su infraestructura de cualquier manera.