Episode 21: oleh Brendan Hansknecht di Mountain View, CA (Mei 2021)
Episode sebelumnya
Secara historis, mengotomatiskan UI ChromeOS dalam pengujian end-to-end (E2E) di seluruh perangkat menjadi sulit. Di Tast, pustaka UI baru telah yang menggunakan hierarki (aksesibilitas) Chrome untuk mengontrol UI ChromeOS. Ini library memungkinkan developer membuat pengujian E2E dengan mudah terhadap Platform UI (UI desktop ChromeOS, aplikasi native, aplikasi web, UI Browser Chrome).
Library ini memiliki cara yang sederhana dan dapat dirantai untuk menjelaskan cara menemukan elemen UI. Misalnya, folder Downloads di File App dapat ditetapkan sebagai:
filesWindow := nodewith.NameStartingWith("Files")
.ClassName("RootView").Role(role.Window)
downloadsButton := nodewith.Name("Downloads")
.Role(role.TreeItem).Ancestor(filesWindow)
Setelah menentukan pencari node, Anda dapat berinteraksi dengan {i>node<i} dengan banyak cara. Mulai dari klik sederhana hingga menunggu fokus, UI library memberikan akses yang stabil ke banyak operasi. Misalnya, ke kanan klik folder Downloads dan klik kiri tombol salin, Anda dapat menulis:
ui := uiauto.New(tconn)
if err := uiauto.Combine("copy downloads",
ui.RightClick(downloadsButton),
ui.LeftClick(nodewith.Name("Copy").Role(role.MenuItem)),
)(ctx); err != nil { /* do error handling */ }
Sudah ada wrapper seputar area UI umum (setelan, peluncur, aplikasi file, dll).
Fungsi uiauto.Run
yang digunakan di atas mengambil daftar tindakan. Di sini
konteks, tindakan hanyalah func(context.Context) error
. Dengan
sederhana, jenis tindakan lain dapat digabungkan dengan tindakan UI.
Misalnya, menggunakan {i>keyboard<i} semudah:
if err := uiauto.Combine("do some random stuff",
ui.FocusAndWait( /* some text field */ ),
kb.TypeAction("Hello, world!"),
kb.AccelAction("Enter"),
func(ctx context.Context) error {
// My custom action!
},
)(ctx); err != nil { /* do error handling */ }
Untuk panduan yang lebih mendalam, lihat Codelab Tast: Otomatisasi UI Chrome
Saat menulis pengujian ini, akan sangat berguna untuk membuang pohon a11y Chrome untuk proses debug. Cukup tambahkan kode berikut untuk melakukannya:
defer faillog.DumpUITreeOnError(ctx, s.OutDir(), s.HasError, tconn)
s.Fatal("I would like to see the ui tree here")
Pohon a11y sekarang akan disimpan dengan catatan log lainnya sebagai faillog/ui_tree.txt
Jika ada pertanyaan, hubungi grup pengguna Tast.