הקדמה
בעת הרצת בדיקות Playwright בצינורות CI/CD, אי-התאמה בין גרסאות הדפדפנים המותקנים לחבילת Playwright עלולה לגרום לכשלים מתסכלים בבדיקות. בעיה נפוצה זו מתרחשת כאשר פקודת התקנת הדפדפן (npx playwright install
) משתמשת בגרסה שונה מזו המצוינת בתלויות הפייתון שלכם.
הפתרון המוצג במאמר זה מודגם בפרויקט הדוגמה שלי Playwright Python example project, שפותח בשיתוף עם אליאס שורוש.
הבעיה
בואו נבחן תרחיש טיפוסי: קובץ ה-pyproject.toml
שלכם מציין את גרסה 1.49.1
של Playwright,
אך הרצת npx playwright install --with-deps
מתקינה את הגרסה העדכנית ביותר 1.50
.
אי-התאמה זו מובילה לבעיות תאימות ולבדיקות שנכשלות.
מדוע זה קורה
- מקורות גרסה שונים: ל-Playwright עבור פייתון ולחבילת ה-npm של Playwright יש מחזורי שחרור נפרדים.
- עדכונים משתמעים:
npx playwright install
מביא את הגרסה העדכנית ביותר אלא אם צוין אחרת במפורש. - סביבת בדיקות לא עקבית: צינורות CI/CD עלולים להתקין תלויות לא תואמות, מה שמוביל לחוסר יציבות בבדיקות.
יישום הפתרון
ניתן למצוא את קוד הפתרון כאן.
- name: Install Playwright Browsers
run: |
PLAYWRIGHT_VERSION=$(grep -E '^playwright = "[^"]*"' pyproject.toml | sed -E 's/playwright = "([^"]*)"_$/\1/')
npx playwright@$PLAYWRIGHT_VERSION install --with-deps
בואו נפרט כיצד זה עובד:
-
חילוץ גרסה - שימוש ב-
grep
כדי למצוא את שורת גרסת Playwright בקובץpyproject.toml
-sed
מחלץ רק את מספר הגרסה ומאחסן אותו במשתנהPLAYWRIGHT_VERSION
. -
התקנת דפדפנים - שימוש בגרסה שחולצה עם
npx playwright@$PLAYWRIGHT_VERSION
- מבטיח שגרסת הדפדפן תואמת לגרסת החבילה.
שיקולים נוספים
1. ניהול תלויות
הפרויקט שלנו כבר ממנף את Poetry לניהול תלויות פייתון, מה שמקל על שמירת גרסאות עקביות בין סביבות הפיתוח המקומיות וסביבות ה-CI.
2. טיפול בשגיאות
שגיאות נפוצות עקב אי-התאמות בגרסאות עלולות להתרחש. בעת פתרון בעיות, בדקו גם את יומני ה-GitHub Actions וגם את יומני סביבת ה-Poetry המקומית. חפשו אי-התאמות בין גרסאות חבילת Playwright והדפדפנים.
3. הגנה לעתיד
כדי לשמור על עדכניות התלויות, אנו משתמשים ב-Renovate, שיוצר באופן אוטומטי בקשות משיכה (pull requests) כאשר גרסאות חדשות זמינות. זה מבטיח:
- התלויות נשארות מעודכנות.
- השינויים נבדקים כראוי לפני המיזוג.
מסקנה
ניהול עקביות גרסאות בין חבילות Playwright והדפדפנים הוא חיוני לאוטומציית בדיקות אמינה. על ידי חילוץ הגרסה מ-pyproject.toml
ושימוש בה להתקנת הדפדפנים, אנו מבטיחים שצינור ה-CI שלנו שומר על תאימות גרסאות ומפחית כשלים מיותרים בבדיקות.
בדיקות מהנות!