آرکیٹیکچر فیصلے کا ریکارڈ: E2E ٹیسٹنگ کے لیے براؤزر آٹومیشن فریم ورک (Playwright یا Selenium)
1. سیاق و سباق
ہم اپنی اینڈ ٹو اینڈ (E2E) ٹیسٹنگ پائپ لائن کے لیے براؤزر آٹومیشن فریم ورک منتخب کرنے کے عمل میں ہیں۔ یہ فریم ورک ہمارے CI/CD کے عمل کا لازمی حصہ ہوگا، جو ایسے ٹیسٹ چلائے گا جو ہمارے پلیٹ فارم پر حقیقی صارفین کے تعاملات کی نقل کریں۔ خاص طور پر ٹیسٹ صارف کے سائن اپ/سائن اِن، فائل اپ لوڈز، ڈیش بورڈ تعاملات اور رپورٹ ڈاؤن لوڈز جیسے منظرناموں کا احاطہ کریں گے۔
ایک اسٹارٹ اپ کے طور پر ہمارا مرکز ایجائل ڈویلپمنٹ ہے، جس میں تیزی سے تکرار اور ارتقا کی ضرورت ہے۔ ہماری ٹیم بنیادی طور پر TypeScript اور Python کے ساتھ کام کرتی ہے، اور ان زبانوں میں ٹیسٹ لکھنے کی صلاحیت ضروری ہے۔ مزید برآں پلیٹ فارم میں انٹرایکٹو چارٹس اور ڈیش بورڈز ہیں، جس سے یہ اہم ہو جاتا ہے کہ آٹومیشن ٹول بھرپور، متحرک UIs کو اچھی طرح سپورٹ کرے۔
اس کام کے لیے دو دعویدار Playwright اور Selenium ہیں، جن میں سے ہر ایک کی اپنی طاقتیں اور سمجھوتے ہیں۔ ہمیں ان فریم ورکس کا ذیل میں بیان کردہ خصوصیات اور تقاضوں کی بنیاد پر جائزہ لینا ہے۔
2. زیرِ غور اختیارات
- Playwright (Microsoft کی طرف سے)
- Selenium (Selenium Project کی طرف سے)
3. فیصلے کے محرکات
ہمارے فیصلے پر اثر انداز ہونے والے عوامل درج ذیل ہیں:
- ایجائل ڈویلپمنٹ: منتخب ٹول کو تیز، لچکدار ڈویلپمنٹ چکروں کے قابل بنانا چاہیے۔
- زبان کی سپورٹ: ہماری ٹیم کو TypeScript اور Python دونوں کی سپورٹ درکار ہے۔
- انٹرایکٹو UI ٹیسٹنگ: انٹرایکٹو چارٹس، ڈیش بورڈز اور متحرک عناصر کو قابلِ اعتماد طور پر ٹیسٹ کرنے کی صلاحیت ضروری ہے۔
- رن ٹائم رفتار: اگرچہ بنیادی تشویش نہیں، CI/CD پائپ لائنز میں کارکردگی ایک غور طلب بات ہے۔
- وسعت پذیری: ہم قریبی مستقبل میں بڑے پیمانے پر اسکیلنگ کی منصوبہ بندی نہیں کر رہے، لیکن ہم یقینی بنانا چاہتے ہیں کہ حل مستقبل کی نشوونما سنبھال سکے۔
- پچھلی مطابقت: لیگیسی سسٹمز اور پرانے براؤزرز سے مطابقت اس وقت ہمارے منصوبے کے لیے اہم نہیں۔
- موبائل ٹیسٹنگ: اگرچہ فوری توجہ نہیں، فریم ورک کو موبائل ریسپانسیو خصوصیات ٹیسٹ کرنے کے قابل ہونا چاہیے یا ایسے استعمال کے کیسز کے لیے قابلِ توسیع ہونا چاہیے۔
- ملٹی مانیٹر ٹیسٹنگ: ملٹی مانیٹر کنفیگریشنز کی سپورٹ ثانوی تقاضا ہے، خاص طور پر اگر ہم کبھی زیادہ پیچیدہ صارف ورک فلو کی ٹیسٹنگ تک پھیلیں۔
- فائل اپ لوڈ ٹیسٹنگ: فریم ورک کو فائل اپ لوڈز مؤثر طور پر سنبھالنے چاہئیں، جو ہماری ٹیسٹنگ کی ضروریات کا بنیادی تقاضا ہے۔
4. جانچ کے معیارات
- استعمال میں آسانی: ٹیسٹ لکھنا اور برقرار رکھنا کتنا آسان ہے؟
- زبان کی سپورٹ: کیا فریم ورک TypeScript اور Python کو سپورٹ کرتا ہے، وہ دو زبانیں جو ہماری ٹیم سب سے زیادہ استعمال کرتی ہے؟
- انٹرایکٹو UI ٹیسٹنگ: فریم ورک چارٹس، فائل اپ لوڈز اور متحرک ڈیٹا جیسے پیچیدہ، انٹرایکٹو صارف انٹرفیسز کو کتنی اچھی طرح سنبھالتا ہے؟
- CI/CD انضمام: فریم ورک عام CI/CD ٹولز اور خدمات کے ساتھ کتنی اچھی طرح ضم ہوتا ہے؟
- کراس براؤزر سپورٹ: کون سے براؤزرز سپورٹڈ ہیں اور ان کی کارکردگی کیسی ہے؟
- کارکردگی اور رفتار: ٹیسٹ، خاص طور پر CI/CD پائپ لائن میں، کتنی تیزی سے چلتے ہیں؟
- وسعت پذیری: اگر مزید ٹیسٹ یا زیادہ پیچیدہ منظرنامے شامل ہوں تو فریم ورک کتنی اچھی طرح اسکیل ہو سکتا ہے؟
- کمیونٹی اور ماحولیاتی نظام: فریم ورک کی کمیونٹی کتنی فعال ہے؟ کیا بہت سے انضمام اور ایکسٹینشنز دستیاب ہیں؟
5. غور و فکر
5.1 Playwright
فوائد:
- مقامی فائل اپ لوڈز کے لیے زیادہ ذہین API: مقامی فائلوں سے تعامل اور فائل اپ لوڈز انجام دینے کے لیے Playwright کی API زیادہ سادہ اور بدیہی ہے۔ یہ فائل اپ لوڈ ٹیسٹس کو نافذ کرنا اور برقرار رکھنا آسان بنائے گی۔
- نحو اور کوڈ جنریشن: Playwright کی نحو چھوٹی اور زیادہ مختصر ہے۔ اس کا نتیجہ کم بوائلر پلیٹ کوڈ کی صورت میں نکلتا ہے، جو دیکھ بھال کی اہلیت اور ڈویلپر کی استعداد بہتر بناتا ہے۔ مزید برآں یہ چھوٹی نحو OpenAI کوڈ جنریشن کے معیار کو بہتر بناتی ہے، جس سے ٹیسٹ اسکرپٹس خودکار طور پر بنانا آسان ہوتا ہے۔
- انٹرایکٹو UI ٹیسٹنگ: Playwright متحرک، انٹرایکٹو ویب ایپلیکیشنز، جیسے بھرپور چارٹس، پیچیدہ صارف تعاملات اور ریئل ٹائم اپ ڈیٹس والی، کی ٹیسٹنگ میں ممتاز ہے۔ یہ WebSockets، WebRTC، shadow DOMs اور دیگر جدید ویب ٹیکنالوجیز کو بہت مؤثر طریقے سے سنبھالتا ہے۔
- کراس براؤزر سپورٹ: Playwright Chromium، WebKit اور Firefox کو سپورٹ کرتا ہے۔ ان براؤزرز میں اس کی کارکردگی یکساں ہے، جو ہماری ٹیسٹنگ کی زیادہ تر ضروریات کا احاطہ کرے گی۔
- CI/CD انضمام: Playwright جدید CI/CD پلیٹ فارمز (GitHub Actions، Jenkins وغیرہ) کے ساتھ بے ربط طور پر ضم ہوتا ہے۔ یہ مختلف براؤزرز میں متوازی طور پر ٹیسٹ چلا سکتا ہے، ٹیسٹ چلانے کے اوقات کو بہتر بناتا ہے اور اسے تیز ڈویلپمنٹ کے لیے موزوں بناتا ہے۔
- تیز اور قابلِ اعتماد: Playwright عموماً Selenium سے تیز ہے، خاص طور پر headless موڈ میں، اور غیر ہم وقت ساز ویب عناصر سے نمٹنے میں زیادہ لچکدار ہے۔
نقصانات:
- محدود موبائل ٹیسٹنگ: اگرچہ Playwright براؤزرز کے لیے موبائل ایمولیشن سپورٹ کرتا ہے، اس میں اصل موبائل ٹیسٹنگ کے لیے Selenium کے Appium کے ساتھ انضمام جیسی مقامی موبائل ٹیسٹنگ صلاحیتوں کی کمی ہے۔
- چھوٹا ماحولیاتی نظام: Playwright اب بھی Selenium سے نیا اور کم قائم شدہ ہے۔ اگرچہ اس کی تیزی سے بڑھتی کمیونٹی اور اچھی دستاویزات ہیں، شاید اس کے پاس ابھی پلگ اِنز اور انضمام کا وہ وسیع ماحولیاتی نظام نہ ہو جو Selenium پیش کرتا ہے۔
- محدود براؤزر سپورٹ: اگرچہ Playwright بڑے جدید براؤزرز (Chrome، Safari، Firefox) کا احاطہ کرتا ہے، لیگیسی براؤزرز (مثلاً Internet Explorer) کے لیے اس کی سپورٹ Selenium کی طرح مضبوط نہیں۔
5.2 Selenium
فوائد:
- طویل تاریخ اور پختگی: Selenium طویل عرصے سے موجود ہے اور اس کا ثابت شدہ ریکارڈ ہے۔ یہ بہت سی ٹیموں اور صنعتوں میں وسیع پیمانے پر استعمال ہوتا ہے، جس سے پلگ اِنز، انضمام اور وسائل کا وسیع ماحولیاتی نظام بنا ہے۔
- کراس براؤزر اور کراس پلیٹ فارم سپورٹ: Selenium Internet Explorer سمیت براؤزرز کی وسیع قسم اور ورژنز کو سپورٹ کرتا ہے، اور تقسیم شدہ ٹیسٹنگ کے لیے Docker، Selenium Grid اور کلاؤڈ خدمات جیسے مختلف ٹولز کے ساتھ بھی ضم کیا جا سکتا ہے۔
- موبائل ٹیسٹنگ: Selenium، Appium کے ساتھ اپنے انضمام کے ذریعے، Android اور iOS دونوں ایپلیکیشنز سمیت موبائل ٹیسٹنگ کے لیے کہیں زیادہ مضبوط ہے۔ یہ اسے موبائل-فرسٹ یا موبائل پر بھاری انحصار والے منصوبوں کے لیے بہتر انتخاب بناتا ہے۔
- ملٹی مانیٹر ٹیسٹنگ: Selenium ان منظرناموں کے لیے بہتر سپورٹ فراہم کرتا ہے جن میں متعدد مانیٹرز یا پیچیدہ کثیر ونڈو تعاملات شامل ہوں۔
نقصانات:
- پیچیدگی: Selenium کی API زیادہ طویل اور صریح ہے۔ اگرچہ بعض صورتوں میں یہ فائدہ ہو سکتا ہے، اس کا مطلب لکھنے اور برقرار رکھنے کے لیے زیادہ کوڈ ہے، جو ڈویلپر کی چستی کم کر سکتا ہے — جو اسٹارٹ اپ ماحول میں خاص طور پر اہم ہے۔
- کارکردگی: Selenium عموماً Playwright سے سست چلتا ہے، خاص طور پر headless موڈ میں۔ یہ CI/CD پائپ لائنز پر اثر ڈال سکتا ہے، خاص طور پر ٹیسٹوں کی تعداد بڑھنے کے ساتھ۔
- انٹرایکٹو UI ٹیسٹنگ: جدید، انٹرایکٹو ویب UIs، خاص طور پر چارٹس اور ریئل ٹائم ڈیٹا اپ ڈیٹس والے، کی ٹیسٹنگ میں Selenium Playwright جتنا ہموار نہیں۔ متحرک مواد کے ساتھ قابلِ اعتماد طور پر تعامل کے لیے اسے زیادہ سیٹ اپ اور ہینڈلنگ درکار ہے۔
6. موازنے کا خلاصہ
| خصوصیت | Playwright | Selenium |
|---|---|---|
| استعمال میں آسانی | چھوٹی نحو، جدید UIs کے لیے زیادہ بدیہی | زیادہ صریح، زیادہ بوائلر پلیٹ درکار |
| زبان کی سپورٹ | TypeScript، Python، JavaScript | TypeScript، Python، Java، Ruby، C# |
| انٹرایکٹو UI ٹیسٹنگ | متحرک، ریئل ٹائم UIs کے لیے بہترین | بنیادی UIs سنبھالتا ہے، لیکن بھرپور تعاملات کے لیے زیادہ طویل اور پیچیدہ |
| فائل اپ لوڈ ٹیسٹنگ | فائل اپ لوڈز کے لیے زیادہ ذہین API | زیادہ طویل، کم بدیہی API |
| CI/CD انضمام | GitHub Actions، Jenkins کے ساتھ آسان انضمام | بہت سے CI ٹولز کے ساتھ مضبوط انضمام |
| موبائل ٹیسٹنگ | محدود، صرف ایمولیشن | Appium کے ذریعے مکمل سپورٹ |
| کراس براؤزر سپورٹ | Chromium، WebKit، Firefox | بڑے اور لیگیسی براؤزرز میں مکمل سپورٹ |
| کارکردگی | تیز، headless ٹیسٹنگ کے لیے بہتر بنایا گیا | سست، خاص طور پر headless موڈ میں |
| ملٹی مانیٹر ٹیسٹنگ | محدود | ملٹی مانیٹر سیٹ اپس کے لیے اچھی سپورٹ |
| کمیونٹی اور ماحولیاتی نظام | بڑھتی ہوئی، اچھی دستاویزات | بڑی، پختہ، وسیع ماحولیاتی نظام |
7. فیصلہ
تقاضوں اور سمجھوتوں پر غور کرنے کے بعد Playwright ہماری موجودہ ضروریات کے لیے بہتر انتخاب ہے۔ مقامی فائل اپ لوڈ ٹیسٹنگ کے لیے اس کی زیادہ ذہین API، مختصر نحو اور انٹرایکٹو UI ٹیسٹنگ کی مضبوط سپورٹ اسے ہمارے ایجائل ڈویلپمنٹ چکر کے لیے بالکل موزوں بناتی ہے۔ یہ حقیقت کہ یہ TypeScript اور Python دونوں کو سپورٹ کرتا ہے ہماری ٹیم کے لیے اہم ہے، اور فریم ورک کا ٹیسٹنگ کا جدید طریقہ ہمیں صاف، قابلِ دیکھ بھال کوڈ لکھنے کی اجازت دے گا۔
اگرچہ Selenium ایک عمدہ ٹول رہتا ہے، خاص طور پر موبائل ٹیسٹنگ، لیگیسی براؤزر سپورٹ اور ملٹی مانیٹر سیٹ اپس کے لیے، وہ ہماری موجودہ ضروریات کے لیے کم موزوں ہے۔ اس کی طوالت، سست کارکردگی اور چارٹس جیسے متحرک UIs کی زیادہ پیچیدہ ہینڈلنگ اسے ہمارے استعمال کے کیس کے لیے کم مثالی بناتی ہے۔
8. نتائج
- فوری عمل: ہم اپنی E2E ٹیسٹنگ کے لیے Playwright اپنائیں گے، سائن اپ، سائن اِن، فائل اپ لوڈز، ڈیش بورڈز اور رپورٹ ڈاؤن لوڈز پر مشتمل صارف بہاؤ کی ٹیسٹنگ پر توجہ دیتے ہوئے۔
- طویل مدتی غور و فکر: ہم Playwright کے ماحولیاتی نظام کے ارتقا پر نظر رکھیں گے۔ اگر ہماری ضروریات بدلیں، خاص طور پر موبائل ٹیسٹنگ یا لیگیسی براؤزر سپورٹ کے بارے میں، تو ہم Selenium پر دوبارہ غور کر سکتے ہیں۔
- تربیت اور دستاویزات: ڈویلپمنٹ ٹیموں کو Playwright کی API سے واقف ہونا ہوگا، خاص طور پر متحرک UIs اور فائل اپ لوڈز سنبھالنے کے لیے۔
- منتقلی: موجودہ Selenium ٹیسٹ (اگر ہوں) بتدریج Playwright پر منتقل کیے جائیں گے۔