راهاندازی TypeScript
شما میتوانید تستها را با استفاده از TypeScript بنویسید تا از تکمیل خودکار و ایمنی نوع بهرهمند شوید.
شما نیاز به نصب tsx در devDependencies خواهید داشت، از طریق:
- npm
- Yarn
- pnpm
$ npm install tsx --save-dev
$ yarn add tsx --dev
$ pnpm add tsx --save-dev
WebdriverIO به طور خودکار تشخیص میدهد که آیا این وابستگیها نصب شدهاند و پیکربندی و تستهای شما را کامپایل میکند. اطمینان حاصل کنید که یک tsconfig.json در همان دایرکتوری پیکربندی WDIO دارید.
TSConfig سفارشی
اگر نیاز به تنظیم مسیر متفاوتی برای tsconfig.json دارید، لطفاً متغیر محیطی TSCONFIG_PATH را با مسیر مورد نظر خود تنظیم کنید، یا از تنظیمات tsConfigPath در پیکربندی wdio استفاده کنید.
به طور جایگزین، میتوانید از متغیر محیطی برای tsx استفاده کنید.
بررسی نوع
توجه داشته باشید که tsx از بررسی نوع پشتیبانی نمیکند - اگر میخواهید انواع خود را بررسی کنید، باید این کار را در یک مرحله جداگانه با tsc انجام دهید.
راهاندازی چارچوب
فایل tsconfig.json شما نیاز به موارد زیر دارد:
{
"compilerOptions": {
"types": ["node", "@wdio/globals/types"]
}
}
لطفاً از وارد کردن صریح webdriverio یا @wdio/sync خودداری کنید.
انواع WebdriverIO و WebDriver از هر جایی پس از اضافه شدن به types در tsconfig.json قابل دسترسی هستند. اگر از سرویسهای اضافی WebdriverIO، افزونهها یا بسته اتوماسیون devtools استفاده میکنید، لطفاً آنها را نیز به لیست types اضافه کنید زیرا بسیاری از آنها تایپینگهای اضافی ارائه میدهند.
انواع چارچوب
بسته به چارچوبی که استفاده میکنید، باید انواع آن چارچوب را به ویژگی types در tsconfig.json خود اضافه کنید و همچنین تعاریف نوع آن را نصب کنید. این به ویژه زمانی مهم است که میخواهید از کتابخانه تأیید داخلی expect-webdriverio پشتیبانی نوع داشته باشید.
به عنوان مثال، اگر تصمیم به استفاده از چارچوب Mocha دارید، باید @types/mocha را نصب کنید و آن را به این صورت اضافه کنید تا همه انواع به صورت جهانی در دسترس باشند:
- Mocha
- Jasmine
- Cucumber
{
"compilerOptions": {
"types": ["node", "@wdio/globals/types", "@wdio/mocha-framework"]
}
}
{
"compilerOptions": {
"types": ["node", "@wdio/globals/types", "@wdio/jasmine-framework"]
}
}
{
"compilerOptions": {
"types": ["node", "@wdio/globals/types", "@wdio/cucumber-framework"]
}
}
سرویسها
اگر از سرویسهایی استفاده میکنید که دستوراتی را به محدوده مرورگر اضافه میکنند، باید آنها را نیز در tsconfig.json خود قرار دهید. به عنوان مثال، اگر از @wdio/lighthouse-service استفاده میکنید، اطمینان حاصل کنید که آن را نیز به types اضافه کنید، مانند:
{
"compilerOptions": {
"types": [
"node",
"@wdio/globals/types",
"@wdio/mocha-framework",
"@wdio/lighthouse-service"
]
}
}
افزودن سرویسها و گزارشگرها به پیکربندی TypeScript شما همچنین ایمنی نوع فایل پیکربندی WebdriverIO شما را تقویت میکند.
تعاریف نوع
هنگام اجرای دستورات WebdriverIO، تمام ویژگیها معمولاً تایپ میشوند به طوری که نیازی به وارد کردن انواع اضافی ندارید. با این حال، مواردی وجود دارد که میخواهید متغیرها را از قبل تعریف کنید. برای اطمینان از اینکه اینها از نظر نوع ایمن هستند، میتوانید از تمام انواع تعریف شده در بسته @wdio/types استفاده کنید. به عنوان مثال، اگر میخواهید گزینههای از راه دور را برای webdriverio تعریف کنید، میتوانید چنین کنید:
import type { Options } from '@wdio/types'
// اینجا مثالی است که ممکن است بخواهید انواع را مستقیماً وارد کنید
const remoteConfig: Options.WebdriverIO = {
hostname: 'http://localhost',
port: '4444' // Error: Type 'string' is not assignable to type 'number'.ts(2322)
capabilities: {
browserName: 'chrome'
}
}
// برای موارد دیگر، میتوانید از فضای نام `WebdriverIO` استفاده کنید
export const config: WebdriverIO.Config = {
...remoteConfig
// سایر گزینههای پیکربندی
}
نکات و راهنماییها
کامپایل و بررسی کد
برای اطمینان کامل، ممکن است در نظر داشته باشید بهترین روشها را دنبال کنید: کامپایل کد خود با کامپایلر TypeScript (اجرای tsc یا npx tsc) و داشتن eslint که در قلاب پیش-کامیت اجرا میشود.