ক্রোমিয়াম ক্রনিকেল #21: ChromeOS এন্ড-টু-এন্ড UI অটোমেশন

পর্ব 21: মাউন্টেন ভিউ, CA (মে, 2021)-এ ব্রেন্ডন হ্যানস্কেচট দ্বারা
আগের পর্বগুলো

ঐতিহাসিকভাবে, ডিভাইসের পুরো ফ্লিট জুড়ে এন্ড-টু-এন্ড (E2E) পরীক্ষায় ChromeOS UI স্বয়ংক্রিয় করা কঠিন ছিল। Tast-এ, একটি নতুন UI লাইব্রেরি তৈরি করা হয়েছে যা ChromeOS UI নিয়ন্ত্রণ করতে Chrome a11y (অ্যাক্সেসিবিলিটি) ট্রি ব্যবহার করে৷ এই লাইব্রেরিটি বিকাশকারীদের যেকোন দৃশ্যমান UI পৃষ্ঠের (ChromeOS ডেস্কটপ UI, নেটিভ অ্যাপস, ওয়েব অ্যাপস, Chrome ব্রাউজার UI) এর বিরুদ্ধে সহজেই E2E পরীক্ষা তৈরি করতে সক্ষম করে।

লাইব্রেরিতে একটি UI উপাদান কীভাবে খুঁজে পাওয়া যায় তা বর্ণনা করার জন্য একটি সহজ, চেইনযোগ্য উপায় রয়েছে। উদাহরণস্বরূপ, ফাইল অ্যাপে ডাউনলোড ফোল্ডারটিকে এইভাবে সংজ্ঞায়িত করা যেতে পারে:

filesWindow := nodewith.NameStartingWith("Files")
  .ClassName("RootView").Role(role.Window)
downloadsButton := nodewith.Name("Downloads")
  .Role(role.TreeItem).Ancestor(filesWindow)

একবার আপনি একটি নোড ফাইন্ডার সংজ্ঞায়িত করলে, নোডের সাথে বিভিন্ন উপায়ে যোগাযোগ করা সম্ভব। সাধারণ ক্লিক থেকে ফোকাসের জন্য অপেক্ষা করা পর্যন্ত, UI লাইব্রেরি অনেক অপারেশনে স্থিতিশীল অ্যাক্সেস দেয় । উদাহরণস্বরূপ, ডাউনলোড ফোল্ডারে ডান ক্লিক করুন এবং অনুলিপি বোতামে বাম ক্লিক করুন, আপনি লিখতে পারেন:

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 */ }

সাধারণ UI এলাকায় (সেটিংস, লঞ্চার, ফাইল অ্যাপ, ইত্যাদি) চারপাশে বিদ্যমান মোড়ক রয়েছে।

উপরে ব্যবহৃত uiauto.Run ফাংশনটি কর্মের একটি তালিকা নেয়। এই প্রসঙ্গে, একটি কর্ম শুধুমাত্র একটি func(context.Context) error । এই ধরনের একটি সাধারণ API এর সাথে, অন্যান্য ধরণের ক্রিয়াগুলি UI ক্রিয়াগুলির সাথে মিশ্রিত করা যেতে পারে । উদাহরণস্বরূপ, কীবোর্ড ব্যবহার করা যতটা সহজ:

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 */ }

আরও গভীরতার গাইডের জন্য, দেখুন Codelab দেখুন: Chrome UI অটোমেশন

এই পরীক্ষাগুলি লেখার সময়, ডিবাগিংয়ের জন্য Chrome a11y ট্রি ডাম্প করা খুব দরকারী। এটি করার জন্য কেবল নিম্নলিখিত কোড যোগ করুন:

defer faillog.DumpUITreeOnError(ctx, s.OutDir(), s.HasError, tconn)
s.Fatal("I would like to see the ui tree here")

a11y ট্রি এখন faillog/ui_tree.txt হিসাবে অন্যান্য স্বাদ লগের সাথে সংরক্ষণ করা হবে

আপনার যদি কোন প্রশ্ন থাকে তাহলে স্বাদ-ব্যবহারকারী গোষ্ঠীর সাথে যোগাযোগ করুন।