Detox: یہ کیا ہے، کام کے اصول اور E2E ٹیسٹنگ

مصنف: IT Sectr اشاعت: 2026-04-09 مطالعے کا وقت: 8 منٹ

Detox موبائل ایپلیکیشنز کی gray-box E2E جانچ کے لیے ایک فریم ورک ہے، جسے Wix ٹیم نے خاص طور پر React Native پروجیکٹس کے لیے بنایا ہے۔ black-box طریقوں کے برعکس، Detox کو ایپلیکیشن کی داخلی حالت تک رسائی حاصل ہے، جو دستی ٹائم آؤٹ کے بغیر خود بخود مطابقت پذیری کی اجازت دیتا ہے۔ Wix Engineering, 2026 کے مطابق، خودکار مطابقت پذیری روایتی توقف کے مقابلے میں ٹیسٹ چلانے کے وقت کو 40% تک کم کر دیتی ہے۔

اہم نکات

  • Detox — React Native اور نیٹیو ایپلیکیشنز کے لیے gray-box E2E فریم ورک
  • خودکار مطابقت پذیری دستی تاخیر اور sleep کالز کی ضرورت کو ختم کرتی ہے
  • ٹیسٹ matcher اور action API کا استعمال کرتے ہوئے JavaScript یا TypeScript میں لکھے جاتے ہیں
  • چلانا iOS سمیلیٹر اور Android ایمولیٹر یا ڈیوائس پر ممکن ہے
  • CI/CD انضمام Detox CLI اور کنفیگریشن فائلوں کے ذریعے کیا جاتا ہے

Detox کیا ہے

Detox موبائل ایپلیکیشنز کے اینڈ ٹو اینڈ (E2E) ٹیسٹنگ کے لیے ایک فریم ورک ہے، جسے Wix نے 2017 میں تیار کیا تھا۔ یہ React Native پروجیکٹس کے لیے ڈیزائن کیا گیا ہے لیکن iOS اور Android پر مکمل طور پر نیٹیو ایپلیکیشنز کو بھی سپورٹ کرتا ہے۔ Detox gray-box ماڈل پر کام کرتا ہے، جس کا مطلب ہے کہ اسے ایپلیکیشن کے داخلی میکانزم تک رسائی حاصل ہے۔

دیگر E2E فریم ورکس سے فرق

Detox اور Appium یا Calabash کے درمیان بنیادی فرق ایپلیکیشن کے ساتھ خودکار مطابقت پذیری ہے۔ فریم ورک اگلی کارروائی کرنے سے پہلے اینیمیشنز، نیٹ ورک کی درخواستوں اور ایونٹ پروسیسنگ کے مکمل ہونے کا انتظار کرتا ہے۔ یہ Thread.sleep() یا waitForElement کی ضرورت کو مکمل طور پر ختم کر دیتا ہے، جو ٹیسٹ کو سست کر دیتے ہیں۔

معاون پلیٹ فارمز

Detox iOS (XCTest اور Xcode کے ذریعے) اور Android (Espresso اور UI Automator کے ذریعے) کو سپورٹ کرتا ہے۔ React Native ایپلیکیشنز کے لیے، Fabric اور پرانے آرکیٹیکچر کے لیے مکمل سپورٹ فراہم کی جاتی ہے۔ iOS پر، ٹیسٹ سمیلیٹر پر چلتے ہیں؛ Android پر، ایمولیٹر یا حقیقی ڈیوائس پر۔

Detox آرکیٹیکچر اور gray-box ماڈل

Detox آرکیٹیکچر تین اہم اجزاء پر مشتمل ہے: Detox CLI، Detox ٹیسٹ رنر اور Detox Native Driver۔ Detox CLI ایپلیکیشن بلڈ، انسٹالیشن اور ٹیسٹ پر عملدرآمد کا انتظام کرتا ہے۔ ٹیسٹ رنر (Jest یا Mocha) ٹیسٹ منظرناموں کو انجام دیتا ہے اور WebSocket کے ذریعے ایپلیکیشن کے ساتھ بات چیت کرتا ہے۔

Gray-box طریقہ

Gray-box ٹیسٹنگ کا مطلب ہے کہ Detox کو ایک نیٹیو برج کے ذریعے ایپلیکیشن کی داخلی حالت تک رسائی حاصل ہے۔ فریم ورک نیٹ ورک کی درخواستوں، اینیمیشنز، ٹائمرز اور آپریشن قطار کی نگرانی کرتا ہے۔ جب تمام قطاریں خالی ہوتی ہیں، Detox ایپلیکیشن کو اگلے مرحلے کے لیے تیار سمجھتا ہے۔

مطابقت پذیری کا طریقہ کار

مطابقت پذیری ایپلیکیشن کے مین تھریڈ کی نگرانی پر مبنی ہے۔ Detox اس وقت تک انتظار کرتا ہے جب تک تمام اینیمیشنز مکمل نہیں ہو جاتیں، HTTP درخواستیں جوابات واپس نہیں کر دیتیں اور ایونٹ ہینڈلرز عملدرآمد ختم نہیں کر دیتے۔ اگر کوئی ٹیسٹ لامتناہی اینیمیشن کی وجہ سے پھنس جاتا ہے، تو آپ کسی مخصوص کوڈ بلاک کے لیے دستی طور پر مطابقت پذیری غیر فعال کر سکتے ہیں۔

javascript
// مسئلہ والے حصے کے لیے مطابقت پذیری غیر فعال کرنا
await device.disableSynchronization();
// لمبی اینیمیشن والی کارروائی
await element(by.id('loader')).swipe('down');
await device.enableSynchronization();

Detox کی تنصیب اور ترتیب

Detox کی تنصیب npm یا yarn کے ذریعے پیکیج شامل کرنے سے شروع ہوتی ہے۔ تنصیب کے بعد، آپ کو ایک کنفیگریشن فائل .detoxrc.js بنانے کی ضرورت ہے، جو ہر پلیٹ فارم کے لیے بلڈ اور رن سیٹنگز بیان کرتی ہے۔ Detox iOS کے لیے اپنی بلڈ قسم کا استعمال کرتا ہے، جو Xcode کنفیگریشن پر مبنی ہے۔

بنیادی ترتیب

ترتیب میں ایپلیکیشن کا راستہ (app)، بلڈر کی قسم (build)، بلڈ آرگیومنٹس اور ڈیوائس کی ترتیبات (device) شامل ہیں۔ iOS کے لیے appleSimulator استعمال ہوتا ہے، Android کے لیے androidEmulator۔ آپ سمیلیٹر کی زبان یا علاقہ جیسے لانچ آرگیومنٹس بھی مخصوص کر سکتے ہیں۔

javascript
// .detoxrc.js — کنفیگریشن مثال
module.exports = {
  testRunner: { args: { '$0': 'jest', config: 'e2e/config.json' } },
  apps: {
    'ios.debug': { type: 'ios.app', build: 'xcodebuild ...' },
    'android.debug': { type: 'android.apk', build: 'cd android && ./gradlew ...' }
  },
  devices: {
    simulator: { type: 'ios.simulator', device: { type: 'iPhone 15' } },
    emulator: { type: 'android.emulator', device: { avdName: 'Pixel_4_API_34' } }
  }
};

لانچ کمانڈز

ترتیب کے بعد، درج ذیل کمانڈز دستیاب ہیں: detox build — ٹیسٹ فلیگ کے ساتھ ایپلیکیشن بناتا ہے، اور detox test — ٹیسٹ چلاتا ہے۔ Detox --workers فلیگ کا استعمال کرتے ہوئے متعدد ڈیوائسز پر متوازی عملدرآمد کو سپورٹ کرتا ہے۔

Detox میں ٹیسٹ لکھنا

Detox ٹیسٹ JavaScript یا TypeScript میں ایک API کا استعمال کرتے ہوئے لکھے جاتے ہیں جو عنصر تلاش (matchers) اور اعمال (actions) پر مبنی ہے۔ Matchers آپ کو شناخت کنندہ، متن، قسم یا اسکرین پر پوزیشن کے ذریعے عنصر تلاش کرنے کی اجازت دیتے ہیں۔ اعمال ٹیپ، ٹیکسٹ ان پٹ، سوائپ اور اسکرول انجام دیتے ہیں۔

ٹیسٹ منظرنامے کی ساخت

ایک عام ٹیسٹ اس ترتیب پر عمل کرتا ہے: عنصر تلاش کریں → عمل کریں → نتیجہ تصدیق کریں۔ تصدیق کے لیے، expect API عنصر کی موجودگی، مرئیت یا متن کے لیے matchers کے ساتھ استعمال ہوتی ہے۔ Detox Jest کے ساتھ انضمام کے ذریعے describe/it نحو کو سپورٹ کرتا ہے۔

javascript
describe('Login flow', () => {
  beforeEach(async () => {
    await device.reloadReactNative();
  });

  it('should log in with valid credentials', async () => {
    await element(by.id('emailInput')).typeText('user@test.com');
    await element(by.id('passwordInput')).typeText('password123');
    await element(by.id('loginButton')).tap();
    await expect(element(by.id('homeScreen'))).toBeVisible();
  });
});

اشاروں کے ساتھ کام کرنا

Detox تمام مقبول اشاروں کو سپورٹ کرتا ہے: tap، longPress، swipe، scroll، pinch، multiTap۔ scroll کے لیے آپ سمت، رفتار اور رکنے کی پوزیشن مخصوص کر سکتے ہیں۔ یہ پیچیدہ منظرناموں جیسے pull-to-refresh یا carousels کی جانچ کی اجازت دیتا ہے۔

CI/CD میں Detox کا انضمام

Detox مشہور CI سسٹمز کے ساتھ اچھی طرح ضم ہوتا ہے: GitHub Actions، CircleCI، Bitrise اور Jenkins۔ CI میں چلانے کے لیے، آپ کو ایک ورچوئل iOS سمیلیٹر (GUI کے بغیر) اور ہارڈویئر ایکسلریشن کے ساتھ Android ایمولیٹر ترتیب دینے کی ضرورت ہے۔ Detox ناکام ٹیسٹوں کے تجزیہ کے لیے آرٹیفیکٹس — اسکرین شاٹس اور لاگز — فراہم کرتا ہے۔

CI کے لیے سفارشات

CI میں ٹیسٹ چلانے کی رفتار بڑھانے کے لیے، --workers فلیگ کے ساتھ شارڈنگ (متوازی بنانا) استعمال کرنے کی سفارش کی جاتی ہے۔ Detox خود بخود متعدد سمیلیٹرز میں ٹیسٹ فائلوں کو تقسیم کرتا ہے۔ بلڈ وقت کو کم کرنے کے لیے رنز کے درمیان ایپلیکیشن بلڈز کو کیش کرنا بھی مفید ہے۔

yaml
# GitHub Actions — iOS پر Detox چلانا
- name: Install Dependencies
  run: npm ci

- name: Build Detox App
  run: npx detox build --configuration ios.sim

- name: Run Detox Tests
  run: npx detox test --configuration ios.sim --workers 2
  timeout-minutes: 30

Detox بہترین طریقہ کار

مستحکم اور تیز E2E ٹیسٹوں کے لیے، کئی اصولوں پر عمل کرنے کی سفارش کی جاتی ہے۔ sleep() سے پرہیز کریں — Detox خودکار مطابقت پذیری فراہم کرتا ہے، اور واضح تاخیر صرف ٹیسٹوں کو سست کرتی ہے اور انہیں غیر مستحکم بناتی ہے۔ اگر وقت کے مسائل کی وجہ سے کوئی ٹیسٹ ناکام ہوتا ہے، تو پہلے چیک کریں کہ مطابقت پذیری غیر فعال ہے یا نہیں۔ ٹیسٹوں کو فیچر کے مطابق گروپ کرنا اور انہیں آزادانہ طور پر چلانا بھی مفید ہے — یہ ناکامی کی وجہ تلاش کرنا آسان بناتا ہے۔

Device کے طریقوں کا استعمال

Detox حالت کے انتظام کے لیے کئی device طریقے فراہم کرتا ہے: device.reloadReactNative() بنڈل کو دوبارہ لوڈ کرتا ہے، device.launchNewApp() ایپلیکیشن کو نئے پیرامیٹرز کے ساتھ لانچ کرتا ہے، device.sendToHome() ایپلیکیشن کو چھوٹا کرتا ہے۔ device.setURLBlacklist() آپ کو مخصوص URLs کو مطابقت پذیری سے خارج کرنے کی اجازت دیتا ہے، جو تجزیات اور long-polling کنکشنز کے لیے مفید ہے۔

ٹیسٹ ڈیٹا کی تنظیم

ہر ٹیسٹ کے لیے، ایک الگ تھلگ حالت بنانے کی سفارش کی جاتی ہے۔ device.reloadReactNative() کے ذریعے ایپلیکیشن کو دوبارہ لوڈ کرنے کے لیے beforeEach استعمال کریں۔ مخصوص ڈیٹا کی ضرورت والے ٹیسٹوں کے لیے، سرور پر ڈیٹا تیار کرنے کے لیے فیکٹریاں یا API کلائنٹ بنائیں۔ ٹیسٹوں کے درمیان انحصار سے بچیں — ہر ٹیسٹ آزاد ہونا چاہیے۔

WebView کے ساتھ کام کرنا

Detox web.element() اور web.invoke() طریقوں کے ذریعے WebView ٹیسٹنگ کو سپورٹ کرتا ہے۔ ویب عناصر کے ساتھ تعامل کرنے کے لیے، by.web](:id، css یا className استعمال ہوتا ہے۔ یہ یاد رکھنا ضروری ہے کہ WebView کو اضافی لوڈنگ وقت درکار ہوتا ہے — اگر مطابقت پذیری کام نہیں کرتی ہے، تو waitFor کا استعمال کرتے ہوئے لوڈنگ انتظار شامل کریں۔

javascript
// Detox میں WebView ٹیسٹنگ
const webView = web(by.id('webview'));
await webView.element(by.web.cssSelector('#submit-btn')).tap();
const result = await webView.element(
  by.web.cssSelector('.result-text')
).getText();
await expect(result).toEqual('Success');

اسکرین شاٹ ٹیسٹنگ

Detox detox-image-matching پلگ ان کے ذریعے اسکرین شاٹ موازنہ کو سپورٹ کرتا ہے۔ اسکرین شاٹس آپ کو بصری رجعت کا پتہ لگانے کی اجازت دیتے ہیں: منتقل شدہ عناصر، غلط رنگ، گمشدہ آئیکنز۔ مستحکم اسکرین شاٹس کے لیے، اینیمیشنز غیر فعال کریں اور ایک مقررہ سمیلیٹر سائز استعمال کریں۔

Detox مسائل کی تشخیص

سب سے عام Detox مسائل مطابقت پذیری سے متعلق ہیں: لامتناہی اینیمیشنز، لمبی نیٹ ورک درخواستیں یا پھنسے ہوئے ٹائمرز۔ --loglevel trace فلیگ کے ساتھ لاگنگ دکھاتا ہے کہ Detox کن وسائل کا انتظار کر رہا ہے۔ اگر Detox پھنس جاتا ہے تو، مسئلہ والے کوڈ بلاک کے لیے device.disableSynchronization() استعمال کریں۔

سمیلیٹر کے مسائل

iOS سمیلیٹر پر، Detox کو پہلے iphonesimulator کنفیگریشن کے ساتھ xcodebuild کے ذریعے ایپلیکیشن بنانے کی ضرورت ہوتی ہے۔ ایک عام غلطی Debug کے بجائے Release اسکیم کا استعمال ہے، جو ٹیسٹ فلیگ کو غیر فعال کر دیتا ہے۔ Android کے لیے، یقینی بنائیں کہ AVD آپ کی ایپلیکیشن کے ساتھ مطابقت رکھنے والے API کے ساتھ بنایا گیا ہے اور Intel HAXM ایکسلریشن فعال ہے۔ macOS پر CI ماحول کے لیے، macOS رنر کے ساتھ GitHub Actions استعمال کرنا آسان ہے، جہاں Xcode اور سمیلیٹرز پہلے سے انسٹال ہیں۔

ٹیسٹ ٹائم آؤٹ

اگر ٹیسٹ باقاعدگی سے ٹائم آؤٹ کی وجہ سے ناکام ہوتے ہیں تو، چیک کریں: کیا مطابقت پذیری عالمی طور پر غیر فعال ہے، کیا ایپلیکیشن کوڈ میں صفائی کے بغیر setTimeout یا setInterval استعمال ہو رہے ہیں، اور کیا مین تھریڈ ایک لمبی کارروائی سے مسدود ہے۔ بعض اوقات detoxrc.js میں testRunner.args.jest.$.testTimeout کے ذریعے ٹائم آؤٹ بڑھانے سے مدد ملتی ہے۔ مسئلہ والے علاقوں کو تلاش کرنے کے لیے، Detox ٹریس لاگنگ فعال کریں — یہ دکھاتا ہے کہ فریم ورک اس وقت کن وسائل اور ٹائمرز کا انتظار کر رہا ہے۔

آرٹیفیکٹس اور رپورٹس

ٹیسٹ چلانے کے بعد، Detox آرٹیفیکٹس بناتا ہے: ناکام ٹیسٹوں کے اسکرین شاٹس، ایپلیکیشن لاگز اور JUnit XML رپورٹس۔ جب کوئی ٹیسٹ ناکام ہوتا ہے تو اسکرین شاٹس خود بخود لیے جاتے ہیں اور مسئلہ کو بصری طور پر پہچاننے میں مدد کرتے ہیں۔ CI کے لیے، آرٹیفیکٹس کلاؤڈ اسٹوریج میں اپ لوڈ کیے جاتے ہیں اور ناکامی کی وجوہات کے تجزیہ کے لیے ویب انٹرفیس کے ذریعے دستیاب ہوتے ہیں۔

اکثر پوچھے گئے سوالات

Detox Appium سے کیسے مختلف ہے؟

Detox ایپلیکیشن کی داخلی حالت تک رسائی اور خودکار مطابقت پذیری کے ساتھ gray-box طریقہ استعمال کرتا ہے۔ Appium WebDriver کے ذریعے black-box ماڈل پر کام کرتا ہے اور دستی انتظار کی ضرورت ہوتی ہے۔ React Native پروجیکٹس کے لیے Detox تیز اور زیادہ مستحکم ہے۔

Detox کن زبانوں کو سپورٹ کرتا ہے؟

Detox ٹیسٹ JavaScript یا TypeScript میں لکھے جاتے ہیں۔ فریم ورک Jest اور Mocha کے ساتھ ٹیسٹ رنر کے طور پر ضم ہوتا ہے۔ iOS کے لیے نیٹیو انجن Swift میں، Android کے لیے Kotlin اور Java میں لکھا گیا ہے۔

کیا Detox نیٹیو ایپلیکیشنز کے لیے استعمال کیا جا سکتا ہے؟

ہاں، Detox iOS (XCTest کے ذریعے) اور Android (Espresso کے ذریعے) پر نیٹیو ایپلیکیشنز کو سپورٹ کرتا ہے۔ تاہم، Detox کا بنیادی صارف React Native ڈیولپرز ہیں، کیونکہ نیٹیو پروجیکٹس کے لیے زیادہ پختہ حل موجود ہیں۔

ناکام Detox ٹیسٹوں کو کیسے ڈیبگ کریں؟

Detox آرٹیفیکٹس فراہم کرتا ہے: اسکرین شاٹس، ایپلیکیشن لاگز اور HTML رپورٹس۔ مقامی ڈیبگنگ کے لیے، --loglevel trace فلیگ استعمال کریں، اور CI کے لیے، کلاؤڈ اپ لوڈ کے ساتھ خودکار آرٹیفیکٹ کلیکٹر استعمال کریں۔

device.reloadReactNative کیا ہے؟

یہ Detox API کا ایک طریقہ ہے جو ایپلیکیشن کو دوبارہ انسٹال کیے بغیر React Native JavaScript بنڈل کو دوبارہ لوڈ کرتا ہے۔ یہ beforeEach میں ہر ٹیسٹ سے پہلے ایپلیکیشن کی حالت کو ابتدائی اسکرین پر ری سیٹ کرنے کے لیے استعمال ہوتا ہے۔

خلاصہ

  • Detox — React Native اور نیٹیو ایپلیکیشنز کی جانچ کے لیے Wix کا gray-box E2E فریم ورک
  • خودکار مطابقت پذیری دستی ٹائم آؤٹ کو ختم کرتی ہے اور ٹیسٹوں کو زیادہ مستحکم بناتی ہے
  • آرکیٹیکچر CLI، ٹیسٹ رنر اور WebSocket کنکشن کے ساتھ نیٹیو ڈرائیور پر مشتمل ہے
  • ٹیسٹ matcher، action اور expect API کا استعمال کرتے ہوئے JavaScript میں لکھے جاتے ہیں
  • سیٹ اپ .detoxrc.js کنفیگریشن اور سمیلیٹر سیٹ اپ کی ضرورت ہے
  • CI/CD متعدد ڈیوائسز پر شارڈنگ، آرٹیفیکٹس اور متوازی عملدرآمد کو سپورٹ کرتا ہے
  • Gray-box طریقہ ایپلیکیشن کی داخلی حالت اور آپریشن قطار تک رسائی فراہم کرتا ہے

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں