Menggunakan Emulator Extensions untuk mengevaluasi ekstensi

Sebelum menggunakan emulator Extensions dengan aplikasi, pastikan Anda memahami keseluruhan alur kerja Firebase Local Emulator Suite, menginstal dan mengonfigurasi Local Emulator Suite, dan meninjau Perintah CLI-nya.

Panduan ini juga mengasumsikan bahwa Anda telah memahami Firebase Extensions dan cara menggunakannya di aplikasi Firebase.

Apa yang dapat saya lakukan dengan emulator Extensions?

Dengan emulator Extensions, Anda dapat menginstal dan mengelola ekstensi di lingkungan lokal yang aman dan lebih memahami kemampuannya sekaligus meminimalkan biaya tagihan. Emulator menjalankan fungsi ekstensi Anda secara lokal, termasuk fungsi yang dipicu peristiwa latar belakang menggunakan emulator untuk Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication dan Pub/Sub, serta fungsi yang dipicu Eventarc yang diimplementasikan di Cloud Functions v2.

Memilih project Firebase

Firebase Local Emulator Suite mengemulasi produk untuk satu project Firebase.

Untuk memilih project yang akan digunakan, sebelum memulai emulator, jalankan firebase use di CLI di direktori kerja Anda. Atau, Anda dapat meneruskan flag --project ke setiap perintah emulator.

Local Emulator Suite mendukung emulasi project Firebase sungguhan dan project demo.

Jenis project Fitur Penggunaan dengan emulator
Sungguhan

Project Firebase sungguhan adalah project yang Anda buat dan konfigurasikan (kemungkinan besar melalui Firebase console).

Project sungguhan memiliki resource live, seperti instance database, bucket penyimpanan, fungsi, atau resource lain yang Anda siapkan untuk project Firebase tersebut.

Jika mengerjakan project Firebase sungguhan, Anda dapat menjalankan emulator untuk salah satu atau semua produk yang didukung.

Untuk produk yang tidak diemulasi, aplikasi dan kode Anda akan berinteraksi dengan resource live (instance database, bucket penyimpanan, fungsi, dsb.).

Demo

Project Firebase demo tidak memiliki konfigurasi Firebase sungguhan dan tidak memiliki resource live. Project ini biasanya diakses melalui codelab atau tutorial lainnya.

Project ID untuk project demo memiliki awalan demo-.

Jika menggunakan project Firebase demo, aplikasi dan kode Anda hanya berinteraksi dengan emulator. Jika aplikasi Anda mencoba berinteraksi dengan resource yang tidak dijalankan dengan emulator, kode tersebut akan gagal.

Jika memungkinkan, sebaiknya gunakan project demo. Manfaatnya meliputi:

  • Penyiapan yang lebih mudah karena Anda dapat menjalankan emulator tanpa perlu membuat project Firebase
  • Keamanan yang lebih tangguh karena jika kode Anda tidak sengaja memanggil resource yang tidak diemulasi (production), tidak akan terjadi perubahan data, penggunaan, dan penagihan
  • Dukungan offline yang lebih baik karena Anda tidak perlu mengakses internet untuk mendownload konfigurasi SDK.

Menginstal dan mengevaluasi ekstensi

Menggunakan emulator Extensions untuk mengevaluasi apakah ekstensi memenuhi kebutuhan Anda tidaklah sulit.

Mari asumsikan Anda tertarik dengan ekstensi Memicu Email (firestore-send-email), meskipun alur kerja berikut mencakup ekstensi apa pun. Jika dijalankan dengan emulator lokal, ekstensi Memicu Email akan otomatis menggunakan emulator Cloud Firestore dan Cloud Functions.

Untuk mengevaluasi ekstensi secara lokal:

  1. Tambahkan ekstensi ke manifes ekstensi lokal. Manifes ekstensi adalah daftar instance ekstensi dan konfigurasinya.

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

    Jika menjalankan perintah di atas, Anda akan diminta untuk mengonfigurasi versi terbaru dari ekstensi firebase/firestore-send-email dan menyimpan konfigurasi tersebut ke manifes, tetapi konfigurasi tersebut tidak akan di-deploy ke project Anda. Untuk mengetahui informasi selengkapnya, lihat Mengelola konfigurasi ekstensi dengan manifes

  2. Mulai Local Emulator Suite seperti biasa.

    firebase emulators:start

Sekarang, dengan menggunakan instance ekstensi firestore-send-email yang tercantum dalam manifes, Local Emulator Suite akan mendownload kode sumber ekstensi tersebut ke ~/.cache/firebase/extensions. Setelah sumber didownload, Local Emulator Suite akan dimulai dan Anda dapat memicu fungsi ekstensi yang dipicu latar belakang dan menghubungkan aplikasi ke Local Emulator Suite untuk menguji integrasinya dengan aplikasi Anda.

Anda dapat menggunakan UI Emulator Suite untuk menambahkan data ke koleksi dokumen email dan menyiapkan resource backend lainnya yang diperlukan oleh ekstensi Memicu Email.

Atau, untuk lingkungan pengujian noninteraktif seperti alur kerja continuous integration, Anda dapat menulis skrip pengujian untuk mengevaluasi ekstensi yang salah satu langkahnya adalah mengisi data Cloud Firestore yang diperlukan dan memicu fungsi. Anda kemudian akan memanggil Local Emulator Suite untuk menjalankan skrip pengujian:

firebase emulators:exec my-test.sh

Perbedaan antara pengujian dengan emulator Extensions dan produksi

Emulator Extensions memungkinkan Anda menguji ekstensi dengan cara yang mirip dengan produksi. Namun, ada beberapa perbedaan dari perilaku produksi.

Cloud IAM

Firebase Emulator Suite tidak berupaya mereplikasi atau mematuhi perilaku terkait IAM dalam beroperasi. Emulator mematuhi Aturan Keamanan Firebase yang diberikan. Namun, dalam situasi saat IAM biasanya digunakan, misalnya untuk menetapkan akun layanan yang memanggil Cloud Functions serta izinnya, emulator tidak dapat dikonfigurasi dan akan menggunakan akun yang tersedia secara global di mesin developer Anda, sama seperti menjalankan skrip lokal secara langsung.

Batasan jenis pemicu

Saat ini, Firebase Local Emulator Suite hanya mendukung fungsi yang dipicu permintaan HTTP, pemicu peristiwa kustom Eventarc untuk ekstensi, dan fungsi yang dipicu peristiwa latar belakang untuk Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication, dan Pub/Sub. Untuk mengevaluasi ekstensi yang menggunakan fungsi dengan pemicu jenis lainnya, Anda harus menginstal ekstensi dalam project Firebase pengujian.

Apa selanjutnya?