Cypress E2E Test | تست به روش سایپرس پارت اول

مقدمه :امروزه خیلی از اپلیکیشن های دنیا دارن از automation تست های که در دنیا تست وجود داره استفاده میکنند یکی از این automation تست ها cypress هستش در این مقاله قصد دارم که یکم در مورد این ابزار دوست داشتنی صحبت کنم یکم در مورد اینکه اصلا چی هست چکار میکنه چه مشکلی از من برنامه نویس کم میکنه و اینکه مزایاش نسبت به رقیب هاش براتون بگم و همچنین معایبش رو و در اخر یک سری منبع برای یادگیری بهتر براتون اورده ام که خیلی شیک مجلسی این ابزار دوست داشتنی رو یاد بگیرید :) و از کار باهاش لذت ببرید پس در ادامه با من همراه باشید .توضیح :فرض کنید یک سایت طراحی کردین و کد نویسی کردین و با دقت فراوان هم پیاده سازیش کردین ایا در همه حالت ها اپلیکیشن شما جوابگو هست ؟ ایا اگر یک روزی اپلیکیشن شما به روزانه بالای یک میلیون درخواست رسید چطور ؟ ایا خودتون به تنهایی میتونید تمام حالت ها رو تست کنید ؟ یا تا حالا شده بخاین یک قسمت یک جای اپلیکیشن خودتون درست کنید بعد اینکه درستش کردین بگید اخ جون تموم شد ولی یهووو میبینی کلی ایشو اومد سمت شما که اینور درست کردی یک جای دیگ برنامه مشکل خوردن و تازه این میشه اول دردسر و به خودتون میگید ای کاش اصن شروعش نمیکردین که همچین مشکلاتی پیش بیاد ! پس قطعا جواب نه هستش البته میدونم هیچ چیز غیرممکن نیست اما سر این موضوع شاید باید خیلی وقت زمان بذارید که زمان وقت برامون ارزش داره پس باید کاری کنیم در کمترین زمان ممکن بهترین خدمات ارائه بدیم به کاربرامون پس به یک رفیق نیاز داریم رفیق ما کیه ؟ ابزار های تست که وجود داره که یکیش cypress هستش .فکر کنم دیگه متوجه شده باشید چکار میکنه برامون این ابزار های تست و بودنشون چه نعمت و نبودنشون چه افتضاحهمزایا Cypress : رایگان بودن Cypress و همچنین داشتن یک داکیومنت قدرت مند درون سایت خودش و همچنین یک جامعه بسیار خفن و بروز ( البته برای ایرانیا باید یکم خاص تر باشه چون تیم لید این ابزار قدرت مند ایرانی هستش آقای امیر رستم زاده هستن که در اینجا میتونید لینکدین ایشون رو ببینید ) رقیب این ابزار selenium هستش که نسبت به این ابزار cypress سرعتش خیلی بیشتره و همچنین یکی از مزایا cypress نسبت به این ابزار در ارتباط بدون مستقیم این ابزار با مرورگر هستش شما میتونید با این ابزار هم End 2 End تست بنوسید هم Unit test یکی دیگه از ویژگی های بینظیر این ابزار Time Travel هستش که میتونید به کمک این ویژگی از تمام اکشن های که رخ میده Snapshot تهیه کنید خطایابی بسیار سریع و آسان به لطف ویژگی بالا که براتون گفتم شما میتونید هر موقعه خواستید به Snapshot قبل یا بعد برید و از تمام اتفاقات باخبر بشید ویژگی بعدی assertion های که در درون Cypress وجود داره بسیار زیاد و کار راه اندازن و برای هر موقعیت هر زمان شما میتونید ازشون استفاده کنید که یکی از مزایا های که نسبت به ابزار selenium داره اینه که میتونید Http Request های که وجود داره برای هر صفحه رو مدیریت کنید که این فوق العادس :)به صورت Real Time تغییرات قابل مشاهده هستن یعنی اینکه شما بعد از هر تغییر میتونید تغییر به صورت زنده مشاهده کنید بدون رفرش :)ویژگی بعدی Cypress Dashboard هستش که نسخه رایگانش میتونه تا حد بسیار خوبی کارتون راه بندازه ویژگی اخرش تهیه Snapshot و Video Recorder در زمان تست CI CD هستش که میتونید از نحوه اجرا و باگ های احتمالی دیدن فرمایید :) و مشکلات برطرف کنید معایب Cypress : نبودن Xpath که این برای افرادی که Selector Css راجبش نمیدونند یکم مشکلات ایجاد میکنه پس یکی از پیش نیاز استفاده از Cypress یادگیری Selector Css هستش ساپورت نکردن از مرورگر Safari که نمیتونید کد خودتون رو این مرورگر تست کنید و این جز معایب بسیار بدش میتونه باشه ذخیره نکردن Auth State در اپلیکیشن هستش این یعنی اینکه نمیتونه اطلاعات Login Info رو ذخیره کنه و شما مجبوریم برای هر تست اول لاگین کنید سپس کار خودتون صورت بدید .مورد آخر Cypress روی سرویس Claude خیلی بازی در میاره و سخته یکم integration کنید اپلیکیشن تون اما اگر همون سرویس روی Self Host پیاده سازی کنید این مشکل برطرف میشه اینم بگم به غیر مورد دومی بقیه موارد چون Cypress از قابلیت Plugin بهره میبره میتونید هندل کنید پس جای نگرانی نیست :)منابع برای یادگیری : اولین منبع سایت خود Cypress هستش که میتونید کلی اطلاعات کسب کنید ازش دومین منبع گیت هاب خود Cypress هستش که کلی مثال زده از نحوه چطوری تست نوشتن در تمامی حالت که میتونه یک برگه تقلب خوبی براتون باشه .یک مورد اینکه یک دونه مخزن هست داخل خود گیت هاب Cypress که یک اپلیکیشن واقعی رو تیم خود Cypress اورده بالا و تمامی حالت های ممکن رو تست نوشتن که میتونید از این لینک مشاهده فرمایید . سخن اخر امیدوارم از این مقاله خوشتون اومده باشه و کلی چیز میز خوب ازش یادگرفته باشید این مقاله پارت اول اشنایی با Cypress بود که در ادامه قصد اینو دارم به صورت مقاله یا ویدیو یک سری اموزش ها در مورد این ابزار هم داشته باشیم .نظر و لایک فراموش نشه :)