Utilice el emulador de extensiones para evaluar extensiones

Antes de usar el emulador de Extensions con su aplicación, asegúrese de comprender el flujo de trabajo general de Firebase Local Emulator Suite , de instalar y configurar Local Emulator Suite y de revisar sus comandos CLI .

Esta guía también supone que está familiarizado con las extensiones de Firebase y cómo usarlas en sus aplicaciones de Firebase .

¿Qué puedo hacer con el emulador de Extensiones?

Con el emulador de Extensions, puede instalar y administrar extensiones en un entorno local seguro y comprender mejor sus capacidades mientras minimiza los costos de facturación. El emulador ejecuta las funciones de su extensión localmente, incluidas funciones activadas por eventos en segundo plano utilizando los emuladores para Cloud Firestore, Realtime Database, Cloud Storage para Firebase, Autenticación y Pub/Sub, y funciones activadas por Eventarc implementadas en Cloud Functions v2.

Elige un proyecto de Firebase

Firebase Local Emulator Suite emula productos para un único proyecto de Firebase.

Para seleccionar el proyecto a usar, antes de iniciar los emuladores, en la CLI ejecute firebase use en su directorio de trabajo. O puede pasar el indicador --project a cada comando del emulador.

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

Tipo de proyecto Características Usar con emuladores
Real

Un proyecto real de Firebase es uno que usted creó y configuró (muy probablemente a través de la consola de Firebase).

Los proyectos reales tienen recursos activos, como instancias de bases de datos, depósitos de almacenamiento, funciones o cualquier otro recurso que configure para ese proyecto de Firebase.

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

Para cualquier producto que no esté emulando, sus aplicaciones y código interactuarán con el recurso activo (instancia de base de datos, depósito de almacenamiento, función, etc.).

Manifestación

Un proyecto de demostración de Firebase no tiene una configuración real de Firebase ni recursos activos. Por lo general, se accede a estos proyectos a través de codelabs u otros tutoriales.

Los ID de proyecto para proyectos de demostración tienen el prefijo demo- .

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

Le recomendamos que utilice proyectos de demostración siempre que sea posible. Beneficios incluidos:

  • Configuración más sencilla, ya que puedes ejecutar los emuladores sin tener que crear un proyecto de Firebase.
  • Mayor seguridad, ya que si su código invoca accidentalmente recursos (de producción) no emulados, no hay posibilidad de cambio de datos, uso y facturación.
  • Mejor soporte fuera de línea, ya que no es necesario acceder a Internet para descargar la configuración del SDK.

Instalar y evaluar una extensión

Usar el emulador de Extensiones para evaluar si una extensión satisface sus necesidades es sencillo.

Supongamos que está interesado en la extensión Trigger Email ( firestore-send-email ), aunque el siguiente flujo de trabajo cubre cualquier extensión. Cuando se ejecuta con emuladores locales, Trigger Email utilizará automáticamente los emuladores de Cloud Firestore y Cloud Functions.

Para evaluar una extensión localmente:

  1. Agregue la extensión al manifiesto de extensiones locales. Un manifiesto de extensiones es una lista de instancias de extensión y sus configuraciones.

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

    Al ejecutar el comando anterior, se le pedirá que configure la última versión de la extensión firebase/firestore-send-email y guarde la configuración en el manifiesto, pero no implementará la configuración en su proyecto. Para obtener más información sobre esto, consulte Administrar la configuración de extensiones con manifiestos.

  2. Inicie Local Emulator Suite como lo haría normalmente.

    firebase emulators:start

Ahora, utilizando la instancia de extensión firestore-send-email que figura en su manifiesto, Local Emulator Suite descargará el código fuente de esa extensión a ~/.cache/firebase/extensions . Una vez que se hayan descargado los archivos, se iniciará Local Emulator Suite y podrá activar cualquiera de las funciones activadas en segundo plano de la extensión y conectar su aplicación a Local Emulator Suite para probar su integración con su aplicación.

Puede utilizar la interfaz de usuario de Emulator Suite para agregar datos a la colección de documentos de correo electrónico y configurar otros recursos de backend, según lo requiera la extensión Trigger Email.

Como alternativa, para entornos de prueba no interactivos, como flujos de trabajo de integración continua, puedes escribir un script de prueba para evaluar la extensión que, entre otros pasos, completa los datos necesarios de Cloud Firestore y activa funciones. Luego invocaría Local Emulator Suite para ejecutar su script de prueba:

firebase emulators:exec my-test.sh

En qué se diferencian las pruebas con el emulador de Extensions de la producción

El emulador de Extensiones le permite probar extensiones de una manera que se asemeja mucho a la experiencia de producción. Sin embargo, existen algunas diferencias con el comportamiento de producción.

Gestión de identidades y accesos en la nube

Firebase Emulator Suite no intenta replicar ni respetar ningún comportamiento relacionado con IAM para su ejecución. Los emuladores cumplen con las reglas de seguridad de Firebase proporcionadas, pero en situaciones en las que normalmente se usaría IAM, por ejemplo, para configurar Cloud Functions que invocan la cuenta de servicio y, por lo tanto, los permisos, el emulador no es configurable y usará la cuenta disponible globalmente en su máquina de desarrollador. similar a ejecutar un script local directamente.

Limitación del tipo de disparo

Actualmente, 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 para Firebase, Authentication y Pub/Sub. Para evaluar extensiones que usan otros tipos de funciones activadas, debes instalar tu extensión en un proyecto de prueba de Firebase.

¿Qué sigue?