Testando localmente aplicações com Firebase Emulator

Vinícius Hener
Senior Mega
Published in
4 min readFeb 18, 2021

Já pensou em testar toda sua aplicação localmente, sem precisar criar um projeto no firebase para testes? É possível emular algumas ferramentas do firebase como authentication, hosting, firestore, functions, database e pubsub.

Gostou da ideia? Então vamos lá!

Pré-requisito:

  • Ter a versão mais recente do firebase-tools instalado via NPM e configurado.

Após a instalação do firebase-tools, é possível inicializar e configurar seu projeto do firebase através do comando:

firebase init

Através desse comando também é possível configurar o emulador e escolher as ferramentas que iremos emular, seguindo os passos abaixo.

Configuração emulador

Selecionar a opção Emulators

Selecionar as ferramentas que irá emular, de acordo com a necessidade do seu projeto.

Definir as portas que as ferramentas irão rodar quando o emulador for iniciado.

Após a configuração do emulador através do comando firebase init, o arquivo firebase.json será criado/alterado com as configurações realizadas.

Após a configuração do emulador, vamos ao nosso projeto de exemplo.

O projeto foi desenvolvido em FlutterWeb e segue a estrutura conforme imagem abaixo:

Todas as partes da aplicação, sejam elas front-end e back-end, ficam dentro do mesmo projeto, separadas por pasta.

Para que nosso projeto seja executado levando em consideração o emulador, vamos realizar algumas configurações no arquivo main (Arquivo inicial do flutter), assim quando chamarmos uma function ou consultarmos o firestore, o projeto não olhe para o ambiente de produção, e sim para o emulador local.

Vamos começar criando o arquivo main_dev.dart que irá conter as configurações do emulador e será utilizado quando executado em ambiente de desenvolvimento.

Nesse caso estamos configurando o firestore e a functions, mas caso não utilize um deles, basta configurar apenas a ferramenta desejada.

Conforme descrito, utilizamos o Flutter para o exemplo, porém o mesmo processo funciona para outras tecnologias, como React.

O próximo passo é executar o emulador, e para isso iremos criar um arquivo bat como todos os passos necessários para iniciar nosso ambiente.

Iremos criar esse arquivo na raiz do projeto como o nome ‘InitializeDevEnvironment.bat’.

Iremos detalhar melhor código abaixo:

Nesse arquivo temos três passos principais:

  • flutter clean: Limpar o último build, para não termos problema na geração do novo build apontando para o emulador.
  • flutter build web -t lib/main_dev.dart: Gerar um novo build considerando o main_dev como arquivo de inicialização.
  • firebase emulator:start: Irá iniciar o emulador com as ferramentas informadas na tag — only.
  • — export-on-exit: Esse comando, será encarregado de exportar esses dados para um arquivo que fica localizado na pasta ‘firestore_export’ ao encerrar o emulador.
  • — import=./firestore_export: Irá importar os dados exportados no passo anterior e insere no firestore, sendo possível testar com dados inseridos em execuções anteriores.

Por fim, agora basta executar esse arquivo que irá abrir uma janela do prompt de comando e iniciar o emulador:

Agora basta você acessar o endereço da UI do emulador (Endereço default http://localhost:4000)

E aparecerá essa tela:

Será exibido as ferramentas disponíveis no emulador, porém só irão estar ativos as configuradas nos passos anteriores.

Ao clicar no firestore, irá abrir uma página muito semelhante ao firestore real, onde já poderá inserir dados para seus testes.

Em functions poderá ver os logs das functions quando elas forem executadas.

Em hosting abrirá sua aplicação web configurada junto com o emulador, sem refletir no ambiente de produção.

Conclusão

Como você viu, podemos obter o poder do Firebase em nossa máquina local e isso pode ser feito com uma configuração simples.

Isso é tudo, obrigado por ler. Até mais!

--

--