QA The Other Wayხარისხის უზრუნველყოფა AI-ის მიერ დაწერილი ტესტების ეპოქაში. QA The Other Way.
პრაქტიკული QA

დიალოგის პასუხი დაწკაპებამდე განსაზღვრეთ.

ბრაუზერის დადასტურებას გააზრებულად უპასუხეთ და მიღებისა და გაუქმების რეალური შედეგები შეამოწმეთ.

6 კითხვა: წუთიQA The Other Way
ავტორის დადასტურების სქემა მიღებისა და გაუქმების ცალკე შედეგებით.
ავტორის სარედაქციო ილუსტრაცია.
საილუსტრაციო ვიდეო ამ სტატიისთვის. ინგლისური ტექსტი ეკრანზე; აირჩიეთ სუბტიტრები ამ ენისთვის.

ნათარგმნი გამოცემა. ტექნიკური იდენტიფიკატორები რჩება თავდაპირველ ფორმაში.

ბრაუზერის დადასტურებას გააზრებულად უპასუხეთ და მიღებისა და გაუქმების რეალური შედეგები შეამოწმეთ.
ლოკალური მაგალითი გამოგონილი მონაცემებით, არა კლიენტის ან მომწოდებლის ინტერფეისი.

ტესტი დემო მონახაზის წაშლას აჭერს. ბრაუზერის დადასტურება ჩნდება. დამმუშავებელი ტექსტს წერს და აღარაფერს აკეთებს. დაწკაპება არ სრულდება: აპლიკაცია პასუხს ელოდება და არა სხვა ლოდინის დროს. პასუხის გარეშე დაკვირვებამ მარტივი სცენარი შეიძლება გააჩეროს.

გზამკვლევი მიჰყვება Playwright-ის დიალოგების დოკუმენტაციას გამოგონილ ლოკალურ მონახაზზე. რეალური დოკუმენტი არ იშლება და სერვერზე მოთხოვნა არ მიდის. მოწმდება confirm-ის ორივე პასუხი და ხილული შედეგი. პასუხის წესი გახსნამდე ირჩევა.

ბრაუზერის დადასტურება გვერდის მოდალური ფანჯარა არ არის

JavaScript confirm ბრაუზერის ინტერფეისია და არა HTML ელემენტი, რომელსაც getByRole დააჭერს. აპლიკაციის მოდალური ფანჯარა განსხვავებულია: მას შეიძლება დიალოგის როლი და ჩვეულებრივი ღილაკები ჰქონდეს. ჯერ მექანიზმი განსაზღვრეთ.

დამმუშავებლის გარეშე Playwright ბრაუზერის დიალოგებს ავტომატურად უარყოფს. რეგისტრირებულმა დამმუშავებელმა კი უნდა მიიღოს ან უარყოს დიალოგი. მხოლოდ ტექსტის ჩაწერამ მოქმედება შეიძლება დაბლოკოს. ამიტომ დიაგნოსტიკის დამატება ტესტის ქცევას ცვლის.

პასუხი მოქმედებამდე დაარეგისტრირეთ

დამმუშავებელი დაწკაპებამდე დაამატეთ. ერთი მოსალოდნელი დიალოგისთვის ერთჯერადი დამმუშავებელი გამოიყენეთ და პასუხი კოდში მკაფიოდ მიუთითეთ. გაუქმებისას მონახაზი უნდა დარჩეს:

let observed;
page.once('dialog', async dialog => {
  observed = { type: dialog.type(), message: dialog.message() };
  await dialog.dismiss();
});
await page.getByRole('button', { name: 'Remove demo draft' }).click();
expect(observed).toEqual({ type: 'confirm', message: 'Remove demo draft?' });
await expect(page.getByRole('status')).toHaveText('Demo draft kept');

მაგალითს კონტროლირებული გვერდი და შემოტანილი expect სჭირდება. დამმუშავებელი ჯერ პასუხობს, შემდეგ ტესტი ტიპსა და შეტყობინებას ამოწმებს. დამმუშავებლის შიგნით ჩავარდნილი შემოწმება უპასუხო დიალოგს აღარ დატოვებს.

ნებადართული მიღებისთვის დაამატეთ ახალი accept()-დამმუშავებელი, სუფთა მაგალითზე გაიმეორეთ და ლოკალური მდგომარეობა შეამოწმეთ. სხვადასხვა სცენარში ყველა დიალოგის მიღების წესი არ გადაიტანოთ. მომავალმა დადასტურებამ შეიძლება სხვა საზიანო მოქმედება მოითხოვოს და ჩუმად მიიღოს თანხმობა.

გაუქმებას პროდუქტის მოლოდინი სჭირდება

უარყოფა გაგზავნილ პასუხს ამტკიცებს და არა აპლიკაციის მიერ მის დაცვას. შეამოწმეთ მონახაზის არსებობა და შემდეგი სასარგებლო მოქმედება. რეალურ პროდუქტში დაამატეთ მხარდაჭერილი მტკიცებულება, რომ სერვერის ჩანაწერი არ წაიშალა.

მიღებაც იმავე სიზუსტეს მოითხოვს. დადასტურების გაქრობა წაშლას არ ამტკიცებს. განსაზღვრეთ ჩანაწერი, ნებადართული გარემო და საბოლოო შედეგი. მაგალითი მხოლოდ სტატუსს ცვლის, ამიტომ სურათი სერვერის ეფექტს ვერ ადასტურებს.

მოულოდნელმა დიალოგმა გასაგები ჩავარდნა უნდა გამოიწვიოს და არა ფართო დამმუშავებლით გაქრეს. განსხვავების გასაგებად კონტექსტი შეინახეთ, მაგრამ კერძო ტექსტი არ გამოაქვეყნოთ. შეტყობინებაში შეიძლება ჩანაწერის სახელი ან ანგარიშის მონაცემები იყოს.

დამმუშავებლის ხანგრძლივობა შეზღუდეთ

on()-დამმუშავებელი მოხსნამდე ან გვერდის დახურვამდე აქტიურია. ეს განზრახ მიმდევრობას შეიძლება შეეფერებოდეს, მაგრამ ტიპები, ტექსტები და პასუხები ჩამოთვალეთ. once() ერთ მოსალოდნელ დიალოგს უკეთ გამოხატავს.

Prompt მიღებისას შეყვანილ მნიშვნელობას ამატებს. beforeunload-ს საკუთარი დოკუმენტირებული დამუშავება და დახურვის პარამეტრები აქვს. confirm-ის მაგალითი მათ ავტომატურად არ ფარავს. ნაკრების გაზრდამდე შესაბამის API-ს გაეცანით.

შედეგის ჩანაწერი მოკლე შეიძლება იყოს: მოსალოდნელი ტექსტი, გაუქმება ინარჩუნებს, ნებადართული მიღება შლის, სერვერის მტკიცებულება ცალკეა. ეს მხოლოდ გამოჩენის დროის ჟურნალზე სასარგებლოა.

AnyTest აპლიკაციის კვლევის შემდეგ განსახილველ ტესტებს აღწერს. იკითხეთ, სცენარი კონკრეტულ დადასტურებას პასუხობს თუ ყველაფერს იღებს. AnyTest-ის დიალოგების ფუნქცია აქ არ არის დაპირებული. გააზრებული პასუხი ტესტის მნიშვნელობას იცავს, შემდგომი შემოწმება კი ფუნქციას.

საერთო კითხვები

რატომ აჩერებს დაწკაპებას მხოლოდ ჟურნალში ჩამწერი დამმუშავებელი?

ბრაუზერის დიალოგი გვერდს ბლოკავს. რეგისტრირებულმა დამმუშავებელმა უნდა მიიღოს ან უარყოს იგი.

დადასტურების დახურვა მოქმედ გაუქმებას ამტკიცებს?

არა. შეამოწმეთ შენარჩუნებული მდგომარეობა და საჭიროებისას სერვერის მტკიცებულება.

წყაროები