[Project] Consumer-Driven Contract Testing (Pact & PactFlow)


Sebagai seorang QA Automation Engineer, tantangan terbesar bukanlah saat menulis skrip test pertama kali, melainkan bagaimana memastikan integrasi antar-layanan (seperti Consumer dan Provider) tetap selaras tanpa mengorbankan kecepatan development di lingkungan lokal.

Dalam proyek terbaru ini, saya merancang sistem pengujian kontrak menggunakan Pact, Vitest, dan Playwright, yang diintegrasikan secara penuh ke dalam otomatisasi CI/CD.


Strategi di Balik Layar: Keseimbangan Local & Remote

Kerap kali, developer dihadapkan pada dilema: konfigurasi lokal berbeda dengan server, atau file konfigurasi sensitif ikut ter-push secara tidak sengaja. Untuk mengatasinya, saya menerapkan pendekatan isolasi lingkungan lokal yang ketat:

  • Pengamanan State Lokal: Memanfaatkan pengelolaan indeks Git untuk menjaga fleksibilitas skrip lokal tanpa mencemari repository utama.

  • Pipeline yang Transparan: Memastikan setiap perubahan kontrak divalidasi secara otomatis, menghasilkan laporan uji bersih berbasis HTML yang memudahkan proses debugging dalam hitungan detik.


Mengapa Pendekatan Ini Krusial bagi Bisnis?

Otomasi bukan sekadar menggantikan tugas manual dengan skrip, melainkan membangun jaring pengaman agar perubahan kecil pada satu layanan tidak merusak sistem secara keseluruhan di ranah production. Dokumentasi visual dan laporan terstruktur adalah bukti nyata bahwa kualitas sebuah produk dibangun di atas fondasi pengujian yang disiplin.


Catatan: Implementasi kode spesifik dan struktur direktori inti sengaja dilindungi untuk menjaga kerahasiaan arsitektur sistem.


image


 



 


🛠️ Tech Stack & Tools

  • Language: TypeScript / Node.js (ESM)
  • Consumer Framework: Vitest + @pact-foundation/pact
  • Provider Framework: Express.js + Vitest Verifier
  • Broker: PactFlow SaaS Broker

🚀 Cara Menjalankan Lokal

Jalankan seluruh alur Consumer-Driven Contract Testing, publikasi kontrak ke PactFlow Broker, dan verifikasi Provider :

npm run test:all

📊 Hasil Verifikasi

Setelah verifikasi provider selesai, status matriks integrasi antara OrderService dan UserService pada dashboard PactFlow terkonfirmasi Verified (HIJAU / SUCCESS), menandakan kedua service siap dideploy secara terpisah tanpa risiko breaking changes.

📊 Test Reports

Setelah eksekusi selesai, sistem akan secara otomatis membuka 2 laporan visual (HTML Reports) sekaligus di browser kamu:

  • OrderService (Consumer)
  • UserService (Provider)


Link Github : Contract Testing !!!

No comments:

Post a Comment

Pages