DEV Community

Cover image for أفضل بدائل Insomnia CLI (inso) لاختبار الـ API في CI
Yusuf Khalidd
Yusuf Khalidd

Posted on • Originally published at apidog.com

أفضل بدائل Insomnia CLI (inso) لاختبار الـ API في CI

إذا كنت تشغّل Insomnia داخل CI، فغالبًا تستخدم inso. هذه الأداة هي واجهة سطر الأوامر المرتبطة بعميل Insomnia API، وتُستخدم عادةً لثلاث مهام: تشغيل مجموعات الاختبار، تشغيل مجموعات الطلبات، وتدقيق مواصفات OpenAPI عبر Spectral. هذا يكفي لفرق كثيرة، لكن تظهر القيود عندما تحتاج إلى ملفات أكثر قابلية للإصدار، معرفات مستقرة، أو تشغيل اختبارات API خارج نموذج Insomnia.

جرّب Apidog اليوم

في هذا الدليل سنفكك ما يقدمه inso فعليًا، متى تحتاج إلى بديل لـ inso، وما الأدوات العملية التي يمكن استخدامها حسب المهمة: تشغيل اختبارات، تدقيق OpenAPI، إدارة مجموعات، أو بناء اختبارات API ككود.

ماذا يفعل inso؟ وأين تظهر المشكلة؟

يقرأ inso عادةً من مجلد .insomnia داخل مشروعك، وهو المجلد الذي ينشئه Git Sync في Insomnia. ويمكنه أيضًا القراءة من بيانات تطبيق Insomnia المحلي إذا كان التطبيق مثبتًا.

الأوامر الأساسية تبدو هكذا:

inso run test "My API Test Suite" --env "Staging"
inso run collection "Smoke Tests" --env "Staging"
inso lint spec "Petstore Design Doc"
inso export spec "Petstore Design Doc" --output openapi.yaml
Enter fullscreen mode Exit fullscreen mode

يمكن تثبيته عبر Homebrew أو Docker أو تنزيل مباشر:

brew install inso

docker pull kong/inso:latest
Enter fullscreen mode Exit fullscreen mode

الميزة القوية هنا هي inso lint spec، لأنها تعتمد على Spectral لتدقيق مواصفات OpenAPI. لذلك قبل أن تستبدل inso بالكامل، حدد أولًا: هل تستخدمه لتشغيل الاختبارات، أم لتدقيق المواصفات؟

الأسباب الشائعة للبحث عن بديل لـ inso:

  • الاعتماد على بيانات Insomnia: مصدر الحقيقة يعيش داخل .insomnia أو بيانات تطبيق سطح المكتب، وليس دائمًا كملفات مستقلة سهلة المراجعة.
  • الاعتماد على أسماء العرض: الأوامر تشير إلى المجموعات والمواصفات بالاسم. إذا غيّرت الاسم في الواجهة، قد ينكسر أمر CI.
  • الارتباط بحساب أو مزامنة بائع: بعد تغييرات Insomnia 8، بدأت بعض الفرق تفضل أدوات لا تربط الاختبارات بحساب أو خدمة خارجية.
  • خلط التدقيق مع التشغيل: قد تحتاج فقط إلى تشغيل اختبارات API، أو فقط إلى تدقيق OpenAPI. ليس بالضرورة أن تكون الأداة نفسها مسؤولة عن الاثنين.

قاعدة عملية:

إذا كان استخدامك الأساسي هو inso lint spec، فقد يكون Spectral أو Redocly CLI أنسب من مشغلات مجموعات API. أما إذا كان استخدامك الأساسي هو inso run test أو inso run collection، فالبدائل التالية أكثر صلة.

مقارنة سريعة بين البدائل

الأداة النوع صيغة المصدر اختبار بالبيانات التقارير مفتوح المصدر الأفضل لـ
Apidog CLI مشغل ضمن منصة API كاملة مشروع Apidog / استيراد OpenAPI نعم، CSV/JSON عبر -d CLI, HTML, JSON لا، مع طبقة مجانية تصميم، محاكاة، توثيق، واختبار في منصة واحدة
Newman مشغل مجموعات Postman ملف Postman Collection JSON نعم عبر -d CLI, HTML, JSON نعم الفرق التي لديها مجموعات Postman جاهزة
Hoppscotch CLI مشغل مجموعات OSS ملف Hoppscotch JSON / معرف سحابي نعم CLI, JUnit XML نعم CI مفتوح المصدر وقابل للاستضافة الذاتية
Step CI اختبارات API وصفية YAML / JSON محدود CLI, JUnit نعم اختبارات كملفات داخل المستودع
Hurl مشغل HTTP نصي ملفات .hurl عبر المتغيرات CLI, JUnit, HTML نعم اختبارات HTTP خفيفة وسريعة

1. Apidog CLI: عندما تريد منصة API كاملة

Apidog منصة API تجمع التصميم، التصحيح، الاختبار، المحاكاة، والتوثيق. أما Apidog CLI فينقل جزء الاختبار إلى الطرفية وCI/CD، لذلك يكون مناسبًا إذا كنت تريد بديلًا عمليًا لأوامر تشغيل inso.

تشغيل سيناريو اختبار

apidog run --access-token <token> -t <scenario-id> -e <env-id>
Enter fullscreen mode Exit fullscreen mode

تشغيل اختبار ببيانات CSV

apidog run -t <scenario-id> -d ./users.csv -r html,cli
Enter fullscreen mode Exit fullscreen mode

رفع تقرير الاختبار

apidog run -t <scenario-id> --upload-report
Enter fullscreen mode Exit fullscreen mode

يدعم apidog run:

  • البيئات عبر -e
  • البيانات الخارجية CSV/JSON عبر -d
  • تقارير CLI وHTML وJSON
  • رفع تقارير الاختبار عبر --upload-report

هذا يجعله مناسبًا عندما تريد تشغيل نفس السيناريو على عدة مدخلات، مثل اختبار تسجيل مستخدمين أو صلاحيات متعددة.

مثال CSV:

email,password,expectedStatus
user1@example.com,pass123,200
user2@example.com,wrongpass,401
Enter fullscreen mode Exit fullscreen mode

ثم تشغيله:

apidog run -t <scenario-id> -d ./users.csv -r cli,html
Enter fullscreen mode Exit fullscreen mode

إلى جانب الاختبارات، يدير Apidog CLI موارد API مثل الاستيراد من OpenAPI، والعمل مع نقاط النهاية، المخططات، البيئات، الفروع، وطلبات الدمج من الطرفية. هذا مفيد إذا كنت تريد أن تكون إدارة API أقرب إلى سير عمل Git بدل الاعتماد على قاعدة بيانات تطبيق سطح مكتب.

مهم: Apidog CLI لا يحل محل inso lint spec بشكل مباشر. هو يتحقق من صحة المواصفات عند الاستيراد، لكنه لا يوفر مدقق OpenAPI مستقلًا مثل Spectral. إذا كان التدقيق الصارم للمواصفات هو هدفك الأساسي، استخدم Spectral أو Redocly CLI بجانبه.

استخدم Apidog CLI إذا كنت تريد:

  • منصة واحدة للتصميم، الاختبار، المحاكاة، والتوثيق
  • تشغيل اختبارات API داخل CI
  • اختبارات معتمدة على CSV/JSON
  • تقارير متعددة الصيغ
  • إدارة موارد API من CLI

تجنب الاعتماد عليه وحده إذا كنت تريد:

  • بديلًا مباشرًا لـ inso lint spec
  • أداة مفتوحة المصدر بالكامل
  • تدقيق OpenAPI بأسلوب Spectral

روابط مفيدة:

2. Newman: إذا كانت مجموعاتك في Postman

Newman هو مشغل مجموعات Postman من سطر الأوامر. إذا كان فريقك يستخدم Postman بالفعل، فهو غالبًا أسهل بديل لـ inso cli من ناحية التنفيذ، لأنك لن تعيد بناء المجموعات من الصفر.

تشغيل مجموعة:

newman run collection.json -e staging.json -d data.csv -r cli,html,json
Enter fullscreen mode Exit fullscreen mode

مثال داخل GitHub Actions:

name: API tests

on:
  push:
    branches: [main]

jobs:
  newman:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install Newman
        run: npm install -g newman newman-reporter-htmlextra

      - name: Run Postman collection
        run: |
          newman run collection.json \
            -e staging.json \
            -d data.csv \
            -r cli,htmlextra,json
Enter fullscreen mode Exit fullscreen mode

الإيجابيات:

  • يشغل مجموعات Postman الموجودة
  • مفتوح المصدر
  • مجتمع كبير وأمثلة CI كثيرة
  • دعم جيد للتقارير

السلبيات:

  • مرتبط بتنسيق Postman Collection
  • لا يوفر تدقيق OpenAPI
  • إدارة المجموعات تتم غالبًا من Postman، لا من ملفات مواصفات عادية

إذا كنت تقارن بين Newman ومشغل منصة API، راجع: Apidog CLI مقابل Newman.

3. Hoppscotch CLI: خيار مفتوح المصدر وقابل للاستضافة الذاتية

Hoppscotch نظام API مفتوح المصدر يضم واجهة ويب، تطبيق سطح مكتب، CLI، وإمكانية الاستضافة الذاتية. الأداة @hoppscotch/cli تشغل المجموعات داخل CI.

التثبيت:

npm i -g @hoppscotch/cli
Enter fullscreen mode Exit fullscreen mode

يتطلب الإصدارات الحديثة من Hoppscotch CLI وجود Node.js v22 أو أحدث. إذا كنت تستخدم Node 20، قد تحتاج إلى البقاء على CLI v0.26.0.

تشغيل مجموعة محلية:

hopp test ./collection.json -e ./env.json
Enter fullscreen mode Exit fullscreen mode

تشغيل مجموعة من خادم Hoppscotch:

hopp test <collection-id> --token <pat> --server https://hoppscotch.example.com
Enter fullscreen mode Exit fullscreen mode

إخراج تقرير JUnit:

hopp test ./collection.json --reporter-junit ./report.xml
Enter fullscreen mode Exit fullscreen mode

استخدام بيانات تكرار:

hopp test ./collection.json \
  --iteration-count 10 \
  --iteration-data ./data.csv
Enter fullscreen mode Exit fullscreen mode

يدعم hopp test:

  • بيئات عبر -e
  • خوادم مستضافة ذاتيًا عبر --server
  • رموز وصول شخصية عبر --token
  • تقارير JUnit XML
  • تكرارات مدعومة بالبيانات
  • سكربتات قبل الطلب والاختبار باستخدام pw.test() وpw.expect()

الإيجابيات:

  • مفتوح المصدر
  • قابل للاستضافة الذاتية
  • مناسب للفرق التي لا تريد حساب بائع
  • يدعم JUnit للتكامل مع CI

السلبيات:

  • يتطلب Node حديثًا
  • النظام البيئي أصغر من Newman
  • لا يوفر تدقيق OpenAPI

للمقارنة مع أدوات أخرى:

4. Step CI: اختبارات API كملفات YAML

Step CI مناسب إذا كنت تريد أن تعيش الاختبارات داخل المستودع كملفات YAML أو JSON، بدل الإشارة إلى مجموعة تم إنشاؤها في واجهة رسومية.

مثال بسيط:

version: "1.1"
name: Status check

tests:
  health:
    steps:
      - name: GET health
        http:
          url: https://api.example.com/health
          method: GET
          check:
            status: 200
Enter fullscreen mode Exit fullscreen mode

يمكنك وضع الملف مثلًا في:

tests/api/health.yml
Enter fullscreen mode Exit fullscreen mode

ثم تشغيله داخل CI:

stepci run tests/api/health.yml
Enter fullscreen mode Exit fullscreen mode

هذا يعالج مشكلة شائعة في inso: الاعتماد على أسماء المجموعات. هنا، مسار الملف نفسه هو نقطة الدخول، ويمكن مراجعته في Pull Request مثل أي كود آخر.

الإيجابيات:

  • الاختبارات ملفات داخل المستودع
  • لا تحتاج إلى تطبيق سطح مكتب
  • مناسب للفرق التي تعتمد Git كمصدر حقيقة
  • يمكن إنتاج JUnit للتكامل مع CI

السلبيات:

  • أقل تفاعلية من أدوات GUI
  • ستكتب تفاصيل أكثر يدويًا
  • دعم البيانات الموجهة أقل مرونة من Newman أو Apidog

استخدم Step CI عندما تريد بديلًا نظيفًا لـ insomnia cli مبنيًا على ملفات قابلة للمراجعة بدل قاعدة بيانات أداة.

5. Hurl: أبسط خيار لاختبارات HTTP النصية

Hurl يجعل اختبارات HTTP ملفات نصية عادية بامتداد .hurl. لا توجد واجهة رسومية، ولا حساب، ولا قاعدة بيانات.

مثال:

GET https://api.example.com/users/1
HTTP 200
[Asserts]
jsonpath "$.id" == 1
jsonpath "$.name" exists
Enter fullscreen mode Exit fullscreen mode

تشغيل الاختبار:

hurl --test users.hurl
Enter fullscreen mode Exit fullscreen mode

مثال مع تقرير JUnit:

hurl --test users.hurl --report-junit report.xml
Enter fullscreen mode Exit fullscreen mode

يمكن استخدامه لاختبارات smoke بسيطة، مثل:

GET https://api.example.com/health
HTTP 200
[Asserts]
jsonpath "$.status" == "ok"
Enter fullscreen mode Exit fullscreen mode

الإيجابيات:

  • ملفات نصية سهلة القراءة
  • ممتاز للتحكم في الإصدارات
  • خفيف جدًا داخل CI
  • يدعم ربط الطلبات والتقاط المتغيرات
  • يدعم تقارير JUnit وHTML

السلبيات:

  • ليس إطار اختبار كامل
  • السيناريوهات المعقدة قد تصبح طويلة
  • لا يوفر واجهة رسومية
  • لا يوفر تدقيق OpenAPI

استخدم Hurl عندما تريد اختبارات HTTP مباشرة وسريعة بدون منصة كاملة.

ماذا تستخدم بدل inso؟

اختر حسب سبب استخدامك لـ inso اليوم:

  • تستخدم inso run test وتريد منصة API كاملة: استخدم Apidog CLI.
  • لديك مجموعات Postman جاهزة: استخدم Newman.
  • تريد بديلًا مفتوح المصدر وقابلًا للاستضافة الذاتية: استخدم Hoppscotch CLI.
  • تريد الاختبارات كملفات YAML داخل المستودع: استخدم Step CI.
  • تريد اختبارات HTTP خفيفة جدًا: استخدم Hurl.
  • تستخدم inso lint spec أساسًا: لا تستبدله بمشغل مجموعات فقط. استخدم Spectral مباشرة أو أداة تدقيق OpenAPI متخصصة.

مثال عملي للجمع بين الأدوات:

# 1. تدقيق OpenAPI
spectral lint openapi.yaml

# 2. تشغيل اختبارات API
apidog run -t <scenario-id> -e <env-id> -r cli,json
Enter fullscreen mode Exit fullscreen mode

أو مع Newman:

spectral lint openapi.yaml
newman run collection.json -e staging.json -r cli,json
Enter fullscreen mode Exit fullscreen mode

بهذا تفصل بين مسؤوليتين مختلفتين:

  1. تدقيق المواصفة.
  2. تشغيل اختبارات API.

وهذا غالبًا أنظف من البحث عن أداة واحدة تحاول فعل كل شيء بنفس الطريقة.

إذا كنت تنتقل من Insomnia عمومًا وليس فقط من inso، فهذه القراءات مفيدة:

Top comments (0)