خدمة دوكر
wdio-docker-service هي حزمة من طرف ثالث، لمزيد من المعلومات يرجى زيارة GitHub | npm
هذه الخدمة مخصصة للاستخدام مع WebdriverIO وتساعد في تش غيل اختبارات وظيفية/تكاملية ضد/باستخدام تطبيقات حاويات. وهي تستخدم خدمة Docker الشهيرة (مثبتة بشكل منفصل) لتشغيل الحاويات.
لماذا تستخدمها؟
مثالياً، يجب أن تعمل اختباراتك في نوع من خط أنابيب CI/CD حيث غالباً لا توجد متصفحات "حقيقية" وموارد أخرى يعتمد عليها تطبيقك. مع ظهور Docker، يمكن وضع جميع تبعيات التطبيق الضرورية في حاويات. مع هذه الخدمة يمكنك تشغيل حاوية التطبيق أو docker-selenium في نظام CI الخاص بك وفي عزلة تامة (بافتراض أن CI يمكن أن يكون لديه Docker مثبت كتبعية). نفس الشيء قد ينطبق على التطوير المحلي إذا كان تطبيقك يحتاج إلى مستوى من العزلة عن نظام التشغيل الرئيسي الخاص بك.
كيف تعمل
ستقوم الخدمة بتشغيل صورة Docker موجودة، وبمجرد أن تكون جاهزة، ستبدأ اختبارات WebdriverIO التي يجب أن تعمل ضد تطبيقك الموجود في الحاوية.
التثبيت
قم بتشغيل:
npm install wdio-docker-service --save-dev
يمكن العثور على تعليمات حول كيفية تثبيت WebdriverIO هنا.
التكوين
بشكل افتراضي، تتوفر Google Chrome وFirefox وPhantomJS عند تثبيتها على نظام المضيف.
لاستخدام الخدمة، تحتاج إلى إضافة docker
إلى مصفوفة الخدمات الخاصة بك:
// wdio.conf.js
exports.config = {
// ...
services: ['docker'],
// ...
};
الخيارات
dockerOptions
خيارات مختلفة مطلوبة لتشغيل حاوية docker
النوع: Object
الافتراضي: { options: { rm: true } }
مثال:
dockerOptions: {
image: 'selenium/standalone-chrome',
healthCheck: 'http://localhost:4444',
options: {
p: ['4444:4444'],
shmSize: '2g'
}
}
dockerOptions.image
علامة اسم حاوية Docker. يمكن أن تكون محلية أو من Docker HUB.
النوع: String
مطلوب: true
dockerOptions.healthCheck
التكوين الذي يتحقق من جاهزية الحاويات الخاصة بك قبل بدء الاختبارات. عادة ما يكون هذا عبارة عن عنوان URL للمضيف المحلي. إذا لم يتم تكوين healthCheck، فسيبدأ Webdriver في تشغيل الاختبارات مباشرة بعد بدء حاوية Docker، وهو ما قد يكون مبكرًا جدًا بالنظر إلى أنه يستغرق وقتًا لبدء خدمة الويب داخل حاوية Docker.
النوع: String|Object
خيارات استخدام الكائن:
- url - رابط URL للتطبيق الذي يعمل داخل الحاوية الخاصة بك
- maxRetries - عدد إعادة المحاولات حتى يفشل healthcheck. الافتراضي: 10
- inspectInterval - الفاصل الزمني بين كل إعادة محاولة بالميلي ثانية. الافتراضي: 500
- startDelay - التأخير الأولي لبدء الفحص الصحي بالميلي ثانية. الافتراضي: 0
مثال 1 (سلسلة نصية): healthCheck: 'http://localhost:4444'
مثال 2 (كائن):
healthCheck: {
url: 'http://localhost:4444',
maxRetries: 3,
inspectInterval: 1000,
startDelay: 2000
}
dockerOptions.options
خريطة الخيارات المستخدمة بواسطة أمر docker run
. لمزيد من التفاصيل حول أمر run
، انقر هنا.
سيتم تحويل أي خيار من حرف واحد إلى -[option]
(مثل d: true
-> -d
).
سيتم تحويل أي خيار مكون من حرفين أو أكثر إلى --[option]
(مثل rm: true
-> --rm
).
بالنسبة للخيارات التي قد تُستخدم أكثر من مرة (مثل -e
,-add-host
, --expose
, إلخ)، يرجى استخدام تدوين المصفوفة (مثل e: ["NODE_ENV=development", "FOO=bar"]
).
النوع: Object
مثال:
options: {
e: ['NODE_ENV=development', 'PROXY=http://myproxy:80']
p: ['4444:4444', '5900:5900'],
shmSize: '2g'
}
dockerOptions.args
أي وسيطات قد ترغب في تمريرها إلى الحاوية. تتوافق مع [ARG...]
في واجهة سطر أوامر Docker run.
النوع: String
dockerOptions.command
أي أمر قد ترغب في تمريره إلى الحاوية. يتوافق مع [COMMAND]
في واجهة سطر أوامر Docker run.
النوع: String
onDockerReady
طريقة رد الاتصال التي يتم استدعاؤها عندما يكون تطبيق Docker جاهزًا. يتم تحديد الجاهزية من خلال القدرة على اختبار عنوان URL للـ healthCheck
.
النوع: Function
dockerLogs
المسار إلى المكان الذي يجب تخزين سجلات حاوية docker فيه
النوع: String
حالات استخدام الاختبار / الوصفات
يرجى زيارة Wiki الخاص بنا لمزيد من التفاصيل.