Перейти до основного вмісту

Налаштування TypeScript

Ви можете писати тести, використовуючи TypeScript, щоб отримати автозаповнення та типову безпеку.

Вам знадобиться встановлений tsx у devDependencies, через:

$ npm install tsx --save-dev

WebdriverIO автоматично виявить, чи встановлені ці залежності, і скомпілює ваш конфіг та тести для вас. Переконайтеся, що у вас є tsconfig.json в тій же директорії, що і ваш конфіг WDIO.

Користувацький TSConfig​

Якщо вам потрібно встановити інший шлях для tsconfig.json, будь ласка, встановіть змінну середовища TSCONFIG_PATH з бажаним шляхом або використовуйте налаштування tsConfigPath у конфігурації wdio.

Альтернативно, ви можете використовувати змінну середовища для tsx.

Перевірка типів​

Зауважте, що tsx не підтримує перевірку типів - якщо ви бажаєте перевірити свої типи, вам потрібно зробити це окремим кроком за допомогою tsc.

Налаштування фреймворку​

Ваш tsconfig.json потребує наступного:

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 і додати його таким чином, щоб усі типи були доступні глобально:

tsconfig.json
{
"compilerOptions": {
"types": ["node", "@wdio/globals/types", "@wdio/mocha-framework"]
}
}

Сервіси​

Якщо ви використовуєте сервіси, які додають команди до області браузера, вам також потрібно включити їх у свій tsconfig.json. Наприклад, якщо ви використовуєте @wdio/lighthouse-service, переконайтеся, що ви також додали його до types, наприклад:

tsconfig.json
{
"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, що працює на хуку pre-commit.

Welcome! How can I help?

WebdriverIO AI Copilot