Chrome for Testing: הורדות אמינות לאוטומציה של הדפדפן

היום אנחנו שמחים להכריז על Chrome for Testing, גרסה חדשה של Chrome שמותאמת במיוחד לתרחישים לדוגמה של בדיקות של אפליקציות אינטרנט ואוטומציה. במאמר הזה מוסבר למה הצוות של Chrome החליט שזה נחוץ, ונציג דוגמאות מעשיות למקרים שבהם Chrome for Testing יכול להועיל לכם כמפתחים.

רקע

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

עדכון אוטומטי: מעולה למשתמשים, פוגע למפתחים

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

עם זאת, כמפתח שמפעיל חבילה של בדיקות מקצה לקצה, יכול להיות שיש לכם נקודת מבט שונה לגמרי:

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

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

גרסאות דפדפנים בינאריים

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

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

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

הפתרון: Chrome for Testing

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

כדי ליצור את Chrome for Testing, ביצענו שינויים בבסיסי הקוד של Chromium ו-Chrome והגדרנו תשתית ליצירה ולהעלאה של הקבצים הבינאריים האלה לקטגוריה שזמינה לכולם בשלב הנעילה, באמצעות תהליך ההשקה של Chrome בכל הערוצים (יציב, בטא, Dev ו-Canary).

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

איך מקבלים קבצים בינאריים של Chrome for Testing?

הדרך הקלה ביותר להוריד קבצים בינאריים של Chrome for Testing לפלטפורמה שלכם היא באמצעות כלי שורת הפקודה @puppeteer/browsers, שזמין דרך npm. ריכזנו כאן כמה דוגמאות:

# Download the latest available Chrome for Testing binary corresponding to the Stable channel.
npx @puppeteer/browsers install chrome@stable

# Download a specific Chrome for Testing version.
npx @puppeteer/browsers install chrome@116.0.5793.0

# Download the latest available ChromeDriver version corresponding to the Canary channel.
npx @puppeteer/browsers install chromedriver@canary

# Download a specific ChromeDriver version.
npx @puppeteer/browsers install chromedriver@116.0.5793.0

אם תעדיפו לפתח סקריפטים אוטומטיים משלכם להורדת הקבצים הבינאריים האלה, יעזרו לכם. אנחנו מציעים נקודות קצה ל-JSON API עם הגרסאות העדכניות ביותר שזמינות לכל ערוץ הפצה של Chrome (יציב, בטא, Dev, Canary). כדי לקבל סקירה כללית מהירה של הסטטוס העדכני ביותר, אפשר לעיין במרכז הבקרה לזמינות של Chrome for Testing.