Usa el emulador de extensiones para evaluar extensiones

Antes de usar el emulador de Extensions con tu app, asegúrate de comprender el flujo de trabajo general de Firebase Local Emulator Suite, y de instalar y configurar Local Emulator Suite, y revisa los comandos de su CLI.

En esta guía, también se supone que conoces Firebase Extensions y cómo usarlas en tus apps de Firebase.

¿Qué puedo hacer con el emulador de Extensions?

Con el emulador de Extensions, puedes instalar y administrar extensiones en un entorno local seguro y comprender mejor sus capacidades, a la vez que minimizas los costos de facturación. El emulador ejecuta las funciones de tu extensión de forma local, incluidas las siguientes: funciones activadas por eventos en segundo plano con los emuladores de Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication y Pub/Sub, y funciones activadas por Eventarc implementadas en Cloud Functions v2.

Elige un proyecto de Firebase

El Firebase Local Emulator Suite emula los productos para un solo proyecto de Firebase.

Para seleccionar el proyecto que quieres usar, ejecuta firebase use en la CLI en tu directorio de trabajo antes de iniciar los emuladores. También puedes pasar la marca --project a cada comando del emulador.

El Local Emulator Suite admite la emulación de proyectos reales de Firebase y de demostración.

Tipo de proyecto Características Uso con emuladores
Real

Los proyectos de Firebase reales son aquellos que creaste y configuraste (probablemente usando Firebase console).

Los proyectos reales tienen recursos activos, como instancias de bases de datos, buckets de almacenamiento, funciones o cualquier otro recurso que hayas configurado para ese proyecto de Firebase.

Cuando trabajas con proyectos reales de Firebase, puedes ejecutar emuladores para cualquiera de los productos compatibles o todos ellos.

Si se trata de un producto que no estás emulando, tus apps y código interactuarán con los recursos activos (instancias de bases de datos, bucket de almacenamiento, función, etcétera).

Demostración

Los proyectos de demostración de Firebase no tienen una configuración real de Firebase ni recursos activos. Por lo general, se accede a estos proyectos mediante codelabs o algún otro instructivo.

Los IDs de los proyectos de demostración tienen el prefijo demo-.

Cuando trabajas con proyectos de demostración de Firebase, tus apps y código interactúan solo con emuladores. Si tu app intenta interactuar con un recurso para el cual no se está ejecutando un emulador, ese código fallará.

Te recomendamos que uses proyectos de demostración siempre que sea posible. Estos son algunos de los beneficios:

  • Configuración más sencilla, ya que puedes ejecutar los emuladores sin crear un proyecto de Firebase
  • Mayor seguridad, ya que, si tu código invoca de forma accidental recursos no emulados (de producción), no hay posibilidad de que se modifiquen los datos, el uso ni la facturación
  • Mejor soporte sin conexión, ya que no es necesario acceder a Internet para descargar la configuración del SDK

Instala y evalúa una extensión

Es muy fácil usar el emulador de Extensions para evaluar si una extensión satisface tus necesidades.

El siguiente flujo de trabajo es válido para todas las extensiones. Supongamos que te interesa la extensión de activador de correo electrónico (firestore-send-email). Cuando se ejecute en emuladores locales, el activador de correo electrónico usará automáticamente los emuladores de Cloud Firestore y Cloud Functions.

Para evaluar una extensión de forma local, sigue estos pasos:

  1. Agrega la extensión al manifiesto de extensiones locales. Un manifiesto de extensiones es una lista de instancias de extensiones con su configuración.

    firebase ext:install --local firebase/firestore-send-email

    Si ejecutas el comando anterior, se te pedirá que configures la versión más reciente de la extensión firebase/firestore-send-email y que guardes la configuración en el manifiesto, pero esta no se implementará en tu proyecto. Si quieres obtener más información, consulta Administra la configuración de extensiones con manifiestos.

  2. Inicia el Local Emulator Suite como lo harías normalmente.

    firebase emulators:start

Ahora, con la instancia de extensión firestore-send-email incluida en tu manifiesto, el Local Emulator Suite descargará el código fuente de la extensión en ~/.cache/firebase/extensions. Una vez que las fuentes se hayan descargado, se iniciará el Local Emulator Suite y podrás activar cualquiera de las funciones activadas en segundo plano de la extensión y conectar tu app al Local Emulator Suite para probar su integración en tu app.

Puedes usar la Emulator Suite UI para agregar datos a la colección de documentos del correo electrónico y configurar otros recursos de backend, según lo requiera la extensión de correo electrónico activador.

Otra opción para los entornos de pruebas no interactivas, como los flujos de trabajo de integración continua, es escribir una secuencia de comandos de prueba para evaluar la extensión. Entre otros pasos, esta acción propaga los datos y las funciones de activación necesarias de Cloud Firestore. Luego, invocarás el elemento Local Emulator Suite. para ejecutar la secuencia de comandos de prueba:

firebase emulators:exec my-test.sh

Diferencias entre las pruebas con el emulador de Extensions y la producción

El emulador de Extensions te permite probar las extensiones de una manera muy similar a la experiencia de producción. Sin embargo, existen algunas diferencias en el comportamiento durante la producción.

Cloud IAM

Firebase Emulator Suite no intenta replicar ni respetar ningún comportamiento relacionado con la IAM para la ejecución. Los emuladores cumplen con las reglas de seguridad de Firebase proporcionadas, pero, en situaciones en las que normalmente se usaría la IAM (por ejemplo, para configurar Cloud Functions que invoquen la cuenta de servicio y los permisos), el emulador no se puede configurar y utiliza la cuenta con disponibilidad global en tu máquina de desarrollador, de manera similar a ejecutar una secuencia de comandos local directamente.

Limitación del tipo de activación

Actualmente, el Firebase Local Emulator Suite solo admite funciones activadas por solicitudes HTTP, activadores de eventos personalizados de Eventarc para extensiones y funciones activadas por eventos en segundo plano para Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication y Pub/Sub. Para evaluar las extensiones que usan otros tipos de funciones activadas, debes instalar la extensión en un proyecto de prueba de Firebase.

Próximos pasos