Software Engineer Labdon
640 subscribers
43 photos
5 videos
6 files
840 links
👑 Software Labdon

حمایت مالی:
https://www.coffeete.ir/mrbardia72

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
Beyond the Test Pyramid: Building New Monuments for Testing

🟢 خلاصه مقاله:
خوانش تازه‌ای از مدل کلاسیک test pyramid ارائه می‌شود: Juan Rada می‌گوید تکیه افراطی بر لایه‌های پایین (مثل unit tests) همیشه به‌صرفه نیست، چون در سیستم‌های توزیع‌شده نیاز به mocking زیاد، شکنندگی و هزینه نگه‌داری بالا ایجاد می‌کند و اعتماد کاذب می‌دهد. او پیشنهاد می‌کند به‌جای قالب ثابت، پرتفوی آزمون بر اساس ریسک و زمینه تیم چیده شود: تمرکز بیشتر بر integration tests معنادار، چند E2E هدفمند و سریع، و contract testing برای محافظت از مرز سرویس‌ها. این رویکرد با observability، tracing، health checks، و به‌کارگیری feature flags و canary releases برای اعتبارسنجی امن در محیط واقعی تکمیل می‌شود. هدف کنار گذاشتن unit tests نیست، بلکه اندازه‌کردن درست آن‌ها و ساختن «monuments» متناسب با معماری و اهداف است تا تعادل بهینه‌ای میان هزینه، سرعت و ریسک ایجاد شود.

#Testing #TestPyramid #SoftwareQuality #RiskBasedTesting #IntegrationTesting #E2E #QualityEngineering

🟣لینک مقاله:
https://cur.at/3i5XRwi?m=web


👑 @software_Labdon
🔵 عنوان مقاله
Debugging "No Tests Found" Errors in Playwright: A Comprehensive Guide

🟢 خلاصه مقاله:
راهنمای Marius Besel نشان می‌دهد که خطای “No Tests Found” در Playwright معمولاً به دلیل کشف‌نشدن فایل‌های تست یا حذف‌شدن آن‌ها توسط الگوها و فیلترها رخ می‌دهد. او تأکید می‌کند ابتدا نام‌گذاری و محل فایل‌ها را بررسی کنید: Playwright به‌طور پیش‌فرض در testDir (مثلاً tests) به‌دنبال *.spec.* یا *.test.* می‌گردد و هر تغییری در testMatch/testIgnore یا اجرای دستور در مسیر اشتباه می‌تواند کشف را از کار بیندازد. سپس فیلترها و پروژه‌ها را چک کنید: پارامترهایی مثل --grep، --grep-invert، --project یا دادن مسیری که تستی در آن نیست، ممکن است همه چیز را حذف کند؛ استفاده از --list کمک می‌کند بفهمید دقیقاً چه تست‌هایی شناسایی می‌شوند. در ساختارهای monorepo، چندین فایل playwright.config و اسکریپت‌های workspace می‌توانند Playwright را به دایرکتوری‌های نادرست ببرند.

برای TypeScript، مشکلات outDir، تفاوت ESM/CJS، و تنظیمات include/exclude در tsconfig می‌تواند مانع کشف تست‌ها شود؛ هم‌تراز کردن testDir با tsconfig، پرهیز از تزاحم فرایندهای جداگانه ترنسپایل، و یکنواخت‌کردن تنظیمات ماژول معمولاً مشکل را حل می‌کند. تفاوت محیط‌ها نیز مهم است: حساسیت به حروف در Linux، مسیرها و متغیرهای محیطی در CI، و ناهمخوانی نسخه‌ها می‌توانند باعث بروز خطا شوند. جمع‌بندی او یک چک‌لیست عملی است: نام‌گذاری/محل فایل‌ها، تنظیمات testDir/testMatch/testIgnore، فیلترها و پروژه‌ها، تنظیمات TypeScript/ماژول، و یکسان‌سازی محیط محلی و CI—با این مراحل، پیام “No Tests Found” به‌سادگی برطرف می‌شود.

#Playwright #Testing #Debugging #JavaScript #TypeScript #E2E #CI #TestAutomation

🟣لینک مقاله:
https://cur.at/irqt94X?m=web


👑 @software_Labdon
🔵 عنوان مقاله
WOW. Playwright is significantly better than Selenium

🟢 خلاصه مقاله:
این روزها بسیاری از تسترها می‌گویند Playwright نسبت به Selenium برتری چشمگیری دارد و بحث‌های Reddit نیز با تجربه‌های واقعیِ مهاجرت این موضوع را تأیید می‌کند. مهم‌ترین مزیت‌ها: کاهش چشمگیر فلِیکی به‌خاطر auto-waiting و زمان‌بندی هوشمند، API مدرن و سازگار در مرورگرهای مختلف، و ابزارهای یکپارچه مثل test runner، اجرای موازی، tracing، و ضبط ویدئو/اسکرین‌شات که دیباگ را ساده و چرخه بازخورد در CI/CD را کوتاه می‌کنند. بسیاری گزارش داده‌اند که با Playwright کد کمتر، پایداری بیشتر و پوشش cross-browser روان‌تری دارند. با این حال، در کنار این مزایا به بلوغ و اکوسیستم گسترده Selenium هم اشاره می‌شود؛ انتخاب نهایی به نیازها و زمینه پروژه وابسته است، اما برای تیم‌هایی که سرعت، پایداری و تجربه توسعه‌دهنده را در اولویت می‌گذارند، Playwright گزینه برتر جلوه می‌کند.

#Playwright #Selenium #TestAutomation #WebTesting #QA #E2E #CI_CD #Reddit

🟣لینک مقاله:
https://cur.at/Dwk29o1?m=web


👑 @software_Labdon
🔵 عنوان مقاله
Playwright Selectors That Don't Flake — 7 Rules

🟢 خلاصه مقاله:
مقاله‌ی Roshan Manjushree Adhikari راه‌های کاهش flakiness ناشی از selectorها در Playwright را توضیح می‌دهد و تأکید می‌کند که به‌جای اتکا به retry، باید سراغ selectorهای پایدار و استفاده‌ی درست از Locator API و auto-waiting رفت. او هفت قاعده‌ی کاربردی پیشنهاد می‌کند: تکیه بر locatorهای معنایی مثل getByRole/getByLabel/getByText؛ استفاده از data-testid به‌جای کلاس‌ها/IDهای پویا؛ پرهیز از selectorهای موقعیتی مثل nth-child و محدود کردن دامنه‌ی جست‌وجو؛ بهره‌گیری از locator() و expect() با انتظارهای درون‌ساخت به‌جای sleep؛ همگام‌سازی با وضعیت واقعی UI و انجام اکشن‌های کاربرمحور؛ نزدیک‌کردن selectorها به نشانه‌گذاری دسترس‌پذیر و تمرکز آن‌ها در لایه‌ی مشترک؛ و رصد و رفع ریشه‌ای تست‌های flaky به‌جای retry سراسری. این توصیه‌ها در سایر test frameworks نیز کارآمد هستند.

#Playwright #TestAutomation #Selectors #FlakyTests #E2E #QA #Testing

🟣لینک مقاله:
https://cur.at/QPNtNUw?m=web


👑 @software_Labdon
🔵 عنوان مقاله
How Playwright Runs Workers and Test Fixtures (Parallel vs Serial vs Default)!

🟢 خلاصه مقاله:
این مقاله از Thananjayan Rajasekaran به‌صورت عملی نشان می‌دهد Playwright Test چگونه workers و test fixtures را مدیریت می‌کند و تفاوت حالت‌های default، parallel و serial چیست. ابتدا توضیح می‌دهد که به‌طور پیش‌فرض فایل‌های تست روی چند worker به‌صورت موازی اجرا می‌شوند اما تست‌های داخل هر فایل به‌صورت ترتیبی اجرا می‌گردند؛ همچنین به تعامل retries، projects و گزینه‌هایی مانند --workers و sharding برای کنترل سرعت و پایداری اشاره می‌کند. سپس روش‌های افزایش همزمانی را بررسی می‌کند: فعال‌کردن fullyParallel در تنظیمات یا استفاده از test.describe.configure({ mode: 'parallel' }) برای موازی‌سازی بخشی از تست‌ها، همراه با هشدار درباره ریسک‌های وضعیت مشترک و flaky شدن. در بخش serial، با test.describe.serial یا تنظیم mode: 'serial' می‌توان اجرای ترتیبی و توقف زنجیره پس از شکست را تضمین کرد؛ راهکاری که برای گردش‌کارهای وابسته یا منابع غیرقابل‌اشتراک میان workers مفید است، هرچند توصیه می‌شود فقط در صورت نیاز استفاده شود. بخش مهم دیگر به fixtures می‌پردازد: تفاوت بین per-test و worker-scoped و تأثیر مستقیم آن‌ها بر موازی‌سازی؛ اینکه worker-scoped بین workers به‌اشتراک گذاشته نمی‌شود و ممکن است چند نمونه مستقل از یک منبع ایجاد شود. مقاله با نمونه‌کدهای روشن برای تنظیم workers، فعال‌سازی fullyParallel، علامت‌گذاری suiteها به‌صورت serial یا parallel و ترکیب آن‌ها با projects و retries، یک الگوی ذهنی شفاف برای انتخاب بهینه بین default، parallel و serial ارائه می‌دهد تا هم سرعت اجرا بالا برود و هم پایداری CI حفظ شود.

#Playwright #Testing #E2E #ParallelTesting #TestAutomation #JavaScript #Fixtures #CI

🟣لینک مقاله:
https://cur.at/93wY1jL?m=web


👑 @software_Labdon
1
🔵 عنوان مقاله
Selenium tests breaking constantly after every UI change. Is test maintenance really supposed to take this much time?

🟢 خلاصه مقاله:
این مسئله مطرح شد که چرا تست‌های Selenium با هر تغییر در UI می‌شکنند و آیا این حجم از نگه‌داری طبیعی است یا نشانه‌ی مشکل در رویکرد. جامعه‌ی کاربری توصیه کرد وابستگی تست‌ها به جزئیات شکننده‌ی رابط را کم کنند (استفاده از data-test-id)، از الگوهایی مثل Page Object Model برای متمرکزکردن انتخاب‌گرها کمک بگیرند، و طبق Test Pyramid بیشتر پوشش را به لایه‌های Unit/API بدهند و فقط سناریوهای کاربرمحور کلیدی را با end‑to‑end اجرا کنند. برای کاهش test flakiness نیز بر waits مبتنی بر شرایط تجاری، کنترل وضعیت داده و محیط، اجتناب از تاخیرهای ثابت و انیمیشن‌ها، ایزوله‌سازی در CI، mock/stub کردن فراخوانی‌های ناپایدار، و قرنطینه و triage خودکار تست‌های flaky تأکید شد. جمع‌بندی این بود که نگه‌داری سنگین اغلب نتیجه‌ی استفاده‌ی بیش‌ازحد یا کوپلینگ شدید به UI است؛ با راهبردهای درست می‌توان automated tests پایدارتر و کم‌هزینه‌تر داشت.

#Selenium #TestAutomation #FlakyTests #UITesting #SoftwareTesting #QA #CICD #E2E

🟣لینک مقاله:
https://cur.at/Scyp8xS?m=web


👑 @software_Labdon
🔵 عنوان مقاله
Our Journey Through Optimising Cypress End-to-End Tests

🟢 خلاصه مقاله:
** این مقاله به قلم Omer Keskinkilic مجموعه‌ای از تجربه‌های عملی برای بهینه‌سازی تست‌های انتها‌به‌انتها با Cypress ارائه می‌کند. محورها سه‌گانه‌اند: طراحی درست تست، افزایش سرعت اجرا و نگه‌داری بلندمدت.

در طراحی، تمرکز بر پایداری و خوانایی است: استفاده از selectorهای پایدار مانند data-test، کوچک و متمرکز نگه‌داشتن سناریوها، استخراج گام‌های تکراری به custom commandها و پرهیز از waitهای دلخواه با همگام‌سازی قطعی مبتنی بر وضعیت.

برای سرعت، توصیه‌ها شامل استفاده هدفمند از cy.intercept برای stub کردن ضروری، seed کردن داده، میان‌بر زدن ورود با cy.session، تقسیم مجموعه به smoke و full، موازی‌سازی در CI با Cypress Dashboard، اجرای headless و کش وابستگی‌ها و محدود کردن خروجی‌ها به شکست‌هاست.

در نگه‌داری، ساختار پوشه و نام‌گذاری یک‌دست، کمک‌هزینه‌های DRY به‌جای page objectهای سنگین، مدیریت سریع flakyها (با retry به‌عنوان چاره موقت)، استفاده از TypeScript برای اطمینان بیشتر در utilityها و commandها، و پیکربندی محیط از طریق cypress.config.js و متغیرهای محیطی پیشنهاد می‌شود. با اجرای تدریجی این نکات، مجموعه تست‌های Cypress پایدارتر، سریع‌تر و قابل اتکاتر می‌شود.

#Cypress #E2E #TestAutomation #QA #JavaScript #CI #CypressDashboard #Performance

🟣لینک مقاله:
https://cur.at/YjuFkp3?m=web


👑 @software_Labdon