خدمة اختبار امتدادات VSCode
wdio-vscode-service هي حزمة من طرف ثالث، لمزيد من المعلومات يرجى الاطلاع على GitHub | npm
تم اختباره على:
خدمة WebdriverIO لاختبار امتدادات VSCode.
تتيح لك خدمة WebdriverIO هذه اختبار امتدادات VSCode من البداية إلى النهاية بسلاسة في واجهة VSCode المكتبية أو كامتداد ويب. كل ما تحتاجه هو توفير مسار إلى امتدادك وستقوم الخدمة بباقي المهام عن طريق:
- 🏗️ تثبيت VSCode (إما
stable
أوinsiders
أو إصدار محدد) - ⬇️ تنزيل Chromedriver المحدد لإصدار VSCode المعين
- 🚀 تمكينك من الوصول إلى واجهة برمجة تطبيقات VSCode من اختباراتك
- 🖥️ بدء تشغيل VSCode بإعدادات مستخدم مخصصة (بما في ذلك دعم VSCode على Ubuntu و MacOS و Windows)
- 🌐 أو استضافة VSCode من خادم ليتم الوصول إليه من أي متصفح لاختبار امتدادات الويب
- 📔 إعداد كائنات الصفحة باستخدام محددات مواقع تتوافق مع إصدار VSCode الخاص بك
استُلهم هذا المشروع بشكل كبير من مشروع vscode-extension-tester الذي يعتمد على Selenium. تأخذ هذه الحزمة الفكرة وتكيفها مع WebdriverIO.
بدءًا من إصدار VSCode v1.86، من الضروري استخدام webdriverio
الإصدار v8.14 أو أحدث لتثبيت Chromedriver دون الحاجة إلى أي تكوين. إذا كنت بحاجة إلى اختبار إصدارات سابقة من VSCode، راجع قسم تكوين Chromedriver أدناه.
التثبيت
لبدء مشروع WebdriverIO جديد، قم بتشغيل:
npm create wdio ./
سيرشدك معالج التثبيت خلال العملية. تأكد من اختيار TypeScript كمترجم وعدم توليد كائنات صفحة لك نظرًا لأن هذا المشروع يأتي مع جميع كائنات الصفحة اللازمة. ثم تأكد من اختيار vscode
ضمن قائمة الخدمات:
لمزيد من المعلومات حول كيفية تثبيت WebdriverIO
، يرجى مراجعة وثائق المشروع.
مثال التكوين
لاستخدام الخدمة، تحتاج إلى إضافة vscode
إلى قائمة الخدمات الخاصة بك، متبوعًا بشكل اختياري بكائن تكوين. سيجعل هذا WebdriverIO يقوم بتنزيل ملفات VSCode الثنائية المحددة وإصدار Chromedriver المناسب:
// wdio.conf.ts
export const config = {
outputDir: 'trace',
// ...
capabilities: [{
browserName: 'vscode',
browserVersion: '1.86.0', // "insiders" or "stable" for latest VSCode version
'wdio:vscodeOptions': {
extensionPath: __dirname,
userSettings: {
"editor.fontSize": 14
}
}
}],
services: ['vscode'],
/**
* Optionally define the path WebdriverIO stores all VSCode binaries, e.g.:
* services: [['vscode', { cachePath: __dirname }]]
*/
// ...
};
إذا قمت بتحديد wdio:vscodeOptions
مع أي browserName
آخر غير vscode
، مثل chrome
، ستقوم الخدمة بخدمة الامتداد كامتداد ويب. إذا كنت تختبر على Chrome، لا تحتاج إلى خدمة سائق إضافية، مثل:
// wdio.conf.ts
export const config = {
outputDir: 'trace',
// ...
capabilities: [{
browserName: 'chrome',
'wdio:vscodeOptions': {
extensionPath: __dirname
}
}],
services: ['vscode'],
// ...
};
ملاحظة: عند اختبار امتدادات الويب، يمكنك فقط الاختيار بين stable
أو insiders
كـ browserVersion
.
إعداد TypeScript
في ملف tsconfig.json
الخاص بك، تأكد من إضافة wdio-vscode-service
إلى قائمة الأنواع:
{
"compilerOptions": {
"types": [
"node",
"webdriverio/async",
"@wdio/mocha-framework",
"expect-webdriverio",
"wdio-vscode-service"
],
"target": "es2019",
"moduleResolution": "node",
"esModuleInterop": true
}
}
الاستخدام
يمكنك بعد ذلك استخدام طريقة getWorkbench
للوصول إلى كائنات الصفحة لمحددات المواقع التي تتطابق مع إصدار VSCode المطلوب:
describe('WDIO VSCode Service', () => {
it('should be able to load VSCode', async () => {
const workbench = await browser.getWorkbench()
expect(await workbench.getTitleBar().getTitle())
.toBe('[Extension Development Host] - README.md - wdio-vscode-service - Visual Studio Code')
})
})