برنامه نویسی

Cypress – 7 ویژگی من آرزو می کنم دونده تست بومی داشته باشد (و چگونه در اطراف آنها کار کنیم)

Cypress یکی از بهترین ابزارهای آزمایش پایان به پایان ، ارائه یک تجربه سریع و سازگار با توسعه دهنده با انتظار داخلی ، API بصری و قابلیت های اشکال زدایی عالی است. با این حال ، مانند هر ابزاری ، محدودیت های خود را دارد. برخی از این تصمیمات طراحی عمدی است ، در حالی که برخی دیگر مانند مواردی که باعث بهبود چشمگیر دونده آزمون بومی می شود ، احساس می کنند.

خوشبختانه ، جامعه قوی سرو ، افزونه ها ، راه حل ها و بهترین شیوه ها را برای کمک به غلبه بر این چالش ها ایجاد کرده است. در زیر ، هفت ویژگی را که آرزو می کنم سرو به طور بومی و راه های کار در اطراف این کاستی ها باشد ، ترسیم می کنم.


1. اجرای تست موازی (بدون ابر سرو)

Cypress از اجرای تست موازی پشتیبانی می کند ، اما تنها در صورت استفاده از سرویس Cypress Cloud. در حالی که Cypress Cloud یک ویژگی خارق العاده و پر هزینه است که یک داشبورد بصری نرم و صاف را برای اشکال زدایی بهبود یافته ، تجزیه و تحلیل و سلامت کلی تست فراهم می کند ، موازی سازی همراه با این سرویس مانند یک متغیر غیر ضروری در دنیای تست امروز است. با توجه به سایر رقبای تست اصلی که این ویژگی را خارج از جعبه ارائه می دهند و با توجه به اینکه تست های اجرای اهمیت بالا به طور همزمان چقدر است ، این محدودیت یک مسدود کننده بزرگ برای بسیاری از تیم ها است. خوشبختانه ، راه حل های افزونه ای برای دستیابی به اجرای تست موازی بدون ابر وجود دارد.

راه حل ها:


2. فیلتر تست گسترده

دستورات CLI CYPRESS بومی فقط اجازه می دهد تا توسط پرونده های خاص فیلتر شود ، به این معنی که هیچ روش داخلی برای برچسب زدن یا تست های فیلتر بر اساس نام تست یا برچسب هایی مانند وجود ندارد @smoke یا @regressionبشر این امر برای کسانی که می خواهند از سازماندهی مشخصات و پوشه های آزمایش خود به طور کامل بر اساس اجرای آزمایش جلوگیری کنند ، محدود کننده است. علاوه بر این ، تیم ها ممکن است نیاز به اجرای زیر مجموعه های آزمایش در همان پرونده مشخص در نقاط مختلف در چرخه توسعه نرم افزار داشته باشند. یک بار دیگر ، افزونه هایی برای کمک به دستیابی به این هدف وجود دارد.

راه حل ها:

  • افزونه @cypress/grep را نصب کنید تا فیلتر بر روی عناوین یا برچسب ها را فعال کنید
  • افزونه Cypress-grep را نصب کنید. شبیه @cypress/grep اما بیشتر به روز می شود.
  • افزونه Cypress-Cli-Select را نصب کنید تا به راحتی مشخصات خاص را بر اساس پرونده ، نام یا برچسب در CLI اجرا کنید. ساخته شده از cypress-grepبشر

3. فیلتر دونده تست (فیلتر زنده در UI)

با ادامه روند فیلتر ، هیچ راهی آسان برای اجرای یک تست واحد یا گروهی از تست ها در خود دونده تست وجود ندارد. راه حل این امر این است که وارد کد خود شوید و اضافه کنید .only به it یا describe روش ها اما این نیاز به عقب و جلو بین دونده آزمون و کد دارد. برای کسانی که مهندسان غیر QA را ترغیب به انجام آزمایشات Cypress به صورت محلی می کنند ، داشتن راهی برای فیلتر کردن آزمایش بدون دانستن کد آزمایش مفید است. به سادگی ، Runner Test روشی مبتنی بر UI برای فیلتر کردن تست ها به صورت پویا هنگام اجرای آنها ارائه نمی دهد.

راه حل ها:

  • افزونه Cypress-Plugin-Grep-Boxes را نصب کنید تا فیلتر در دونده تست بدون تغییر کد شروع شود. ساخته شده از cypress-grepبشر
  • افزونه Cypress-Plugin-Last-Failed را نصب کنید تا به راحتی آخرین تست (های) شکست خورده را دوباره انجام دهید. همچنین از CLI پشتیبانی می کند. ساخته شده از cypress-grepبشر

4. پشتیبانی رسمی Safari/WebKit

سرو به طور رسمی از Chrome ، Edge و Firefox پشتیبانی می کند ، اما Safari یا WebKit نیست ، و آزمایش برنامه ها را در یک دشوار می کند محیط نزدیک به اکوسیستم اپل. با این حال ، با وجود عدم حمایت رسمی ، پشتیبانی آزمایشی در بالای این کشور ساخته شده است playwright-webkit افزونه

این یک گزینه عالی است که بهتر از هیچ چیز است اما هنوز تعداد معدودی از موضوعات شناخته شده وجود دارد که می تواند مسدود کننده برای یک مجموعه تست پیچیده باشد ، مانند گم شدن cy.origin پشتیبانی

راه حل ها:

  • Playwright-WEBKIT را نصب کنید و ExperimentalWebKitSupport را اضافه کنید: به پرونده پیکربندی خود درست کنید. Cypress را طبق معمول با استفاده از --browser webkit CLI Param.
  • دعا کنید که نیازی به آزمایش در برابر سافاری ندارید … شوخی می کنید اما گاهی اوقات مسدود کننده ها به عنوان آخرین نتیجه به ابزار آزمایش جایگزین نیاز دارند.

5. پشتیبانی چند نفره

Cypress به گونه ای طراحی شده است که در یک برگه مرورگر واحد اجرا شود و آزمایش گردش کار که شامل چندین زبانه یا پنجره ها است ، دشوار است. هیچ دستور آسانی برای جابجایی بین چندین زبانه یا زمینه های مرورگر برای دستیابی به عملکرد چند کاربر مانند جعبه چت وجود ندارد. گفته می شود ، Cypress دارای یک تن از راه حل است که هنوز هم اعتماد به نفس کامل و بدون نیاز به شبیه سازی واقعی دو زمینه مرورگر را ارائه می دهد.

راه حل ها:


6. تعامل کاربر واقعی

سرو در درجه اول برای تعامل با DOM به وقایع مصنوعی متکی است ، که به طور معمول به تعامل بیشتر کاربر دست می یابند. با این حال برخی از وقایع ، مانند شبیه سازی حالت های شناور و اقدامات کشیدن و رها کردن ، با این رفتار پیش فرض به راحتی قابل دستیابی نیستند. بار دیگر ، جامعه تعداد انگشت شماری از افزونه های مفید را برای ایجاد تعامل کاربر کمی آسان کرده است.

راه حل ها:


7. منطق تلاش مجدد فرمان

Cypress دارای مجدداً ادعای داخلی فوق العاده داخلی است اما در حال حاضر از اقدامات غیرقانونی مانند دستورات پشتیبانی نمی کند. در مورد موضوع ، تعداد انگشت شماری از راه حل ها برای گسترش عملکرد پیش فرض سرو از جمله یک افزونه لازم استفاده می شود.

راه حل ها:

  • برای امتحان کردن منطق غیر Query از افزونه Cypress-Wait-itil استفاده کنید. قدرت انتظار را به به معنای واقعی کلمه همه چیزبشر
  • از افزونه Cypress-Recurs برای امتحان مجدد دستورات سفارشی استفاده کنید تا یک عملکرد محمول درست برگردد. یک جایگزین عالی دیگر
  • به جای آن ، دستور سفارشی خود را به یک پرس و جو سفارشی تبدیل کنید که از بازیابی پشتیبانی می کند. Cypress V12 و بالاتر ، برای هر دستور توصیه نمی شود.

پایان

در حالی که Cypress یک ابزار تست فوق العاده قدرتمند است ، محدودیت هایی دارد که گاهی اوقات می تواند تلاش های اتوماسیون تست را کاهش دهد. خوشبختانه ، جامعه قوی و اکوسیستم پلاگین ها برای اکثر ویژگی های مفقود شده ، راه حل هایی را ارائه می دهند. این فقط به کمی جستجو و راه اندازی اضافی نیاز دارد.

از آنجا که Cypress همچنان در حال تکامل است ، امیدوارم که بیشتر از این ویژگی ها به طور بومی پشتیبانی شود. تا آن زمان ، امیدوارم این لیست به عنوان یک کنگره مفید از راه حل ها باشد تا به شما کمک کند تا از تلاش های اتوماسیون تست سرو استفاده کنید.

مثل همیشه ، آزمایش مبارک!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا