הקדמה
בנוף הדינמי של בדיקות תוכנה, מקסום יכולות הדפדפן הוא יותר מנוחות - זהו צורך אסטרטגי, חיוני לא רק לרגרסיה ויזואלית מקיפה אלא גם ללכידת הודעות שגיאה ופרטים חיוניים כאשר בדיקות נכשלות.
עיקרון זה מודגם ב-Pytest fixtures המסופקים כחלק מפרויקט הדוגמה שלי ב-Playwright Python, שפותח בשיתוף עם אליאס שורוש.
הבעיה
מה שמסבך את האתגר הוא בקשת תכונה קיימת בפרוייקט ה-GitHub של Playwright, משנת 2020, המדגישה את דרישת הקהילה לפונקציונליות מובנית של מצב מסך מלא. עם זאת, בקשה זו נותרה ללא מענה, ומשאירה פער ביכולות של Playwright שיש לטפל בו.
יישום הפתרון
ניתן למצוא את קוד הפתרון כאן.
@pytest.fixture(scope="session")
def browser_context_args(browser_context_args: Dict):
"""
Fixture to set browser context arguments.
See: https://playwright.dev/python/docs/api/class-browser#browser-new-context
Args:
browser_context_args (dict): Browser context arguments.
Returns:
dict: Updated browser context arguments.
"""
return {
**browser_context_args,
"no_viewport": True,
}
Fixture זה של Pytest נועד להגדיר את הארגומנטים עבור context דפדפן של Playwright, במיוחד בהקשר של session. בואו נפרט את הקוד:
-
@pytest.fixture(scope="session")
: זהו Decorator של Pytest המגדיר fixture, שהוא בעצם דרך להגדיר או להכין משאבים לפני הרצת בדיקות. הפרמטרscope="session"
אומר ש-fixture זה יבוצע פעם אחת לכל סשן בדיקות. -
browser_context_args
: זהו פרמטר המייצג את ארגומנטי ברירת המחדל של context הדפדפן. זוהי פרקטיקה נפוצה להעביר ארגומנטים קיימים של context ל-fixture כדי להרחיב או לשנות אותם. -
"no_viewport": True
: זה אומר ל-Playwright לא ליצור viewport עבור context הדפדפן, מה שמאפשר לו להיפתח במצב מסך מלא. -
שורת ההחזרה משלבת את ארגומנטי קונטקקסט הדפדפן הקיימים עם ארגומנט נוסף עבור ה-viewport. היא משתמשת בתחביר
**
(פירוק מילון) כדי למזג מילונים.
@pytest.fixture(scope="session")
def browser_type_launch_args(browser_type_launch_args: Dict):
"""
Fixture to set browser launch arguments.
See: https://playwright.dev/python/docs/api/class-browsertype#browser-type-launch
Args:
browser_type_launch_args (dict): Browser type launch arguments.
Returns:
dict: Updated browser type launch arguments.
"""
return {**browser_type_launch_args, "args": ["--start-maximized"]}
Fixture זה של Pytest נועד להגדיר את ארגומנטי ההפעלה עבור דפדפן Playwright, במיוחד בהקשר של session. בואו נפרט את הקוד:
-
@pytest.fixture(scope="session")
: זהו Decorator של Pytest המגדיר fixture, שהוא בעצם דרך להגדיר או להכין משאבים לפני הרצת בדיקות. הפרמטרscope="session"
אומר ש-fixture זה יבוצע פעם אחת לכל סשן בדיקות. -
browser_type_launch_args
: זהו פרמטר המייצג את ארגומנטי ברירת המחדל של הפעלת סוג-דפדפן. זוהי פרקטיקה נפוצה להעביר ארגומנטים קיימים של context ל-fixture כדי להרחיב או לשנות אותם. -
ה-fixture
browser_type_launch_args
מוסיף את הארגומנט--start-maximized
, מה שמבטיח שחלון הדפדפן יתחיל במצב ממוקסם עבור כל הבדיקות המשתמשות ב-fixture זה.
יחד, שילובי הגדרות אלה מאפשרים בדיקות במסך מלא עם Playwright Python ו-pytest.
לסיכום
מקסום יכולות הדפדפן חיוני לבדיקות תוכנה מקיפות, במיוחד בתרחישים הדורשים רגרסיה ויזואלית ולכידת הודעות שגיאה. למרות אתגרים קיימים כמו היעדר פונקציונליות מובנית של מצב מסך מלא בכלים כמו Playwright, פתרונות כמו ה-Pytest fixtures שהוצגו כאן מציעים דרך להתקדם. על ידי מינוף טכניקות כאלה, מהנדסי אוטומציה יכולים לשפר את תהליכי הבדיקה שלהם, לשפר את כיסוי הבדיקות ולהשיג הערכה יסודית יותר של איכות היישום.
בדיקות מהנות!