Use o emulador de extensões para avaliar extensões

Antes de usar o emulador de extensões com seu aplicativo, entenda o fluxo de trabalho geral do Firebase Local Emulator Suite e instale e configure o Local Emulator Suite e revise seus comandos CLI .

Este guia também pressupõe que você esteja familiarizado com as extensões do Firebase e como usá-las em seus aplicativos do Firebase .

O que posso fazer com o emulador de extensões?

Com o emulador de extensões, você pode instalar e gerenciar extensões em um ambiente local seguro e entender melhor seus recursos, ao mesmo tempo que minimiza os custos de faturamento. O emulador executa as funções da sua extensão localmente, incluindo funções acionadas por eventos em segundo plano usando os emuladores para Cloud Firestore, Realtime Database, Cloud Storage para Firebase, Authentication e Pub/Sub, e funções acionadas pelo Eventarc implementadas no Cloud Functions v2.

Escolha um projeto do Firebase

O Firebase Local Emulator Suite emula produtos para um único projeto do Firebase.

Para selecionar o projeto a ser usado, antes de iniciar os emuladores, na CLI, execute firebase use em seu diretório de trabalho. Ou você pode passar o sinalizador --project para cada comando do emulador.

O Local Emulator Suite oferece suporte à emulação de projetos reais do Firebase e projetos de demonstração .

Tipo de projeto Características Use com emuladores
Real

Um projeto real do Firebase é aquele que você criou e configurou (provavelmente por meio do console do Firebase).

Projetos reais têm recursos ativos, como instâncias de banco de dados, intervalos de armazenamento, funções ou qualquer outro recurso configurado para esse projeto do Firebase.

Ao trabalhar com projetos reais do Firebase, você pode executar emuladores para qualquer um ou todos os produtos compatíveis.

Para quaisquer produtos que você não esteja emulando, seus aplicativos e código interagirão com o recurso ativo (instância de banco de dados, depósito de armazenamento, função, etc.).

Demonstração

Um projeto de demonstração do Firebase não tem configuração real do Firebase nem recursos ativos. Esses projetos geralmente são acessados ​​por meio de codelabs ou outros tutoriais.

Os IDs de projeto para projetos de demonstração têm o prefixo demo- .

Ao trabalhar com projetos de demonstração do Firebase, seus aplicativos e códigos interagem apenas com emuladores . Se o seu aplicativo tentar interagir com um recurso para o qual um emulador não está em execução, esse código falhará.

Recomendamos que você use projetos de demonstração sempre que possível. Os benefícios incluem:

  • Configuração mais fácil, pois você pode executar os emuladores sem nunca criar um projeto Firebase
  • Maior segurança, pois se o seu código invocar acidentalmente recursos não emulados (de produção), não há chance de alteração de dados, utilização e cobrança
  • Melhor suporte offline, já que não há necessidade de acesso à internet para baixar a configuração do seu SDK.

Instalar e avaliar uma extensão

Usar o emulador de extensões para avaliar se uma extensão atende às suas necessidades é simples.

Vamos supor que você esteja interessado na extensão Trigger Email ( firestore-send-email ), embora o fluxo de trabalho a seguir cubra qualquer extensão. Quando executado com emuladores locais, o Trigger Email usará automaticamente os emuladores Cloud Firestore e Cloud Functions.

Para avaliar uma extensão localmente:

  1. Adicione a extensão ao manifesto de extensões locais. Um manifesto de extensões é uma lista de instâncias de extensão e suas configurações.

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

    A execução do comando acima solicitará que você configure a versão mais recente da extensão firebase/firestore-send-email e salve a configuração no manifesto, mas não implantará a configuração em seu projeto. Para saber mais sobre isso, consulte Gerenciar configuração de extensões com manifestos

  2. Inicie o Local Emulator Suite como faria normalmente.

    firebase emulators:start

Agora, usando a instância da extensão firestore-send-email listada em seu manifesto, o Local Emulator Suite fará download do código-fonte dessa extensão para ~/.cache/firebase/extensions . Após o download das fontes, o Local Emulator Suite será iniciado e você poderá acionar qualquer uma das funções acionadas em segundo plano da extensão e conectar seu aplicativo ao Local Emulator Suite para testar sua integração com seu aplicativo.

Você pode usar a IU do Emulator Suite para adicionar dados à coleção de documentos de e-mail e configurar outros recursos de back-end, conforme exigido pela extensão Trigger Email.

Como alternativa, para ambientes de teste não interativos, como fluxos de trabalho de integração contínua, você pode escrever um script de teste para avaliar a extensão que, entre outras etapas, preenche os dados necessários do Cloud Firestore e aciona funções. Você então invocaria o Local Emulator Suite para executar seu script de teste:

firebase emulators:exec my-test.sh

Como o teste com o emulador de extensões difere da produção

O emulador de extensões permite testar extensões de uma forma que corresponda à experiência de produção. No entanto, existem algumas diferenças no comportamento da produção.

Nuvem IAM

O Firebase Emulator Suite não tenta replicar ou respeitar qualquer comportamento relacionado ao IAM para execução. Os emuladores aderem às regras de segurança do Firebase fornecidas, mas em situações em que o IAM normalmente seria usado, por exemplo, para definir o Cloud Functions que invoca a conta de serviço e, portanto, as permissões, o emulador não é configurável e usará a conta disponível globalmente na sua máquina de desenvolvedor. semelhante a executar um script local diretamente.

Limitação do tipo de acionamento

Atualmente, o Firebase Local Emulator Suite oferece suporte apenas a funções acionadas por solicitação HTTP, acionadores de eventos personalizados do Eventarc para extensões e funções acionadas por eventos em segundo plano para Cloud Firestore, Realtime Database, Cloud Storage para Firebase, Authentication e Pub/Sub. Para avaliar extensões que usam outros tipos de funções acionadas, você precisa instalar sua extensão em um projeto de teste do Firebase.

Qual o proximo?