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