Évaluer les extensions à l'aide de l'émulateur d'extensions

Avant d'utiliser l'émulateur Extensions avec votre application, assurez-vous de comprendre le workflow global de Firebase Local Emulator Suite, et d'installer et configurer Local Emulator Suite, puis de consulter ses commandes CLI.

Dans ce guide, nous partons également du principe que vous connaissez Firebase Extensions et que vous savez 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 fonctionnalités tout en réduisant les coûts de facturation. L'émulateur exécute les fonctions de votre extension localement, y compris les fonctions déclenchées par événement en arrière-plan à l'aide des émulateurs pour Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication et Pub/Sub, ainsi que les fonctions déclenchées par Eventarc implémentées dans la version 2 de Cloud Functions.

Sélectionner un projet Firebase

Firebase Local Emulator Suite émule des produits pour un seul projet Firebase.

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

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

Type de projet Fonctionnalités Utiliser avec des émulateurs
Situation réelle

Un projet Firebase réel est celui que vous avez créé et configuré (le plus souvent via la console Firebase).

Les projets réels disposent de ressources en ligne, comme des instances de base de données, des buckets de stockage, des fonctions ou toute autre ressource que vous configurez pour ce projet Firebase.

Lorsque vous travaillez avec de véritables projets Firebase, vous pouvez exécuter des émulateurs pour tous les produits compatibles ou certains d'entre eux.

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, bucket de stockage, fonction, etc.).

Démo

Un projet Firebase de démonstration ne comporte aucune configuration réelle de Firebase et aucune ressource en ligne. Pour accéder à ces projets, vous devez généralement utiliser des ateliers de programmation ou d'autres tutoriels.

Les ID de projet des projets de démonstration portent le préfixe demo-.

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

Dans la mesure du possible, nous vous recommandons d'utiliser des projets de démonstration. Voici quelques-uns de ses avantages :

  • Configuration simplifiée, car 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 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 connexion, car il n'est pas nécessaire d'accéder à Internet pour télécharger la configuration de votre SDK.

Installer et évaluer une extension

Il est simple d'utiliser l'émulateur Extensions pour évaluer si une extension répond à vos besoins.

Supposons que vous souhaitiez utiliser l'extension de l'e-mail de déclenchement (firestore-send-email), bien que le workflow suivant couvre toutes les extensions. Lorsqu'il est exécuté avec des émulateurs locaux, le déclencheur d'e-mail utilise automatiquement les émulateurs Cloud Firestore et Cloud Functions.

Pour évaluer une extension en local :

  1. Ajoutez l'extension au fichier manifeste des extensions locales. Un fichier manifeste d'extension 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 invite à configurer la dernière version de l'extension firebase/firestore-send-email et à enregistrer la configuration dans le fichier manifeste. Toutefois, elle ne sera pas déployée dans votre projet. Pour en savoir plus, consultez Gérer la configuration des extensions avec des fichiers manifestes.

  2. Démarrez le Local Emulator Suite comme vous le feriez normalement.

    firebase emulators:start

À présent, à l'aide de l'instance d'extension firestore-send-email listée dans votre fichier 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, Local Emulator Suite démarre et vous pouvez déclencher l'une des fonctions déclenchées en arrière-plan de l'extension et connecter votre application à Local Emulator Suite pour tester leur intégration à votre application.

Vous pouvez utiliser Emulator Suite UI pour ajouter des données à la collection de documents d'e-mails et configurer d'autres ressources backend, comme l'extension d'e-mail de déclenchement l'exige.

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

firebase emulators:exec my-test.sh

Différences entre les tests avec l'émulateur Extensions et la production

L'émulateur Extensions vous permet de tester les extensions de manière à reproduire au mieux l'expérience de production. Cependant, il existe quelques différences par rapport au comportement de production.

Cloud IAM

La suite d'émulateurs Firebase ne tente pas de reproduire ni de respecter le comportement lié à l'IAM pour l'exécution. Les émulateurs respectent les règles de sécurité Firebase fournies. Toutefois, dans les situations où IAM est normalement utilisé, par exemple pour définir Cloud Functions qui appelle un compte de service et donc des autorisations, l'émulateur n'est pas configurable et utilise le compte disponible dans le monde entier sur votre ordinateur de développement, comme lorsque vous exécutez directement un script local.

Limitation du type de déclenchement

Actuellement, Firebase Local Emulator Suite n'est compatible qu'avec les fonctions déclenchées par les 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 for Firebase, 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 maintenant ?