+-------------------------------------------------------------------+
| LEMBAR SPESIFIKASI PENGUJIAN PERANGKAT & HARDWARE LAB |
+-------------------------------------------------------------------+
| Tanggal Pengujian : 2 September 2026 |
| Insinyur Penguji : Pratama Wijaya (Nodestack.id) |
| Target Perangkat : Budget Android Tablets (Rp 2M / 8" / Used) |
| Framework Utama : Next.js 14 + Workbox PWA |
| Node.js Version : v22.14.0 LTS |
| Skor PageSpeed : Mobile 99/100 | Desktop 100/100 |
| Repository : github.com/Oryzen-CF/Nodestack |
+-------------------------------------------------------------------+
Evaluasi Hardware Tablet Budget untuk Infrastruktur Pengujian Web
Banyak pengembang aplikasi web modern terjebak dalam ilusi bahwa testing client-side performance cukup dilakukan melalui emulator Chrome DevTools di PC server bertenaga tinggi (seperti Apple Silicon M-series atau AMD Ryzen 9). Ketika aplikasi diluncurkan, pengguna di lapangan yang menggunakan tablet murah seharga Rp 2 jutaan atau perangkat bekas berukuran 8 inci sering mengalami lag parah, freezing saat membaca dokumen PDF berukuran besar, atau kegagalan Service Worker akibat manajemen memori OS yang sangat agresif.
Di Nodestack, kami mengambil pendekatan berbeda. Daripada mengandalkan simulasi emulasi CPU throttling sintetis yang tidak akurat, kami membangun device lab fisik internal memanfaatkan jajaran tablet Android entry-level (rentang harga Rp 1,8 juta hingga Rp 2,5 juta) dan tablet bekas generasi 2023–2024.
Limitasi Memory Management dan Threading pada SoC Kelas Menengah
Ketika kami menguji aplikasi edukasi berbasis web (e-learning dashboard, PDF renderer, dan editor teks kaya), bottleneck utama perangkat kelas ini bukanlah murni pada kecepatan clock CPU, melainkan pada tiga faktor kritis:
- Lebar Pita Memori (RAM Bandwidth) dan Kapasitas LPDDR4X: Perangkat murah dengan RAM 3 GB hingga 4 GB memiliki ambang batas Out-Of-Memory (OOM) yang sangat rendah. Saat V8 engine mengalokasikan heap di atas 450 MB untuk memproses dokumen PDF multi-halaman, Android Low Memory Killer (LMK) akan membunuh tab browser secara instan.
- Perilaku Thermal Throttling pada Unisoc T606 dan Helio G99: Dalam 10 menit eksekusi script heavy DOM manipulation, frekuensi CPU core Cortex-A76 turun hingga 40% untuk menekan suhu, menyebabkan Total Blocking Time (TBT) melonjak dari 150ms menjadi 1.200ms.
- Kecepatan Penyimpanan EMMC 5.1 vs UFS 2.2: Cache Service Worker dan pembacaan IndexedDB pada tablet berpenyimpanan EMMC 5.1 mencatatkan latensi I/O hingga 5x lebih lambat dibanding UFS 2.2.
Arsitektur Automation Lab dan Monitoring Benchmarking
Untuk mengotomatisasi pengujian performa web pada jajaran tablet ini, kami menggunakan arsitektur penguji terpusat yang menjalankan Node.js v22.14.0 LTS dan berkomunikasi melalui prototol Android Debug Bridge (ADB) over TCP/IP.
+--------------------------------------------------------------------+
| Node.js Benchmark Host |
| (Node.js v22.14.0 LTS) |
| +---------------------+ +------------------------------------+ |
| | Playwright Engine | | ADB Controller (adb-kit / native) | |
| +----------+----------+ +-----------------+------------------+ |
+-------------|--------------------------------|---------------------+
| (CDP Direct) | (ADB over WiFi/USB)
v v
+--------------------------------------------------------------------+
| Target Device (Budget Tablet) |
| +--------------------------------------------------------------+ |
| | Android OS / Chrome Mobile Engine | |
| | - Service Worker Cache & IndexedDB Storage | |
| | - Web Vitals Metric Collector Script | |
| +--------------------------------------------------------------+ |
+--------------------------------------------------------------------+
Struktur Repositori Testing Node.js
Berikut adalah struktur folder yang kami gunakan dalam proyek pengujian otomatis ini:
nodestack-device-bench/
├── src/
│ ├── config/
│ │ └── devices.json
│ ├── core/
│ │ ├── adb-bridge.ts
│ │ └── metrics-collector.ts
│ └── index.ts
├── results/
│ └── telemetry.json
├── package.json
└── tsconfig.json
Script Runner Benchmark Perangkat (TypeScript)
Berikut adalah implementasi script untuk mengontrol browser Chrome pada tablet Android melalui WebDriver/CDP dan mengumpulkan data performa riil:
// src/core/metrics-collector.ts
import { chromium, ChromiumBrowser, Page } from 'playwright';
import { execSync } from 'child_process';
interface MetricResult {
deviceName: string;
fcp: number;
lcp: number;
tbt: number;
usedHeapJS: number;
}
export async function runTabletBenchmark(
deviceIp: string,
targetUrl: string
): Promise<MetricResult> {
// Pastikan koneksi ADB ke tablet terhubung
try {
execSync(`adb connect ${deviceIp}:5555`);
} catch (error) {
console.error(`[ADB Error] Gagal terhubung ke device: ${deviceIp}`);
throw error;
}
// Menjalankan remote debugging session melalui Playwright
const browser: ChromiumBrowser = await chromium.connectOverCDP(
`http://${deviceIp}:9222`
);
const context = browser.contexts()[0];
const page: Page = await context.newPage();
// Aktifkan pemantauan V8 Metrics
const client = await context.newCDPSession(page);
await client.send('Performance.enable');
const startTime = Date.now();
await page.goto(targetUrl, { waitUntil: 'networkidle' });
// Extrak Web Vitals langsung dari V8 Context tablet
const metrics = await page.evaluate(async () => {
const navEntries = performance.getEntriesByType('navigation')[0] as PerformanceNavigationTiming;
const paintEntries = performance.getEntriesByType('paint');
const fcp = paintEntries.find(entry => entry.name === 'first-contentful-paint')?.startTime || 0;
const memoryInfo = (performance as any).memory;
return {
fcp,
domInteractive: navEntries.domInteractive,