Accessible Queries
Memilih query Testing Library berdasarkan role, label, dan accessible name sebelum memakai test id.
Tujuan belajar
- Memilih getByRole untuk control dan landmark yang dapat dikenali user
- Memakai accessible name pada button dan input
- Menghubungkan label dengan input agar query lebih bermakna
- Mengetahui kapan test id hanya menjadi fallback
Isi lesson
6 blok- 1.Query yang baik mengikuti cara user dan teknologi bantu menemukan UIBelum selesaiWajib
- 2.Cari form profile lewat role dan labelBelum selesaiWajib
- 3.Coding practiceBelum selesaiWajib
- 4.Cek pemahamanBelum selesaiWajib
- 5.Test id adalah fallback, bukan defaultBelum selesaiWajib
- 6.RingkasanBelum selesaiWajib
Query yang baik mengikuti cara user dan teknologi bantu menemukan UI
WajibTesting Library mendorong query berdasarkan semantic role, label, text, dan accessible name. Saat test menemukan button dengan getByRole button serta name Simpan profile, kamu sekaligus memeriksa bahwa button memiliki nama yang dapat dipahami user. Saat test menemukan input melalui label Email, hubungan label serta control juga ikut diuji. Test id masih dapat menjadi fallback untuk elemen yang tidak memiliki semantic query yang wajar, tetapi jangan menjadikannya pilihan pertama untuk button, form input, heading, atau alert.
Bagian ini memengaruhi progres lesson.
Cari form profile lewat role dan label
Wajibimport "@testing-library/jest-dom/vitest";
import { render, screen } from "@testing-library/react";
import { describe, expect, it } from "vitest";
function ProfileForm() {
return (
<form>
<label htmlFor="email">Email</label>
<input id="email" type="email" />
<button type="submit">Simpan profile</button>
</form>
);
}
describe("ProfileForm", () => {
it("exposes the email field and save action", () => {
render(<ProfileForm />);
expect(
screen.getByRole("textbox", { name: "Email" }),
).toBeInTheDocument();
expect(
screen.getByRole("button", { name: "Simpan profile" }),
).toBeInTheDocument();
});
});Role textbox dan button adalah cara yang dekat dengan pohon accessibility. name Email berasal dari label yang terhubung lewat htmlFor serta id. Bila label putus, query ini gagal dan mengungkap masalah yang juga akan mempersulit user keyboard atau screen reader.
Bagian ini memengaruhi progres lesson.
Coding practice
WajibDibuka di workspace khususTest profile form with accessible queries
Gunakan role dan accessible name untuk menguji input Email serta button Simpan profile tanpa test id. Preview tidak menjalankan test browser.
Tujuan awal: Fokus di tab TSX.
Practice ini dibuka di workspace khusus. Buka practice untuk memakai editor, preview, dan cek otomatis.
Tombol selesai aktif setelah semua validasi wajib lolos.
Cek pemahaman
WajibJawab duluCek pemahaman singkat
Untuk button dengan teks Simpan profile, query mana yang sebaiknya dicoba lebih dulu?
Progres lesson naik setelah jawaban benar.
Catatan penting
WajibTest id adalah fallback, bukan default
Gunakan test id ketika element tidak memiliki role, label, text, atau semantic query yang benar-benar cocok. Jika getByRole gagal pada control yang seharusnya mudah ditemukan, itu sering menjadi sinyal untuk memperbaiki markup atau accessible name, bukan alasan untuk segera menambah data-testid.
Bagian ini memengaruhi progres lesson.
Ringkasan
Wajib- getByRole dengan accessible name adalah pilihan awal untuk banyak control.
- Label yang terhubung membuat input dapat ditemukan serta lebih aksesibel.
- Query yang gagal dapat mengungkap masalah markup atau accessible name.
- Test id dipakai sebagai fallback saat semantic query tidak wajar.
- Berikutnya, Uji Kompetensi menyatukan mindset, unit test, component output, user event, dan accessible query.
Bagian ini memengaruhi progres lesson.
Langkah berikutnya
Selesaikan bagian penting lesson ini
Lanjutkan blok wajib berikutnya: Query yang baik mengikuti cara user dan teknologi bantu menemukan UI.