امروز خوشحالیم که Chrome for Testing را معرفی کنیم، یک نسخه جدید از Chrome که به طور خاص موارد استفاده از تست برنامههای وب و اتوماسیون را هدف قرار میدهد. این مقاله توضیح میدهد که چرا تیم Chrome احساس نیاز به این کار را کرد و مثالهای ملموسی را ارائه میدهد که Chrome for Testing میتواند برای شما به عنوان یک توسعهدهنده مفید باشد.
پیشینه
تست مرورگر، صرف نظر از اینکه به صورت دستی یا خودکار انجام شود، یک جزء حیاتی برای ایجاد یک تجربه وب با کیفیت بالا است. در عین حال، راهاندازی یک محیط تست مرورگر مناسب، به طرز چشمگیری دشوار است، به طوری که به طور مداوم به عنوان یک نقطه درد اصلی توسعهدهندگان وب گزارش میشود . امروز، ما تغییری را اعلام میکنیم که امیدواریم برخی از این درد را کاهش دهد.
بهروزرسانی خودکار: عالی برای کاربران، دردناک برای توسعهدهندگان
یکی از قابل توجهترین ویژگیهای کروم، قابلیت بهروزرسانی خودکار آن است. کاربران از اینکه میدانند از یک نسخه بهروز و امن مرورگر شامل ویژگیهای مدرن پلتفرم وب، ویژگیهای مرورگر و رفع اشکالات در هر زمان استفاده میکنند، خوشحال هستند.
با این حال، به عنوان یک توسعهدهنده که مجموعهای از تستهای سرتاسری را اجرا میکند، ممکن است دیدگاه کاملاً متفاوتی داشته باشید:
- شما میخواهید نتایج ثابت و تکرارپذیر در طول آزمایشهای مکرر داشته باشید - اما اگر فایل اجرایی یا باینری مرورگر تصمیم بگیرد که خود را بین دو اجرا بهروزرسانی کند، ممکن است این اتفاق نیفتد.
- شما میخواهید یک نسخه خاص از مرورگر را پین کنید و شماره نسخه آن را در مخزن کد منبع خود بررسی کنید، تا بتوانید کامیتها و شاخههای قدیمی را بررسی کنید و تستها را روی فایل باینری مرورگر از آن نقطه زمانی دوباره اجرا کنید.
هیچکدام از این موارد با یک مرورگر با قابلیت بهروزرسانی خودکار امکانپذیر نیست. در نتیجه، ممکن است نخواهید از نسخه معمولی کروم خود برای تست خودکار استفاده کنید. این همان عدم تطابق اساسی بین آنچه برای کاربران معمولی مرورگر خوب است و آنچه برای توسعهدهندگانی که تست خودکار انجام میدهند خوب است، میباشد.
فایلهای باینری مرورگر نسخهبندیشده
گذشته از بهروزرسانی خودکار، ممکن است پیدا کردن یک فایل باینری کروم با یک نسخه خاص برایتان دشوار بوده باشد. گوگل عمداً دانلودهای کروم نسخهبندیشده را در دسترس قرار نمیدهد، زیرا کاربران نباید به شماره نسخهها اهمیت دهند - آنها همیشه باید در اسرع وقت به آخرین نسخه بهروزرسانی شوند. این برای کاربران عالی است، اما برای توسعهدهندگانی که نیاز به تولید مجدد گزارش اشکال در نسخه قدیمیتر کروم دارند، دردناک است.
یک مثال خاصتر از این مشکل زمانی است که میخواهید از ChromeDriver برای خودکارسازی مرورگر استفاده کنید. نه تنها باید به نحوی فایل باینری کروم را دانلود کنید، بلکه به یک فایل باینری ChromeDriver با نسخه متناظر نیز نیاز دارید تا از سازگاری دو فایل باینری اطمینان حاصل شود.
از آنجایی که هیچ راه خوبی برای حل این مشکلات وجود ندارد، میدانیم که بسیاری از توسعهدهندگان به جای آن ، فایلهای باینری Chromium (نه Chrome) را دانلود میکنند، اگرچه این رویکرد دارای برخی نقصها است. اولاً، این فایلهای باینری Chromium به طور قابل اعتمادی در همه پلتفرمها در دسترس نیستند. ثانیاً، آنها جدا از فرآیند انتشار Chrome ساخته و منتشر میشوند و این امر، نگاشت نسخههای آنها به نسخههای واقعی Chrome که توسط کاربر ارائه میشوند را غیرممکن میسازد. ثالثاً، Chromium با Chrome متفاوت است.
راه حل: کروم برای آزمایش
کروم برای تست، نسخهای اختصاصی از کروم است که برای حل این مشکلات طراحی شده و کاربرد تست را هدف قرار میدهد، بدون بهروزرسانی خودکار، در فرآیند انتشار کروم ادغام شده و برای هر نسخه کروم در دسترس است. یک فایل باینری نسخهبندی شده که تا حد امکان به کروم معمولی نزدیک است، بدون اینکه تأثیر منفی بر کاربرد تست داشته باشد.
برای ایجاد کروم برای آزمایش، ما تغییراتی را در پایگاههای کد کرومیوم و کروم اعمال کردهایم و زیرساختی را برای ساخت و آپلود این فایلهای باینری در یک سطل عمومی، همگام با فرآیند انتشار کروم در تمام کانالها (پایدار، بتا، توسعهدهندگان و Canary) راهاندازی کردهایم.
زیرساخت اطراف Chrome for Testing فرصتهای جالبی فراتر از خود Chrome را فراهم میکند. به عنوان مثال، مشکلاتی که قبلاً در مورد یافتن یک فایل باینری Chrome و ChromeDriver منطبق ذکر کردیم، میتواند با ادغام فرآیند انتشار ChromeDriver در زیرساخت Chrome for Testing به طور کامل از بین برود. علاوه بر حل این مشکل که برای کاربر دردسرساز است، این امر همچنین انتشارهای ChromeDriver را با Chrome همسو میکند و فرآیند انتشار دستی ChromeDriver را از بین میبرد.
چگونه میتوانم کروم را برای آزمایش فایلهای باینری دریافت کنم؟
سادهترین راه برای دانلود فایلهای باینری Chrome برای پلتفرم شما، استفاده از ابزار خط فرمان @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 را با آخرین نسخههای موجود برای هر کانال انتشار کروم (پایدار، بتا، توسعهدهندگان، قناری) ارائه میدهیم. برای دریافت یک مرور سریع از آخرین وضعیت، به داشبورد در دسترس بودن کروم برای آزمایش مراجعه کنید.