בדיקות E2E ל-React Native: הגדרת Detox ו-CI

בדיקות לא יציבות ב-CI מבזבזות זמן צוות ומעכבות שחרורים של אפליקציות מובייל. אנחנו מגדירים בדיקות E2E ל-React Native עם Detox ומשלבים אותן ב-pipeline שלכם, ומבטיחים יציבות וצפי של builds. הצוות שלנו מספק את הפרויקט turnkey—מהקונפיגורציה ועד להרצת בדיקות במקביל, עם תמיכה ותחזוקה שוטפת.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

אלה הם רק חלק מסוגי היישומים הניידים שאנו עובדים איתם, ולכל אחד מהם עשויים להיות מאפיינים ופונקציונליות ספציפיים משלו, המותאמים לצרכים ולמטרות הספציפיות של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
בדיקות E2E ל-React Native: הגדרת Detox ו-CI
מורכב
~5 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

בדיקות E2E ל-React Native: הגדרת Detox ו-CI

אתה מריץ CI, ובדיקות נכשלות ללא סיבה נראית לעין — לא חיכו לאנימציה, לא נמצא אלמנט. נשמע מוכר? אחד הלקוחות שלנו — אפליקציית FinTech עם 50 מסכים — סבל מ-30% כשלונות לא יציבים בכל build. מפתחים בילו שעות בהפעלה מחדש, ושחרורים התעכבו בשבועות. לאחר הטמעת Detox, הפחתנו את שיעור הכשלונות ל-5% וקיצרנו את זמן הריצה פי שלושה באמצעות ביצוע מקבילי. Detox הוא framework מסוג gray-box שמטמיע שרת בדיקות ישירות בתהליך האפליקציה. בניגוד ל-Appium, Detox מסתנכרן אוטומטית עם לולאת האירועים של React Native, ומספק בדיקות יציבות ללא sleep(). זה חשוב במיוחד לפרויקטים עם אנימציות דינמיות ובקשות רשת תכופות. הניסיון שלנו — 5+ שנים ויותר מ-15 פרויקטים מיושמים — מאפשר לנו להבטיח יציבות בדיקות אפילו בממשקי משתמש מורכבים.

למה Detox, לא Appium?

קריטריון Detox Appium
סוג גישה Gray-box (שרת מוטמע) Black-box (חיצוני)
סנכרון אוטומטי עם thread של JS דורש sleep() והמתנות
יציבות ב-RN גבוהה נמוכה (נכשל לעתים קרובות)
תמיכה באנימציות מובנית דרך המתנות
מהירות ביצוע מהיר יותר איטי יותר עקב עיכובים
שיעור כשלונות ב-CI 5-10% 30-50%

אנחנו משתמשים ב-Detox כי זה ה-framework היחיד שמבין את הפעולה הפנימית של React Native. התוצאה — בדיקות שלא נכשלות באקראי ב-CI.

איך אנחנו מגדירים את Detox: מלכודות ראשונות

הגדרת Detox לוקחת יותר זמן ממה שנראה. במיוחד ב-iOS. הנה התצורה ברירת המחדל שאנחנו משתמשים בה:

{ "detox": {
    "testRunner": {
      "args": {
        "$0": "jest",
        "config": "e2e/jest.config.js"
      },
      "jest": {
        "setupTimeout": 120000
      }
    },
    "apps": {
      "ios.debug": {
        "type": "ios.app",
        "binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/MyApp.app",
        "build": "xcodebuild -workspace ios/MyApp.xcworkspace -scheme MyApp -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build"
      },
      "android.debug": {
        "type": "android.apk",
        "binaryPath": "android/app/build/outputs/apk/debug/app-debug.apk",
        "build": "cd android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug"
      }
    },
    "devices": {
      "simulator": {
        "type": "ios.simulator",
        "device": {
          "type": "iPhone 15",
          "os": "iOS 17.4"
        }
      },
      "emulator": {
        "type": "android.emulator",
        "device": {
          "avdName": "Pixel_7_API_34"
        }
      }
    }
  }
}

בעיה נפוצה: ה-APK חייב להיבנות עם { "detox": { "testRunner": { "args": { "$0": "jest", "config": "e2e/jest.config.js" }, "jest": { "setupTimeout": 120000 } }, "apps": { "ios.debug": { "type": "ios.app", "binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/MyApp.app", "build": "xcodebuild -workspace ios/MyApp.xcworkspace -scheme MyApp -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build" }, "android.debug": { "type": "android.apk", "binaryPath": "android/app/build/outputs/apk/debug/app-debug.apk", "build": "cd android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug" } }, "devices": { "simulator": { "type": "ios.simulator", "device": { "type": "iPhone 15", "os": "iOS 17.4" } }, "emulator": { "type": "android.emulator", "device": { "avdName": "Pixel_7_API_34" } } } } } — אחרת הסנכרון לא עובד. ב-iOS, רק build של סימולטור (assembleAndroidTest). מכשירים פיזיים דורשים profiling וחתימה נפרדים. כמו כן, הגדר -sdk iphonesimulator — לפרויקטים גדולים אנחנו משתמשים ב-120 שניות כדי שבדיקות יוכלו לאתחל.

איך להימנע מבדיקות לא יציבות?

בדיקות לא יציבות הן הכאב העיקרי ב-CI. Detox מפחית אותן אבל לא מבטל לחלוטין. הנה טבלה עם גורמים אופייניים ופתרונות:

גורם פתרון
אנימציות אינסופיות השבת ב-test build באמצעות דגל setupTimeout או detoxDisableHierarchyDump מותאם אישית
בקשות רשת שלא הושלמו השתמש ב-IS_TESTING עם timeout, או יירט בקשות דרך waitFor
מצב מסך לא מאופס קרא ל-mock לפני כל בדיקה
timeouts לא מספקים של Jest הגדל device.reloadReactNative() ל-120 שניות
גרסאות iOS/Android שונות בדוק על אותן גרסאות כמו ב-CI

אנחנו גם משתמשים במוסכמת jest.setTimeout: testID. זה מפשט תחזוקה ואיתור אלמנטים.

בדיקות מקבילות: איך להאיץ CI?

Detox תומך בביצוע מקבילי דרך Jest sharding. פקודה:

detox test --configuration android.debug --workers 3 

דרושים 3 אמולטורים או סימולטורים. ב-macOS, אתה צריך 16 GB RAM עבור 3 סימולטורים. AVDs נוצרים אוטומטית עם הרשאות מתאימות. ביצוע מקבילי מקצר את זמן הריצה המלא מ-45 דקות ל-15 דקות — פי שלושה מהר יותר.

אינטגרציית CI: מתכון ל-GitHub Actions

עבור iOS, השתמש ב-macOS runner; עבור Android, Ubuntu עם screen_component_action. דוגמה ל-build ובדיקה:

---
jobs:
  e2e-ios:
    runs-on: macos-14
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - run: npx pod-install
      - run: npx detox build --configuration ios.debug
      - run: npx detox test --configuration ios.debug --headless

עבור Android, detox test --configuration android.debug --workers 3 הוא חובה; אחרת, האמולטור לא ימצא תצוגה. כמו כן, שמור במטמון סימולטורים ואמולטורים כדי להימנע מיצירתם מאפס.

פקודות Detox אופייניות לניפוי באגים
  • reactivecircus/android-emulator-runner — שימוש חוזר במכשיר שכבר הופעל.
  • jobs: e2e-ios: runs-on: macos-14 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: { node-version: '20' } - run: npm ci - run: npx pod-install - run: npx detox build --configuration ios.debug - run: npx detox test --configuration ios.debug --headless — הקלטת לוגים של כל הבדיקות.
  • --headless — שמירת לוג build.
  • detox test —reuse — ריצה עם מצב debug.

מה כלול

  • הגדרת Detox מלאה ל-iOS ו-Android
  • כתיבת בדיקות לזרימות משתמש מרכזיות (אימות, ניווט, תשלומים)
  • תיעוד להגדרה והרחבת בדיקות
  • אינטגרציה ל-CI/CD שלך (GitHub Actions, GitLab CI, Jenkins)
  • הדרכת צוות (שעתיים + גישה להקלטה)
  • הבטחת יציבות בדיקות: לא יותר מ-5% כשלונות לא יציבים

ציר זמן ועלות

הגדרת תצורה בסיסית וכיסוי זרימות מרכזיות לוקחת 5 ימים. עם מודולים native מורכבים (התראות push, ביומטריה, מצלמה) — עד 7 ימים. העלות מחושבת באופן אישי — צור קשר, וננתח את האפליקציה שלך ונציע תוכנית אופטימלית.

אנחנו מבטיחים יציבות בדיקות בכל השלבים. פנה אלינו — נעזור לצוות שלך לשכוח מבדיקות לא יציבות ולהאיץ את מחזור השחרור. קבל ייעוץ: שלח בקשה, וניצור איתך קשר תוך יום.