TypeScript 设置
您可以使用TypeScript编写测试以获得自动完成和类型安全。
您需要通过以下方式在devDependencies
中安装tsx
:
- npm
- Yarn
- pnpm
$ npm install tsx --save-dev
$ yarn add tsx --dev
$ pnpm add tsx --save-dev
WebdriverIO 将自动检测这些依赖项是否已安装,并为您编译您的配置和测试。确保在您的 WDIO 配置所在的同一目录中有一个tsconfig.json
。
自定义 TSConfig
如果您需要为tsconfig.json
设置不同的路径,请使用您所需的路径设置 TSCONFIG_PATH 环境变量,或使用 wdio 配置的tsConfigPath 设置。
或者,您可以使用环境变量来配置tsx
。
类型检查
请注意,tsx
不支持类型检查 - 如果您希望检查您的类型,则需要使用tsc
在单独的步骤中执行此操作。
框架设置
您的tsconfig.json
需要以下内容
{
"compilerOptions": {
"types": ["node", "@wdio/globals/types"]
}
}
请避免显式导入webdriverio
或@wdio/sync
。一旦添加到tsconfig.json
中的types
中,WebdriverIO
和WebDriver
类型就可以在任何地方访问。如果您使用其他 WebdriverIO 服务、插件或devtools
自动化包,请也将其添加到types
列表中,因为许多包提供了额外的类型定义。
框架类型
根据您使用的框架,您需要将该框架的类型添加到您的tsconfig.json
types 属性中,并安装其类型定义。如果您希望对内置断言库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 config: Options.WebdriverIO = {
hostname: 'https://127.0.0.1',
port: '4444' // Error: Type 'string' is not assignable to type 'number'.ts(2322)
capabilities: {
browserName: 'chrome'
}
}
提示和技巧
编译和整理
为了完全安全,您可以考虑遵循最佳实践:使用 TypeScript 编译器编译您的代码(运行tsc
或npx tsc
),并在提交前钩子上运行eslint。