Utiliser l'émulateur d'extensions pour évaluer les extensions

Avant d'utiliser l'émulateur d'extensions avec votre application, assurez-vous que vous comprenez le flux de travail global de Firebase Local Emulator Suite , et que vous installez et configurez Local Emulator Suite et passez en revue ses commandes CLI .

Ce guide suppose également que vous connaissez les extensions Firebase et comment les utiliser dans vos applications Firebase .

Que puis-je faire avec l'émulateur d'extensions ?

Avec l'émulateur d'extensions, vous pouvez installer et gérer des extensions dans un environnement local sûr et mieux comprendre leurs capacités tout en minimisant les coûts de facturation. L'émulateur exécute les fonctions de votre extension localement, y compris les fonctions déclenchées par des événements en arrière-plan à l'aide des émulateurs pour Cloud Firestore, Realtime Database, Cloud Storage, Authentication et Pub/Sub.

Choisissez un projet Firebase

La suite d'émulateurs locaux Firebase émule des produits pour un seul projet Firebase.

Pour sélectionner le projet à utiliser, avant de démarrer les émulateurs, dans la CLI, exécutez firebase use dans votre répertoire de travail. Ou, vous pouvez passer l'indicateur --project à chaque commande de l'émulateur.

Local Emulator Suite prend en charge l'émulation de projets Firebase réels et de projets de démonstration .

Type de projet Caractéristiques Utiliser avec des émulateurs
Réel

Un vrai projet Firebase est celui que vous avez créé et configuré (très probablement via la console Firebase).

Les projets réels ont des ressources actives, telles que des instances de base de données, des compartiments de stockage, des fonctions ou toute autre ressource que vous avez configurée pour ce projet Firebase.

Lorsque vous travaillez avec de vrais projets Firebase, vous pouvez exécuter des émulateurs pour tout ou partie des produits pris en charge.

Pour tous les produits que vous n'émulez pas, vos applications et votre code interagiront avec la ressource active (instance de base de données, compartiment de stockage, fonction, etc.).

Démo

Un projet de démonstration Firebase n'a pas de véritable configuration Firebase ni de ressources en direct. Ces projets sont généralement accessibles via des ateliers de programmation ou d'autres didacticiels.

Les ID de projet pour les projets de démonstration ont le préfixe demo- .

Lorsque vous travaillez avec des projets Firebase de démonstration, vos applications et votre code interagissent uniquement avec les émulateurs . Si votre application tente d'interagir avec une ressource pour laquelle un émulateur n'est pas en cours d'exécution, ce code échouera.

Nous vous recommandons d'utiliser des projets de démonstration dans la mesure du possible. Les avantages incluent :

  • Configuration plus facile, car vous pouvez exécuter les émulateurs sans jamais créer de projet Firebase
  • Sécurité renforcée, car si votre code invoque accidentellement des ressources non émulées (de production), il n'y a aucune chance de modification, d'utilisation et de facturation des données
  • Meilleure prise en charge hors ligne, car il n'est pas nécessaire d'accéder à Internet pour télécharger votre configuration SDK.

Installer et évaluer une extension

L'utilisation de l'émulateur d'extensions pour évaluer si une extension répond à vos besoins est simple.

Supposons que vous êtes intéressé par l' extension Trigger Email ( firestore-send-email ), bien que le flux de travail suivant couvre n'importe quelle extension. Lorsqu'il est exécuté avec des émulateurs locaux, Trigger Email utilise automatiquement les émulateurs Cloud Firestore et Cloud Functions.

Pour évaluer une extension localement :

  1. Ajoutez l'extension au manifeste des extensions locales. Un manifeste d'extensions est une liste d'instances d'extensions et de leurs configurations.

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

    L'exécution de la commande ci-dessus vous invitera à configurer la dernière version de firebase/firestore-send-email et à enregistrer la configuration dans le manifeste, mais elle ne déploiera pas la configuration dans votre projet. Pour plus d'informations à ce sujet, consultez Gérer la configuration des extensions avec des manifestes

  2. Démarrez la suite d'émulateurs locaux comme vous le feriez normalement.

    firebase emulators:start

Maintenant, en utilisant l'instance d'extension firestore-send-email répertoriée dans votre manifeste, la suite d'émulateurs locaux téléchargera le code source de cette extension sur ~/.cache/firebase/extensions . Une fois les sources téléchargées, la suite d'émulateurs locaux démarrera et vous pourrez déclencher l'une des fonctions déclenchées en arrière-plan de l'extension et connecter votre application à la suite d'émulateurs locaux pour tester leur intégration avec votre application.

Vous pouvez utiliser l'interface utilisateur d'Emulator Suite pour ajouter des données à la collection de documents de courrier électronique et configurer d'autres ressources principales, comme requis par l'extension Trigger Email.

Alternativement, pour les environnements de test non interactifs tels que les workflows d'intégration continue, vous pouvez écrire un script de test pour évaluer l'extension qui, entre autres étapes, remplit les données Cloud Firestore nécessaires et déclenche les fonctions. Vous invoqueriez ensuite Local Emulator Suite pour exécuter votre script de test :

firebase emulators:exec my-test.sh

En quoi les tests avec l'émulateur d'extensions diffèrent de la production

L'émulateur d'extensions vous permet de tester les extensions d'une manière qui correspond étroitement à l'expérience de production. Cependant, il existe certaines différences par rapport au comportement de production.

Cloud IAM

Firebase Emulator Suite ne tente pas de répliquer ou de respecter un comportement lié à IAM pour l'exécution. Les émulateurs respectent les règles de sécurité Firebase fournies, mais dans les situations où IAM serait normalement utilisé, par exemple pour définir les fonctions Cloud invoquant le compte de service et donc les autorisations, l'émulateur n'est pas configurable et utilisera le compte disponible dans le monde entier sur votre machine de développeur, similaire à l'exécution directe d'un script local.

Limitation du type de déclenchement

Actuellement, Firebase Local Emulator Suite ne prend en charge que les fonctions déclenchées par des requêtes HTTP et les fonctions déclenchées par des événements en arrière-plan pour Cloud Firestore, Realtime Database, Cloud Storage, Authentication et Pub/Sub. Pour évaluer les extensions qui utilisent d'autres types de fonctions déclenchées, vous devez installer votre extension dans un projet Firebase de test.

Et ensuite ?