اجرای آزمایشهای برنامهریزی شده بین مرورگرهای سرتاسر در Github CI

این یک پست کوتاه خواهد بود، اولین سال 2020! دیر کردن بهتر از هرگز نرسیدن است، درست است؟
ممکن است در برخی از پست های قبلی من متوجه شده باشید که من عاشق تست کردن هستم و دوست دارم از Cypress به عنوان راهی برای اجرای تست های پایان به انتها استفاده کنم. من هیجان زده بودم که فهمیدم آنها پشتیبانی از فایرفاکس را اضافه کردند، که یکی از ویژگی های اصلی است که برای استفاده از آن در یک محیط حرفه ای وجود نداشت.
همچنین همیشه میخواستم مطمئن شوم که پروژههای شخصی که روی آنها کار میکنم، در هر مرورگر بهطور خودکار به صورت هفتگی، از جمله این وبلاگ، به خوبی کار میکنند. به همین دلیل است که من این گردش کار کوچک را در Github برای انجام این کار ایجاد کردم و میخواستم آن را با همه شما به اشتراک بگذارم زیرا ممکن است برای برخی افراد مفید باشد.
تست بین مرورگرهای محلی
قبل از اجرای یک کار خودکار CI، باید مطمئن شویم که آزمایشهای سرتاسر موجود ما به صورت محلی اجرا میشوند. اگر Cypress را به آخرین نسخه آن به روز کنید (4.0.2 همانطور که من این کلمات را می نویسم) و کروم، فایرفاکس و مایکروسافت اج را روی دستگاه خود نصب کرده اید، ممکن است هنگام شروع به کار متوجه یک منوی کشویی کوچک در گوشه سمت راست بالای پنجره Cypress شوید. cypress open، لیستی از مرورگرها را به شما می دهد تا آزمایشات خود را روی آنها اجرا کنید:
اکنون میتوانیم این آزمایشها را اجرا کنیم و قبل از اینکه به مراحل بعدی برویم، تأیید کنیم که همه چیز موفق است.
افزودن وظایف خودکار برای اجرا در هر درخواست کششی با گردش کار Github بسیار آسان است. با این حال، آنچه ما می خواهیم در اینجا انجام دهیم کمی متفاوت است. ما احتمالاً قبلاً کارهای خودکاری داریم که آزمایشهای سرو ما را برای هر روابط عمومی اجرا میکنند و آنها را روی هر مرورگر پشتیبانیشده اجرا میکنند، به علاوه ممکن است کمی بیش از حد باشد و ممکن است هزینههای CI را افزایش دهد. بنابراین، گردشهای کاری Github زیر فقط به صورت هفتگی اجرا میشوند، که گزینهای است که Github اجازه میدهد:
گردش کار هفتگی Github برای آزمایش مرورگرهای مختلف
1
name: Weekly cross-browser testing10
runs-on: ubuntu-latest12
image: cypress/browsers:node12.16.1-chrome80-ff7315
- name: Checkout Commit16
uses: actions/checkout@v117
- name: Firefox Browser Tests18
uses: cypress-io/github-action@v122
wait-on: 'http://localhost:8000'24
config: defaultCommandTimeout=100000,pageLoadTimeout=100000,watchForFileChanges=false,video=false25
- name: Chrome Browser Tests26
uses: cypress-io/github-action@v130
wait-on: 'http://localhost:8000'32
config: defaultCommandTimeout=100000,pageLoadTimeout=100000,watchForFileChanges=false,video=false
در قطعه کد بالا، می بینیم که به جای اجرای این اکشن “در فشار”، آنها را “بر اساس یک برنامه زمان بندی” با دستور cron که اجرا را هر دوشنبه در ساعت 12 بعد از ظهر تنظیم می کند، اجرا می کنیم. من از Crontab Guru همانطور که در Github Docs پیشنهاد شده است برای ایجاد عبارت برنامه زمانی cron درست استفاده کردم.
وقتی به زمان برنامه ریزی شده رسید، این گردش کاری Github با مراحل زیر راه اندازی می شود:
-
بررسی آخرین commit (این کار در شاخه اصلی انجام می شود) (L16)
-
شروع پروژه (L21 و L 29)
-
تست های سرتاسر فایرفاکس را اجرا کنید
-
تست های سرتاسری را در کروم اجرا کنید
برای دو مرحله آخر استفاده می کنیم cypress-io/github-action@v1 که به اجرای Cypress در گردشهای کاری Github با پیکربندی کمی یا بدون نیاز به غیر از تنظیم مرورگری که میخواهیم آزمایشها را روی آن انجام دهیم اجازه میدهد (به L20 و L28 مراجعه کنید). با این حال، باید مشخص کنیم که می خواهیم از آن استفاده کنیم cypress/browsers (به L11-12 مراجعه کنید) تصویر Docker برای این گردش کار، زیرا در تنظیمات پیشفرض Github CI به نظر نمیرسد فایرفاکس را شامل شود.

اکنون که این وظیفه هفتگی خودکار جدید پیادهسازی شده است، میتوانیم مطمئن شویم که پروژههای ما همانطور که انتظار میرود کار میکنند و بدون توجه به اینکه از کدام مرورگر استفاده میشود، بهترین تجربه کاربری را تضمین میکنیم.
قبل از اینکه چنین کار برنامه ریزی شده ای را به پروژه خود اضافه کنید، به یاد داشته باشید که در حین نوشتن این کلمات، پشتیبانی فایرفاکس از Cypress هنوز در مرحله بتا است، بنابراین این پست فقط آنچه را که من در این مرحله “تجربی” می دانم را نشان می دهد. قبل از تولید این محصول باید کمی صبور باشیم. اگر می خواهید این گردش کار را در عمل ببینید، من در حال حاضر از آن در برخی از مخازن منبع باز خود استفاده می کنم، برای مشاهده نمونه اینجا را کلیک کنید.
منابع بیشتر برای راه اندازی Cypress در Github CI:



