Dokumen ini adalah fixture QA, bukan artikel produksi. Biarkan seluruh elemen tetap ada agar perubahan tema, CSS, shell, dan runtime PakRPP dapat diuji secara konsisten.
Ringkasan pengujian
Section titled “Ringkasan pengujian”Halaman ini menguji:
- hierarki heading;
- paragraf panjang dan pendek;
- bold, italic, bold italic,
strikethrough, daninline code; - tautan internal, eksternal, dan anchor;
- blockquote dan callout Obsidian;
- asides bawaan Starlight;
- ordered list, unordered list, nested list, dan task list;
- tabel lebar;
- gambar, caption, audio, video, dan iframe;
- code block, filename, line highlight, diff, dan terminal output;
<details>,<kbd>,<mark>,<abbr>,<sub>,<sup>, dan<hr>;- footnote, definisi istilah, serta teks campuran Indonesia–English.
1. Tipografi dan paragraf
Section titled “1. Tipografi dan paragraf”Ini paragraf biasa untuk menguji ukuran font, line-height, lebar kolom baca, kontras, dan jarak antarparagraf. PakRPP menggunakan pengalaman membaca yang tenang, tetapi antarmukanya tetap terasa responsif seperti sebuah console blueprint yang hidup.
Paragraf kedua memuat teks tebal, teks miring, teks tebal dan miring, teks dicoret, const inlineCode = true, simbol © ® ™, pecahan ½, tanda em dash —, ellipsis…, dan emoji terbatas: 🧭 🧩 ✅.
Tautan pengujian:
Istilah singkat: SSOT, H2O, E = mc2, tekan ⌘ + K, lalu tandai teks penting.
2. Hierarki heading
Section titled “2. Hierarki heading”Heading level 3
Section titled “Heading level 3”Teks di bawah heading level 3.
Heading level 4
Section titled “Heading level 4”Teks di bawah heading level 4.
Heading level 5
Section titled “Heading level 5”Teks di bawah heading level 5.
Heading level 6
Section titled “Heading level 6”Teks di bawah heading level 6.
3. Blockquote dan kutipan
Section titled “3. Blockquote dan kutipan”Arsitektur yang baik tidak hanya terlihat rapi ketika selesai, tetapi juga tetap dapat dipahami ketika sistem berubah.
Blockquote dapat memiliki beberapa paragraf.
Paragraf kedua menguji jarak vertikal, border, warna latar, dan wrap pada layar kecil.
— PakRPP Dummy Content
Nested blockquote
Section titled “Nested blockquote”Lapisan pertama
Lapisan kedua
Lapisan ketiga
Callout Obsidian
Section titled “Callout Obsidian”Ini adalah callout Obsidian. Bridge PakRPP mengubahnya menjadi aside Starlight saat build, sehingga sumber Markdown dari vault tetap cocok dengan Astro.
Jangan menghapus callout ini karena pipeline PakRPP memakai transformer Obsidian ke Starlight.
4. Asides bawaan Starlight
Section titled “4. Asides bawaan Starlight”Ini adalah aside note bawaan Starlight.
Gunakan judul khusus untuk memeriksa alignment ikon, wrapping judul, dan spacing isi.
Aside ini menguji pesan yang membutuhkan perhatian.
Aside danger harus tetap terbaca jelas pada light mode, dark mode, dan mode kontras tinggi.
Aside dapat berisi daftar:
- Item pertama
- Item kedua
- Item ketiga dengan
inline code
4.1 Asides bawaan Obsidian
Section titled “4.1 Asides bawaan Obsidian”Ini adalah aside note bawaan Starlight.
Gunakan judul khusus untuk memeriksa alignment ikon, wrapping judul, dan spacing isi.
Aside ini menguji pesan yang membutuhkan perhatian.
Aside danger harus tetap terbaca jelas pada light mode, dark mode, dan mode kontras tinggi.
Aside dapat berisi daftar:
- Item pertama
- Item kedua
- Item ketiga dengan
inline code
5. Daftar
Section titled “5. Daftar”Unordered list
Section titled “Unordered list”- Item utama pertama
- Item utama kedua
- Anak item A
- Anak item B
- Cucu item B.1
- Cucu item B.2
- Item utama ketiga
Ordered list
Section titled “Ordered list”- Tulis artikel di Obsidian.
- Commit Markdown ke Git.
- Jalankan build Astro.
- Periksa output Starlight.
- Jalankan acceptance test.
Task list
Section titled “Task list”- Frontmatter terbaca
- Heading tampil
- Aside tampil
- Gambar lokal tersedia
- Audio dan video diuji pada perangkat nyata
- Tabel diuji pada viewport sempit
Definition-style list
Section titled “Definition-style list”Canonical source
Obsidian Vault atau Markdown di Git.
Renderer
Astro + Starlight.
Editor masa depan
PakRPP Studio sebagai editor Markdown berbasis Git, bukan CMS/database kedua.
6. Tabel responsif
Section titled “6. Tabel responsif”| Status | Komponen | Tujuan Uji | Desktop | Mobile | Catatan Panjang |
|---|---|---|---|---|---|
| ✅ | Heading | Hierarki tipografi | Pass | Pass | Pastikan anchor tidak tertutup sticky header. |
| ✅ | Aside | Kontras dan spacing | Pass | Pass | Judul panjang harus membungkus tanpa menabrak ikon. |
| ⚠️ | Table | Overflow horizontal | Check | Check | Tabel ini sengaja lebar untuk memeriksa scroll container pada viewport kecil. |
| ⚠️ | Image | Aspect ratio | Check | Check | Gambar tidak boleh menyebabkan layout shift berlebihan. |
| ⚠️ | Code | Horizontal scroll | Check | Check | Baris panjang harus dapat digeser tanpa memotong isi halaman. |
| ⚠️ | Media | Native controls | Check | Check | Audio/video harus tetap dapat dioperasikan dengan keyboard. |
7. Gambar dan figur
Section titled “7. Gambar dan figur”Gambar Markdown lokal
Section titled “Gambar Markdown lokal”Teks miring ini berfungsi sebagai caption sederhana di bawah gambar Markdown.
Figure dengan caption semantik
Section titled “Figure dengan caption semantik”Gambar eksternal opsional
Section titled “Gambar eksternal opsional”Apabila kebijakan CSP atau privacy PakRPP memblokir domain eksternal, gambar di atas boleh gagal. Kegagalan tersebut justru berguna untuk menguji fallback dan console warning.
8. Expressive Code dan code block
Section titled “8. Expressive Code dan code block”JavaScript dengan filename dan highlight
Section titled “JavaScript dengan filename dan highlight”const state = { theme: "blueprint", sfx: true, readerMode: "focused",};
export function bootRichMediaTest() { document.documentElement.dataset.richMediaTest = "ready"; console.info("[PakRPP] Rich media fixture ready", state);}TypeScript dengan diff markers
Section titled “TypeScript dengan diff markers”type ContentSource = "obsidian-git" | "cms";
- const source: ContentSource = "cms";+ const source: ContentSource = "obsidian-git";
export const contentContract = { source, editor: "PakRPP Studio", database: false,};Astro component example
Section titled “Astro component example”---interface Props { title: string; status?: "pass" | "check" | "fail";}
const { title, status = "check" } = Astro.props;---
<section class="test-panel" data-status={status}> <h2>{title}</h2> <slot /></section>CSS dengan baris panjang
Section titled “CSS dengan baris panjang”.rich-media-test { container-type: inline-size; display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(1rem, 2vw, 2rem);}
.rich-media-test :where(img, video, iframe, table, pre) { max-inline-size: 100%;}
@container (width < 42rem) { .rich-media-test { --pakrpp-test-density: compact; }}{ "route": "/test/rich-media/", "renderer": "starlight", "source": "obsidian-markdown", "checks": { "typography": true, "asides": true, "tables": true, "code": true, "media": true }}Terminal
Section titled “Terminal”npm run devnpm run buildnpm run verify✓ Content collection loaded✓ Rich media test route generated✓ Starlight asides rendered✓ Expressive Code renderedBaris sangat panjang
Section titled “Baris sangat panjang”Ini adalah satu baris yang sengaja dibuat sangat panjang untuk menguji horizontal overflow pada code block tanpa memaksa seluruh layout halaman melebar melebihi viewport perangkat.9. Details, disclosure, dan HTML ringan
Section titled “9. Details, disclosure, dan HTML ringan”Buka panel detail
Isi panel ini menguji elemen disclosure native. Fokus keyboard, indikator terbuka, animasi, dan spacing harus tetap jelas.
- Detail item pertama
- Detail item kedua
- Detail item ketiga
Panel yang terbuka secara default
Panel ini sengaja menggunakan atribut open.
Status: Ready for QA
10. Audio
Section titled “10. Audio”Audio di atas berasal dari aset contoh eksternal MDN. Untuk pengujian produksi, salin aset ke public/media/tests/ dan gunakan URL lokal.
Audio di atas berasal dari aset contoh eksternal MDN. Untuk pengujian produksi, salin aset ke public/media/tests/ dan gunakan URL lokal.
11. Video
Section titled “11. Video”12. Iframe responsif
Section titled “12. Iframe responsif”Sebagian website menolak iframe melalui X-Frame-Options atau CSP frame-ancestors. Apabila preview gagal, periksa apakah fallback, tinggi container, dan pesan browser tetap tidak merusak layout.
Sebagian website menolak iframe melalui X-Frame-Options atau CSP frame-ancestors. Apabila preview gagal, periksa apakah fallback, tinggi container, dan pesan browser tetap tidak merusak layout.
13. Link card versi Markdown
Section titled “13. Link card versi Markdown”Ringkasan pendek yang meniru pola kartu tautan tanpa membutuhkan komponen MDX. Gunakan bagian ini untuk menguji hover, focus-visible, dan visited state.
Kontak publik PakRPP untuk menguji tautan eksternal dan perilaku pada perangkat mobile.
14. Footnote
Section titled “14. Footnote”PakRPP menggunakan Obsidian/Markdown di Git sebagai sumber konten kanonis.1 Pendekatan ini menjaga artikel tetap portabel dan mudah diaudit.2
15. Karakter, bahasa, dan wrapping
Section titled “15. Karakter, bahasa, dan wrapping”Bahasa Indonesia: “Pengalaman membaca harus tenang, jelas, dan dapat diaudit.”
English: “The interface should feel responsive, layered, mechanical, and alive.”
Jawa: “Alon-alon waton kelakon,” digunakan di sini hanya sebagai sampel teks.
Teks tanpa spasi untuk menguji overflow:
pakrpp-rich-media-test-abcdefghijklmnopqrstuvwxyz-0123456789-abcdefghijklmnopqrstuvwxyz-0123456789
URL panjang:
16. Mermaid sebagai fallback code fence
Section titled “16. Mermaid sebagai fallback code fence”Blok berikut akan tampil sebagai code block biasa apabila integrasi Mermaid belum dipasang.
flowchart LR A[Obsidian Vault] --> B[Git Repository] B --> C[Astro Content Collection] C --> D[Starlight Renderer] D --> E[PakRPP Website]17. Rumus sebagai teks
Section titled “17. Rumus sebagai teks”Tanpa plugin matematika, ekspresi berikut tetap terbaca sebagai teks biasa:
- Inline:
E = mc² - Display:
F(x) = ∫₀ˣ f(t) dt - Statistik:
z = (x - μ) / σ
Tambahkan integrasi remark/rehype matematika hanya apabila memang menjadi kebutuhan konten PakRPP. Jangan menjadikan fixture ini alasan untuk menambah dependency produksi.
18. Empty state dan separator
Section titled “18. Empty state dan separator”Belum ada catatan tersimpan.
Simpan halaman ini untuk menguji state reader preferences dan saved reading.
19. Checklist QA manual
Section titled “19. Checklist QA manual”- Frontmatter tidak memicu schema error.
- Sidebar label dan order terbaca.
- Semua heading memiliki anchor yang stabil.
- Table of contents menampilkan hierarki yang benar.
- Asides Starlight memiliki ikon, warna, dan kontras yang benar.
- Callout Obsidian tidak merusak blockquote.
- Tabel dapat digeser pada viewport sempit.
- Code block tidak memperlebar layout.
- Tombol copy code dapat dioperasikan.
- Gambar lokal tidak mengalami layout shift.
- Alt text tersedia.
- Audio dan video dapat dioperasikan dengan keyboard.
- Iframe gagal dengan aman apabila diblokir.
- Focus-visible terlihat.
- Light mode dan dark mode lulus pemeriksaan visual.
- Print stylesheet tetap terbaca.
- Pagefind menemukan istilah “canonical source”.
- Reader preferences tidak menghilangkan elemen media.
- SFX tidak berbunyi saat sekadar scroll.
- Tidak ada error atau warning baru yang tidak dijelaskan di console.
20. Penutup
Section titled “20. Penutup”Apabila seluruh bagian halaman ini dapat dirender, dibaca, dinavigasi dengan keyboard, dan tetap stabil di mobile maupun desktop, kontrak rich media dasar PakRPP dapat dianggap lulus pemeriksaan awal.
Apabila seluruh bagian halaman ini dapat dirender, dibaca, dinavigasi dengan keyboard, dan tetap stabil di mobile maupun desktop, kontrak rich media dasar PakRPP dapat dianggap lulus pemeriksaan awal.