דלג לתוכן
חזור

אוטומציית בדיקות - האצת בדיקות עם Playwright Python באמצעות Local Storage

פורסם:

הקדמה

בעולם בדיקות יישומי הרשת, הזמן הוא המהות. הרצת בדיקות איטית עלולה לעכב באופן דרסטי את מחזור הפיתוח ולדחות את אספקת התוכנה האיכותית. אחד מצווארי הבקבוק הנפוצים בזרימות עבודה של בדיקות הוא הצורך לדמות אינטראקציות משתמש ולהגדיר שוב ושוב מצבי יישום ספציפיים. למרבה המזל, Playwright מציע פתרון רב עוצמה להתמודדות עם אתגר זה על ידי מינוף האחסון המקומי (local storage) של הדפדפן.

הפתרון המוצג במאמר זה מודגם בפרויקט הדוגמה שלי Playwright Python example project, שפותח בשיתוף עם אליאס שורוש.

הבעיה

יישומי רשת דורשים לעתים קרובות מהמשתמשים לבצע סדרה של אינטראקציות כדי להגיע למצב רצוי. במהלך הבדיקות, יש לדמות אינטראקציות משתמש אלו, מה שיכול להיות תהליך שגוזל זמן, במיוחד כאשר מתמודדים עם זרימות יישום מורכבות או מריצים בדיקות במקביל. לדוגמה, בדיקת יישום מסחר אלקטרוני עשויה לדרוש הדמיה של תהליך הוספת פריטים לעגלה, ניווט לדף התשלום ומילוי טפסים שונים. שחזור שלבים אלה עבור כל בדיקה יכול להוביל לזמני ריצה ארוכים משמעותית, ולהאט את תהליך הבדיקה הכולל.

יישום הפתרון

ניתן למצוא את קוד הפתרון כאן.

Playwright מספק דרך פשוטה לתקשר עם ה-localStorage של הדפדפן, ומאפשר לך להגדיר ולאחזר נתונים באופן תכנותי. על ידי מינוף יכולת זו, תוכל לייעל את זרימות העבודה של הבדיקות שלך ולהפחית משמעותית את זמני ביצוע הבדיקות על ידי דילוג על אינטראקציות משתמש מיותרות.

הנה דוגמה כיצד להגדיר ערך ב-localStorage באמצעות Playwright Python:

import pytest
from playwright.sync_api import Page, expect

from enums.User import User

class TestCheckout:

    @pytest.mark.parametrize(
        "browser_context_args", [User.STANDARD_USER], indirect=True
    )
    def test_checkout_counter(self, browser_context_args, page: Page):
        page.evaluate("localStorage.setItem('cart-contents', '[4,0]');")
        page.reload()
        expect(page.locator("data-test=shopping-cart-badge")).to_have_text("2")

בקטע קוד זה:

  1. הDecorator @pytest.mark.parametrize משמש להגדרת context הדפדפן עם משתמש ספציפי (במקרה זה, User.STANDARD_USER).
  2. בתוך test_checkout_counter, המתודה page.evaluate משמשת להרצת קוד JavaScript בתוך context הדפדפן, ומגדירה את הערך [4,0] עבור המפתח cart-contents ב-localStorage. זה מדמה מצב של שני פריטים בעגלה, ועוקף את הצורך באינטראקציות ידניות להוספת פריטים לעגלה.
  3. לאחר הגדרת ערך ה-localStorage, נקראת page.reload() כדי לרענן את הדף ולהבטיח שמצב היישום מתעדכן בהתבסס על נתוני ה-localStorage החדשים.
  4. לבסוף, מתבצעת בדיקה (assertion) כדי לוודא שתג עגלת הקניות מציג את הערך הצפוי “2”.

לסיכום

היכולת של Playwright לתקשר עם ה-localStorage של הדפדפן מספקת כלי רב עוצמה לאופטימיזציה של זרימות העבודה של הבדיקות שלך. אתה יכול לחסל אינטראקציות משתמש מיותרות על ידי הגדרת מצבי יישום באופן תכנותי דרך localStorage, מה שמוביל לזמני ביצוע בדיקות מהירים יותר. גישה זו משפרת את יעילות הבדיקות ומקלה על יצירת חבילות בדיקה מקיפות וחזקות יותר, ובסופו של דבר תורמת לאספקת תוכנה איכותית.

בדיקות מהנות!


הציעו שינויים

מוכנים לבנות את מפת הדרכים שלכם? נתחיל כאן


הפוסט הקודם
אוטומציית בדיקות - כיצד לקשר עקבות והקלטות וידאו של Playwright לדוח Allure באמצעות GitHub Actions
הפוסט הבא
אוטומציית בדיקות - בחירת אלמנטים יעילה עם Playwright Python באמצעות מזהי בדיקה