إذا كنت تشغّل Insomnia داخل CI، فغالبًا تستخدم inso. هذه الأداة هي واجهة سطر الأوامر المرتبطة بعميل Insomnia API، وتُستخدم عادةً لثلاث مهام: تشغيل مجموعات الاختبار، تشغيل مجموعات الطلبات، وتدقيق مواصفات OpenAPI عبر Spectral. هذا يكفي لفرق كثيرة، لكن تظهر القيود عندما تحتاج إلى ملفات أكثر قابلية للإصدار، معرفات مستقرة، أو تشغيل اختبارات API خارج نموذج Insomnia.
في هذا الدليل سنفكك ما يقدمه 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
يمكن تثبيته عبر Homebrew أو Docker أو تنزيل مباشر:
brew install inso
docker pull kong/inso:latest
الميزة القوية هنا هي 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>
تشغيل اختبار ببيانات CSV
apidog run -t <scenario-id> -d ./users.csv -r html,cli
رفع تقرير الاختبار
apidog run -t <scenario-id> --upload-report
يدعم 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
ثم تشغيله:
apidog run -t <scenario-id> -d ./users.csv -r cli,html
إلى جانب الاختبارات، يدير 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
روابط مفيدة:
- الدليل الكامل لـ Apidog CLI
- Apidog CLI مقابل Newman
- Apidog CLI مقابل Postman CLI
- تشغيل Apidog CLI مع GitHub Actions
2. Newman: إذا كانت مجموعاتك في Postman
Newman هو مشغل مجموعات Postman من سطر الأوامر. إذا كان فريقك يستخدم Postman بالفعل، فهو غالبًا أسهل بديل لـ inso cli من ناحية التنفيذ، لأنك لن تعيد بناء المجموعات من الصفر.
تشغيل مجموعة:
newman run collection.json -e staging.json -d data.csv -r cli,html,json
مثال داخل 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
الإيجابيات:
- يشغل مجموعات 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
يتطلب الإصدارات الحديثة من Hoppscotch CLI وجود Node.js v22 أو أحدث. إذا كنت تستخدم Node 20، قد تحتاج إلى البقاء على CLI v0.26.0.
تشغيل مجموعة محلية:
hopp test ./collection.json -e ./env.json
تشغيل مجموعة من خادم Hoppscotch:
hopp test <collection-id> --token <pat> --server https://hoppscotch.example.com
إخراج تقرير JUnit:
hopp test ./collection.json --reporter-junit ./report.xml
استخدام بيانات تكرار:
hopp test ./collection.json \
--iteration-count 10 \
--iteration-data ./data.csv
يدعم 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
يمكنك وضع الملف مثلًا في:
tests/api/health.yml
ثم تشغيله داخل CI:
stepci run tests/api/health.yml
هذا يعالج مشكلة شائعة في 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
تشغيل الاختبار:
hurl --test users.hurl
مثال مع تقرير JUnit:
hurl --test users.hurl --report-junit report.xml
يمكن استخدامه لاختبارات smoke بسيطة، مثل:
GET https://api.example.com/health
HTTP 200
[Asserts]
jsonpath "$.status" == "ok"
الإيجابيات:
- ملفات نصية سهلة القراءة
- ممتاز للتحكم في الإصدارات
- خفيف جدًا داخل 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
أو مع Newman:
spectral lint openapi.yaml
newman run collection.json -e staging.json -r cli,json
بهذا تفصل بين مسؤوليتين مختلفتين:
- تدقيق المواصفة.
- تشغيل اختبارات API.
وهذا غالبًا أنظف من البحث عن أداة واحدة تحاول فعل كل شيء بنفس الطريقة.
إذا كنت تنتقل من Insomnia عمومًا وليس فقط من inso، فهذه القراءات مفيدة:
Top comments (0)