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

Avant d'utiliser l'émulateur Extensions avec votre application, assurez-vous de bien comprendre le flux de travail global de Firebase Local Emulator Suite , d' installer et de configurer Local Emulator Suite et de consulter 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 Extensions ?

Avec l'émulateur Extensions, vous pouvez installer et gérer des extensions dans un environnement local sécurisé 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 pour Firebase, Authentication et Pub/Sub, ainsi que les fonctions déclenchées par Eventarc implémentées dans Cloud Functions v2.

Choisissez un projet Firebase

La suite Firebase Local Emulator émule les produits pour un seul projet Firebase.

Pour sélectionner le projet à utiliser, avant de démarrer les émulateurs, dans la CLI, firebase use dans votre répertoire de travail. Vous pouvez également transmettre l'indicateur --project à chaque commande d'é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 disposent de 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 actives. 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 portent le préfixe demo- .

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

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

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

Installer et évaluer une extension

Utiliser l’émulateur Extensions pour évaluer si une extension répond à vos besoins est simple.

Supposons que vous soyez 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 utilisera 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'extension et de leurs configurations.

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

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

  2. Démarrez la suite d'émulateur local comme vous le feriez normalement.

    firebase emulators:start

Désormais, en utilisant l'instance d'extension firestore-send-email répertoriée dans votre manifeste, Local Emulator Suite téléchargera le code source de cette extension dans ~/.cache/firebase/extensions . Une fois les sources téléchargées, la suite d'émulateur local démarrera et vous pourrez déclencher n'importe quelle fonction déclenchée en arrière-plan de l'extension et connecter votre application à la suite d'émulateur local 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 backend, comme l'exige 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 appelleriez ensuite Local Emulator Suite pour exécuter votre script de test :

firebase emulators:exec my-test.sh

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

L'émulateur 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.

IAM dans le cloud

La suite d'émulateurs Firebase ne tente pas de répliquer ou de respecter tout comportement lié à IAM lors de son exécution. Les émulateurs adhèrent aux règles de sécurité Firebase fournies, mais dans les situations où IAM serait normalement utilisé, par exemple pour définir le compte de service appelant Cloud Functions et donc les autorisations, l'émulateur n'est pas configurable et utilisera le compte disponible mondialement sur votre ordinateur de développeur. similaire à l’exécution directe d’un script local.

Limitation du type de déclenchement

Actuellement, la suite d'émulateurs locaux Firebase ne prend en charge que les fonctions déclenchées par des requêtes HTTP, les déclencheurs d'événements personnalisés Eventarc pour les extensions et les fonctions déclenchées par des événements en arrière-plan pour Cloud Firestore, Realtime Database, Cloud Storage pour Firebase, Authentification 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 ?