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

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

შეხსენება ჩნდება ხანგრძლივი უსაქმური პერიოდის შემდეგ. ტესტი ელოდება მთელ პერიოდს. ეს აძვირებს კომპლექტს, ამიტომ ვინმე ამცირებს შეფერხებას სპეციალურ კონსტრუქციაში. ახლა ტესტი აღარ იყენებს დროის იგივე წესს. კონტროლირებადი ბრაუზერის დრო გთავაზობთ სხვა გზას, იმ პირობით, რომ შედეგი გულწრფელად არის დასახელებული.
ეს სახელმძღვანელო იყენებს Playwright-ის საათის დოკუმენტაციას მცირე ადგილობრივი შეხსენების შესამოწმებლად. მისი ვიზუალი არის გამოგონილი ათვლა და არა წარმოების სესია ან შესრულების საორიენტაციო ნიშანი. ჩვენ ვაკონტროლებთ დროს ბრაუზერის მხარეს არჩეული ქცევის გამოსაყენებლად. ჩვენ არ ვამტკიცებთ, რომ ამ საათის წინსვლა ცვლის დისტანციურ სერვერს, იწურება რეალურ ჟეტონზე ან ხელახლა ქმნის დაგეგმვის ყველა პირობას.
გამოყავით კედლის საათი ტაიმერისაგან
აპლიკაციას შეუძლია წაიკითხოს მიმდინარე თარიღი, დანიშნოს ვადის ამოწურვა ან განახლება ინტერვალში. ეს მექანიზმები დაკავშირებულია, მაგრამ ტესტმა უნდა იცოდეს, რომელი ამოძრავებს ქცევას. თარიღის ეტიკეტი, რომელიც ამბობს ხვალინდელ დღეს და გამოძახება, რომელიც ირთვება სამოცი წამში, განსხვავებული კონტრაქტებია.
Playwright საათის სახელმძღვანელო აღწერს დროის API-ების კონტროლს, თარიღის და ტაიმერების ჩათვლით. მისი ფიქსირებული დროის მეთოდი ცვლის მოხსენებულ დროს ტაიმერების წინსვლის გარეშე. საათის დაყენება უზრუნველყოფს უფრო ფართო კონტროლირებად დაყენებას. აირჩიეთ მეთოდი აპლიკაციის ფაქტობრივი წესიდან და არა იმ მაგალითიდან, რომელიც ყველაზე ადვილია ჩასმა.
ჩვენი დემოსთვის, გვერდი გეგმავს შეხსენებას setTimeout-ის მეშვეობით. დააინსტალირეთ კონტროლირებადი საათი გვერდის დროის კოდის დაწყებამდე. შემდეგ განზრახ გადაიტანეთ დარეკვის გრაფიკი:
await page.clock.install();
await page.setContent(`
<p role="status">Waiting</p>
<script>
setTimeout(() => {
document.querySelector('[role=status]').textContent = 'Reminder ready';
}, 60000);
</script>
`);
await page.clock.runFor(60000);
await expect(page.getByRole('status')).toHaveText('Reminder ready');სნიპეტი იყენებს ადგილობრივ HTML მოწყობილობას და იმპორტირებულ Playwright-ს. ეს არის მექანიზმის მაგალითი და არა სრული შეხსენების ფუნქცია. ტესტმა ასევე უნდა შეამოწმოს, რისი გაკეთება შეუძლია ადამიანმა შეხსენების გამოჩენის შემდეგ და რა ხდება, როდესაც ისინი უარყოფენ მას. დროის წინსვლა ვერ უზრუნველყოფს ამ პროდუქტის გადაწყვეტილებებს.
აირჩიეთ, როგორ იქცევა გამოტოვებული ზარები
საათის გზამკვლევი განასხვავებს წინსვლას ტაიმერებით გადახტომის დროისგან. წაიკითხეთ ეს განსხვავება დიდი ხნის ლოდინის შეცვლამდე. სისტემა, რომელიც ახლდება წამში ერთხელ, შეიძლება განსხვავებულად მოიქცეს, თუ ყოველი დაგეგმილი გამოძახება მუშაობს იმ ნახტომთან, რომელიც ახდენს ბრაუზერის გაღვიძების სიმულაციას პაუზის შემდეგ.
გამოიყენეთ runFor, როდესაც არჩეული სცენარი საჭიროებს წინსვლას დაგეგმილი გამოძახებით. განიხილეთ fastForward სხვა სცენარისთვის, რომელშიც დროის გამოტოვებული ქცევა მნიშვნელოვანია დოკუმენტირებული სემანტიკის შესაბამისად. არ განიხილოთ ორი ოპერაცია, როგორც ურთიერთშემცვლელი მხოლოდ იმიტომ, რომ ორივე მიაღწია მოგვიანებით. ტესტის სახელმა უნდა მიუთითოს, თუ რომელ სიტუაციას წარმოადგენს.
შეინახეთ პატარა კეისი საზღვრისთვის შეხსენების წინ და მეორე იმ წერტილისთვის, როდესაც ის უნდა გამოჩნდეს. განმეორებადი ტაიმერისთვის, დაამატეთ გამეორების წესი მხოლოდ იმ შემთხვევაში, თუ ფუნქცია ამას გვპირდება. ერთმა საბოლოო მტკიცებამ შეიძლება გამოტოვოს ადრეული შეხსენება ან რამდენიმე დუბლიკატი შეტყობინებები.
ბრაუზერის დრო არ არის სერვერის საათი
რეალური სესიის ვადა შეიძლება ამოიწუროს სერვერის პოლიტიკის შესაბამისად. ბრაუზერის საათის გადაადგილება ამ პოლიტიკას არ ცვლის. UI countdown შეიძლება ითქვას, რომ ვადა ამოიწურა, სანამ სერვერი კვლავ მიიღებს მოთხოვნას, ან სერვერს შეუძლია უარყოს იგი, სანამ UI შეამჩნევს. ეს არის სხვადასხვა მტკიცებულება ცალკე შესამოწმებლად.
ავთენტიფიცირებული ფუნქციისთვის დაადგინეთ არის თუ არა სიმართლის წყარო სერვერის პასუხი, ვადის გასვლის დრო თუ ლოკალური ტაიმერი. გამოიყენეთ დამტკიცებული ინსცენირების საშუალებები და კონტროლირებადი იდენტობები. არასოდეს შეცვალოთ პირდაპირი ანგარიშის სესია ან აპარატის სისტემური საათი უბრალოდ დროის ილუსტრაციული შემოწმების მოსახერხებლად.
დროის სარტყელი და ლოკალი კიდევ ერთი საზღვარია. ტაიმერის ტესტი ავტომატურად არ ამოწმებს კალენდარულ ვადას დღის განათების ცვლილებების ან ყველა ლოკალში ნაჩვენები თარიღის გარშემო. დაამატეთ ეს შემთხვევები რეალური მოთხოვნიდან, ვიდრე ერთი მწვანე შედეგის მნიშვნელობის გაფართოება.
დატოვეთ სასარგებლო დროის კონტრაქტი მიმომხილველებისთვის
ჩაწერეთ დროის წყარო, დაინსტალირებული მექანიზმი, საწყისი მდგომარეობა, წინასწარი მოქმედება და მოსალოდნელი საზღვარი. ეს მოკლე ჩანაწერი საშუალებას აძლევს თანაგუნდელს გაიგოს, რატომ არ სძინავს ტესტს ერთი წუთით და რა ქცევას იცავს იგი მაინც. თუ ტესტი მოგვიანებით ვერ მოხერხდა, გადაამოწმეთ, გადავიდა თუ არა აპლიკაციამ დრო სხვა ფენაზე, სანამ გაზრდის თვითნებურ ლოდინს.
AnyTest აღწერს აგენტებს, რომლებიც იკვლევენ აპლიკაციას და ქმნიან ბოლომდე ტესტებს ადამიანის განსახილველად. გამოიყენეთ დროის კონტრაქტი ნებისმიერი შემოთავაზებული ვადის გასვლის მოგზაურობის გადასახედად. ეს სახელმძღვანელო არ ამტკიცებს AnyTest საათის მართვის ფუნქციას ან მორბენალ ინტეგრაციას. უფრო სწრაფი ტესტები სასარგებლოა, როდესაც მალსახმობი ინახავს კითხვას და არა მაშინ, როდესაც ის ჩუმად ცვლის სხვა საათს.
საერთო კითხვები
იწურება თუ არა ბრაუზერის დრო სერვერის სესიაზე?
არა. ბრაუზერის საათი არ აკონტროლებს დისტანციური სერვერის საათს ან მის სესიის პოლიტიკას.
runFor და fastForward ურთიერთშემცვლელნი არიან?
არა. აირჩიეთ მათი დოკუმენტირებული გამოძახების ქცევა კონკრეტული დროის სცენარისთვის.