05. Testing End-to-End & Deployment ke Web Publik
Selamat! Anda telah berhasil merakit seluruh arsitektur frontend dApp terdesentralisasi untuk platform RWA Fractional Real Estate (Bali Sunset Villa #01) menggunakan React, Ethers.js v6, dan Arbitrum Sepolia.
Sebelum membagikan dApp ini kepada para investor dan publik, kita perlu melakukan pengujian skenario menyeluruh (End-to-End Testing) dan mempublikasikannya ke hosting web publik.
๐งช 1. Matriks Pengujian End-to-End (E2E)โ
Jalankan server pengembangan lokal Anda (npm run dev) dan lakukan 4 skenario pengujian berikut secara berurutan:
Skenario 1: Deteksi Jaringan Salah (Wrong Network Guard)โ
- Langkah: Buka MetaMask dan sengaja alihkan jaringan ke Ethereum Mainnet atau Sepolia L1.
- Tindakan: Buka aplikasi web dApp Anda di browser dan klik tombol Connect Wallet.
- Ekspektasi: MetaMask otomatis memunculkan prompt konfirmasi untuk beralih (switch) atau mendaftarkan jaringan Arbitrum Sepolia (Chain ID:
421614/0x66eee). - Hasil: โ Berhasil jika antarmuka hanya dapat berinteraksi ketika berada di jaringan Arbitrum Sepolia.
Skenario 2: Investasi Sukses (Happy Path)โ
- Langkah: Hubungkan akun MetaMask yang memiliki saldo Arbitrum Sepolia ETH (gunakan akun investor, bukan akun Issuer/Owner).
- Tindakan: Masukkan jumlah
2unit fraksi, lalu klik tombol Konfirmasi & Beli (2 Lembar Fraksi). - Ekspektasi:
- Popup MetaMask meminta konfirmasi transfer
0.002 ETH(2 ร 0.001 ETH) + estimasi gas fee Arbitrum yang sangat terjangkau (~0.00002 ETH). - Tombol UI beralih ke indikator Loading (Memproses Investasi di Arbitrum...).
- Dalam hitungan detik (~250ms - 1 detik), banner sukses hijau muncul disertai tautan transaksi ke Arbiscan Sepolia.
- Sisa kuota fraksi properti berkurang 2, dan portofolio kepemilikan Anda bertambah 2 lembar.
- Popup MetaMask meminta konfirmasi transfer
- Hasil: โ Berhasil jika data blockchain dan tampilan antarmuka tersinkronisasi seketika.
Skenario 3: Penanganan Revert Cooldown & Kuota (Error Handling)โ
- Langkah: Tepat setelah transaksi pada Skenario 2 berhasil, langsung coba lakukan pembelian fraksi lagi tanpa menunggu 10 detik.
- Tindakan: Konfirmasi transaksi di MetaMask.
- Ekspektasi: Transaksi ditolak atau direvert oleh smart contract karena aturan
block.timestamp - lastInvestmentTime[msg.sender] < COOLDOWN_PERIOD. - Hasil: โ Antarmuka menampilkan banner merah bertuliskan pesan revert ramah ("Gagal: Cooldown masih aktif. Silakan tunggu beberapa detik"), dan aplikasi tidak mengalami crash.
Skenario 4: Verifikasi Dokumen IPFS & Hak Akses Issuer (Security & Compliance)โ
- Langkah:
- Klik tautan Verifikasi On-Chain di samping label Sertifikat BPN Legal. Periksa apakah link IPFS membuka dokumen legalitas properti dengan benar (membuka file legalitas resmi workshop dengan CID
bafybeiexwukp7b44s42dk7fjybeduq4teqganfsmndrpxmr6im32meru3i). - Beralih akun di MetaMask ke akun yang Anda gunakan saat men-deploy kontrak di Bagian 1 (Deployer / Asset Issuer).
- Klik tautan Verifikasi On-Chain di samping label Sertifikat BPN Legal. Periksa apakah link IPFS membuka dokumen legalitas properti dengan benar (membuka file legalitas resmi workshop dengan CID
- Ekspektasi:
- Antarmuka mendeteksi
account.toLowerCase() === owner.toLowerCase(). - Kartu emas Asset Issuer Dashboard otomatis terbuka di bagian bawah.
- Coba lakukan Tambah Kuota: Masukkan angka 100 โ kuota fraksi penawaran bertambah 100.
- Coba lakukan Tarik Modal Investasi: Seluruh saldo ETH hasil penjualan fraksi di dalam kontrak dicairkan ke dompet pengelola Anda.
- Antarmuka mendeteksi
- Hasil: โ Berhasil jika fungsi manajerial hanya dapat diakses dan dieksekusi oleh pengelola sah.
๐ 2. Deployment Frontend ke Vercel (Gratis & Cepat)โ
Cara termudah dan paling standar di industri Web3 untuk mempublikasikan antarmuka dApp adalah menggunakan platform hosting Vercel.
Langkah 1: Buat Bundle Produksiโ
Uji apakah seluruh kode React Anda berhasil di-build tanpa error:
npm run build
Perintah ini akan memvalidasi sintaks JSX dan menghasilkan folder dist/ yang siap dideploy.
Langkah 2: Deploy Menggunakan Vercel CLIโ
# Pasang Vercel CLI (jika belum ada)
npm install -g vercel
# Jalankan proses deployment
vercel
Ikuti panduan interaktif di terminal:
Set up and deploy?โ Tekan yWhich scope?โ Pilih akun personal AndaLink to existing project?โ Tekan nWhat's your project's name?โarbitrum-rwa-propertyIn which directory is your code located?โ./Want to modify these settings?โ Tekan n
Dalam ~30 detik, terminal akan memberikan URL produksi publik Anda (misalnya: https://arbitrum-rwa-property.vercel.app).
[!TIP] Anda juga dapat menghubungkan repositori GitHub Anda langsung ke dashboard vercel.com untuk mengaktifkan Continuous Deployment (setiap kali Anda melakukan
git push, website akan diperbarui secara otomatis).
๐ Rangkuman Pencapaian Workshopโ
Luar biasa! Dalam rangkaian workshop ini, Anda telah menyelesaikan seluruh siklus pengembangan aplikasi Web3 terdesentralisasi:
[Bagian 1: Lapisan Smart Contract RWA]
โโโ 11 Modul Fondasi Solidity (String, Numbers, Visibility, Functions, Mapping,
โ msg.sender, Timestamp, Payable, Require, Events, Owner)
โโโ Deployment FractionalProperty.sol ke Arbitrum Sepolia via Remix IDE
โฌ๏ธ TERHUBUNG PENUH DENGAN โฌ๏ธ
[Bagian 2: Lapisan Integrasi Frontend dApp]
โโโ Arsitektur dApp Web3 & Mental Model Tokenisasi Aset (RWA)
โโโ Antarmuka Visual Modern (UI-First Approach dengan Glassmorphism & Cyber-Slate)
โโโ Konfigurasi ABI & Auto-Switch Jaringan Arbitrum Sepolia (Chain ID: 421614)
โโโ Pembacaan Data On-Chain & Eksekusi Pembayaran Investasi dengan ETH
โโโ Kontrol Akses Kondisional Pengelola Aset (Issuer Dashboard)
โโโ Penanganan Real-time Event Listener (FractionPurchased & FractionsRestocked)
โโโ Pengujian End-to-End & Publikasi ke Vercel
Anda kini telah memiliki aplikasi terdesentralisasi (dApp) Real World Asset yang berfungsi penuh, aman, transparan, dan siap dipamerkan di portofolio Web3 Anda! ๐