پرش به محتوای اصلی

سرویس Docker

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

پیکربندی که آمادگی کانتینرهای شما را قبل از شروع تست‌ها بررسی می‌کند. معمولاً این یک آدرس localhost خواهد بود. اگر healthCheck پیکربندی نشده باشد، Webdriver بلافاصله پس از شروع کانتینر Docker، اجرای تست‌ها را شروع می‌کند، که ممکن است با توجه به اینکه راه‌اندازی سرویس وب در داخل کانتینر Docker زمان می‌برد، خیلی زود باشد.

نوع: String|Object

گزینه‌ها برای استفاده از Object:

  • url - آدرس برنامه‌ای که در داخل کانتینر شما اجرا می‌شود
  • maxRetries - تعداد تلاش‌های مجدد تا زمانی که healthcheck با شکست مواجه شود. پیش‌فرض: 10
  • inspectInterval - فاصله بین هر تلاش مجدد به میلی‌ثانیه. پیش‌فرض: 500
  • startDelay - تأخیر اولیه برای شروع healthcheck به میلی‌ثانیه. پیش‌فرض: 0

مثال 1 (String): healthCheck: 'http://localhost:4444'

مثال 2 (Object):

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 CLI است.

نوع: String

dockerOptions.command

هر دستوری که ممکن است بخواهید به کانتینر منتقل کنید. مطابق با [COMMAND] در Docker run CLI است.

نوع: String

onDockerReady

یک متد بازگشتی که وقتی برنامه Docker آماده باشد فراخوانی می‌شود. آمادگی با توانایی پینگ کردن آدرس healthCheck تعیین می‌شود.

نوع: Function

dockerLogs

مسیری که لاگ‌های کانتینر docker باید در آن ذخیره شوند

نوع: String

موارد استفاده از تست / دستورالعمل‌ها

لطفاً برای جزئیات بیشتر به Wiki ما مراجعه کنید.

Welcome! How can I help?

WebdriverIO AI Copilot