
Playwright یا Cypress؛ سرعت بدون جداسازی آزمونها دوام نمیآورد

برای مجموعهٔ بزرگ آزمونهای سرتاسری و CI چندمرورگری، Playwright نقطهٔ شروع مناسبی برای ارزیابی است: مستندات اجرای موازی Playwright میگوید فایلهای آزمون بهطور پیشفرض میان کارگرهای همزمان اجرا میشوند و آزمونهای داخل هر فایل بهترتیب پیش میروند. این مزیت زمانی پایدار میماند که اجراهای همزمان بر سر حساب، رکورد پایگاه داده یا فایل مشترک با هم برخورد نکنند؛ نشستهای جداگانهٔ مرورگر، دادهٔ پشت برنامه را جدا نمیکنند.
برای پروژهای کوچک که آزمونهایش در مرورگر هدف و با زمان قابلقبول تمام میشوند، انتخاب Cypress موجود نیز میتواند منطقی باشد. مهاجرت فقط به امید اجرای سریعتر، هزینهٔ بازنویسی و نگهداری را نادیده میگیرد. تصمیم میان دو ابزار باید به اندازهٔ مجموعه، مرورگرهای لازم، ظرفیت CI و امکان ساخت دادهٔ مستقل برای هر اجرای همزمان گره بخورد.
اندازهگیری مستقل دربارهٔ سرعت و منابع چه میگوید؟
در پژوهش منتشرشده در Journal of Computer Sciences Institute در سال ۲۰۲۵، پنج سناریوی یک برنامهٔ Angular در محیط محلی و بدون نمایش رابط مرورگر آزموده شد؛ هر سناریو در هر محیط مرورگر ۵۰ بار اجرا شد و Playwright در همهٔ سناریوها زمان اجرای کوتاهتری داشت. مصرف حافظهٔ آن نیز کمتر و مصرف CPU آن اندکی بیشتر بود. پراکندگی زمان اجرا در نتایج Playwright کمتر ثبت شد.
محدودهٔ این نتیجه مهم است: آزمایش روی یک برنامه و یک دستگاه انجام شد، نه روی خط لولهٔ CI تیمهای مختلف. «پایداری» در این پژوهش عمدتاً به پراکندگی زمان اجرا و شاخصهای مصرف منابع مربوط است؛ از آن نمیتوان نرخ شکستهای ناپایدار یک مجموعهٔ واقعی را نتیجه گرفت. زمان راهاندازی محیط، تعداد ماشینها و برخورد دادههای همزمان نیز میتوانند نسبت زمان کل دو پیکربندی را تغییر دهند.
پژوهشگران برای قابلتکرار شدن اجراها، راهی برای بازنشانی دادهٔ برنامه پیش از آزمون فراهم کردند. همین جزئیات نشان میدهد که اندازهگیری سرعت به وضعیت داده نیز وابسته است: اگر یک سناریو نتیجهٔ سناریوی قبلی را به ارث ببرد، تکرار آزمون دیگر همان شرایط اولیه را ندارد. بازنشانی داده پیش از هر اجرا برای چنین آزمایشی مفید بود، اما در اجرای موازی باید مراقب بود بازنشانی یک کارگر دادهٔ کارگر دیگر را پاک نکند.
موازیسازی در Playwright و Cypress چگونه کار میکند؟
در Playwright واحد پیشفرض اجرای موازی فایل آزمون است. کارگرها فرایندهای جداگانهاند و هرکدام مرورگر خود را راه میاندازند؛ میتوان شمارشان را محدود کرد یا آزمونهای مستقلِ داخل یک فایل را نیز موازی اجرا کرد. بنابراین طولانی ماندن یک فایل، حتی وقتی فایلهای دیگر تمام شدهاند، میتواند پایان کل مجموعه را عقب بیندازد. افزایش شمار کارگرها هم فقط تا جایی سود دارد که ظرفیت ماشین و سرویسِ تحت آزمون پاسخگو باشد.
در راهنمای موازیسازی Cypress Cloud نیز تقسیم کار بر پایهٔ فایل آزمون است، اما Cloud فایلها را میان ماشینهای CI توزیع میکند. این اجرای هماهنگشده به ضبط اجرا و ماشینهای آماده در CI نیاز دارد؛ ترتیب اجرای فایلها در حالت موازی تضمین نمیشود. پس تیمی که از قبل جریان ضبط و گزارشگیری Cloud دارد، باید ارزش همان جریان کاری را کنار زمان و هزینهٔ ماشینها بسنجد.
مرز فایل در هر دو ابزار بر زمان پایان اثر میگذارد، ولی سازوکار توزیع یکسان نیست. یک فایل بسیار طولانی را نمیتوان با افزودن ماشین به چند فایل مستقل تبدیل کرد؛ در مقابل، خرد کردن بیدلیل سناریوها نیز سربار راهاندازی و هماهنگی ایجاد میکند. مقایسهٔ سرعت زمانی معنا دارد که زمان کل CI، شمار منابع همزمان و مدت انتظار تا آخرین فایل در هر پیکربندی مشخص باشد.
چرا دادهٔ مشترک مزیت سرعت را فرسوده میکند؟
فرض کنید دو آزمون همزمان با یک حساب وارد شوند: یکی رمز آن را تغییر دهد و دیگری بخواهد با رمز قبلی وارد شود. موفقیت آزمون دوم به ترتیب رخدادها وابسته میشود، نه فقط به درستی برنامه. همین برخورد میتواند برای رکورد سفارش، موجودی، تنظیمات عمومی یا مسیر فایل خروجی رخ دهد. جدایی کوکیها و حافظهٔ مرورگر جلوی تغییر یک رکورد مشترک در پایگاه داده را نمیگیرد.
راهحل به نوع منبع بستگی دارد. برای رکورد و حساب قابلساخت، شناسهٔ یکتا برای هر آزمون یا کارگر، همراه با پاکسازی دادهٔ متعلق به همان اجرا، برخورد را کم میکند. اگر چند آزمون عمداً از یک مجموعهٔ دادهٔ فقطخواندنی استفاده میکنند، تکثیر آن ضرورتی ندارد؛ مسئله زمانی آغاز میشود که یکی از اجراها آن را تغییر دهد. منبعی که قابل تکثیر نیست به محدود کردن دسترسی همزمان نیاز دارد و همان محدودیت بخشی از هزینهٔ واقعی سرعت است.
این هزینه فقط به زمان نوشتن دادهٔ اولیه محدود نمیشود. پس از شکست آزمون نیز باید معلوم باشد کدام اجرا چه چیزی ساخته یا تغییر داده است تا پاکسازی، کار اجرای دیگری را خراب نکند. آزمونی که به اثر آزمون قبلی وابسته است شاید در اجرای ترتیبی آرام به نظر برسد، اما با تغییر ترتیب فایلها یا تقسیم مجموعه میان ماشینها رفتار متفاوتی نشان میدهد. نگهداری یک مجموعهٔ سریع، نگهداری همین مرزهای داده را هم شامل میشود.
پوشش مرورگرها چه زمانی انتخاب را عوض میکند؟
مستندات مرورگرهای Playwright اجرای آزمون در Chromium، Firefox و WebKit را از طریق پروژههای جداگانه توضیح میدهد. برای تیمی که باید یک مسیر کاربر را در چند موتور مرورگر اجرا کند، این ساختار روشن است. بااینحال، WebKit مورد استفادهٔ Playwright خودِ نسخهٔ دارای نشان Safari نیست؛ ویژگیهای وابسته به سیستمعامل، مانند برخی کدکهای رسانهای، ممکن است میان محیط CI و دستگاه کاربران فرق کنند.
فهرست مرورگرهای Cypress خانوادهٔ Chrome، Edge و Firefox را پشتیبانیشده و WebKit را آزمایشی معرفی میکند. اگر پوشش WebKit شرط پذیرش محصول باشد، این وضعیت در ارزیابی ابزار اثر مستقیم دارد. اگر کاربران محصول به مرورگرهای دیگر محدودند، افزودن یک موتور مرورگر صرفاً برای کاملتر شدن فهرست، زمان اجرا و کار بررسی شکستها را افزایش میدهد.
انتخاب برای سه وضعیت رایج
- پروژهٔ کوچک با CI ساده: اگر Cypress موجود آزمونهای قابلاعتماد را در مرورگرهای لازم و زمان قابلقبول اجرا میکند، حفظ آن انتخاب معقولی است. نتیجهٔ آزمایش روی یک برنامهٔ دیگر بهتنهایی هزینهٔ مهاجرت را توجیه نمیکند.
- CI چندمرورگری: Playwright را در اولویت ارزیابی بگذارید، بهویژه وقتی اجرای یک مسیر در موتورهای مرورگر متفاوت لازم است. معیار تصمیم، مرورگرهایی است که محصول باید پشتیبانی کند و نتیجهٔ اجرای همان سناریوها در محیط CI خود تیم.
- مجموعهٔ بزرگ و طولانی: ابتدا مشخص کنید فایلها چگونه میان کارگرها یا ماشینها تقسیم میشوند و کدام آزمونها داده را تغییر میدهند. سپس زمان پایان کل خط لوله، مصرف منابع و شکستهای وابسته به ترتیب اجرا را در پیکربندی واقعی هر گزینه بسنجید. ابزاری که آزمون منفرد را سریعتر تمام میکند، لزوماً مجموعهٔ وابسته به دادهٔ مشترک را زودتر به نتیجهٔ قابلاعتماد نمیرساند.
بیشتر بخوانید:
مقالات مرتبط


SQLite یا PostgreSQL؛ یک نویسنده سریع است، ۱۶ نویسنده برنده را عوض میکنند

Signal یا Telegram؛ رمزنگاری پیشفرض مهمتر از فهرست امکانات است

Jitsi یا Google Meet؛ اینترنت ضعیف تنها معیار انتخاب نیست

حذف My Activity کافی نیست؛ تاریخچهٔ Chrome و Timeline جدا میماند

Codex یا Claude Code؛ سرعت بیشتر در برابر کنترل مجوزها
عضویت در خبرنامه
تازهترین اخبار Web3، هوش مصنوعی و رمزارز را مستقیم در صندوق ایمیل خود دریافت کنید.