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.