Skip to content

Commit

Permalink
type improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
christian-bromann committed Jun 3, 2022
1 parent f475a59 commit 0e22a03
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 11 deletions.
20 changes: 20 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,26 @@ describe('my extension', () => {
})
```

## TypeScript Support

If you use WebdriverIO with TypeScript make sure to add `wdio-vscode-service` to your `types` in your `tsconfig.json`, e.g.:

```json
{
"compilerOptions": {
"moduleResolution": "node",
"types": [
"webdriverio/async",
"@wdio/mocha-framework",
"expect-webdriverio",
// add this service to your types
"wdio-devtools-service"
],
"target": "es2019"
}
}
```

---

For more information on WebdriverIO check out the project [homepage](https://webdriver.io).
7 changes: 7 additions & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
import VSCodeServiceLauncher from './launcher'
import VSCodeWorkerService from './service'
import type { WDIOVSCodeServiceOptions as WDIOVSCodeServiceOptionsExtension } from './types'

export default VSCodeWorkerService
export const launcher = VSCodeServiceLauncher

export * from './pageobjects'

declare global {
namespace WebdriverIO {
interface WDIOVSCodeServiceOptions extends WDIOVSCodeServiceOptionsExtension {}
}
}
21 changes: 14 additions & 7 deletions src/service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -223,14 +223,21 @@ export default class VSCodeWorkerService implements Services.ServiceInstance {
}
}

interface VSCodeCommands {
getWorkbench: () => Promise<Workbench>
// Todo(Christian): properly type VSCode object here
executeWorkbench: <T>(fn: (vscode: any, ...params: any[]) => T) => Promise<T>
getVSCodeVersion: () => Promise<string>
getVSCodeChannel: () => Promise<string>
}

declare global {
namespace WebdriverIO {
interface Browser {
getWorkbench: () => Promise<Workbench>
// Todo(Christian): properly type VSCode object here
executeWorkbench: <T>(fn: (vscode: any, ...params: any[]) => T) => Promise<T>
getVSCodeVersion: () => Promise<string>
getVSCodeChannel: () => Promise<string>
}
interface Browser extends VSCodeCommands {}
}

namespace WebdriverIOAsync {
interface Browser extends VSCodeCommands {}
interface MultiRemoteBrowser extends VSCodeCommands { }
}
}
13 changes: 9 additions & 4 deletions src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@ import type { ChromedriverServiceOptions } from 'wdio-chromedriver-service'
import type { Capabilities } from '@wdio/types'
import type { VSCODE_CAPABILITY_KEY } from './constants'

/**
* extend WebdriverIO capabilities object
*/
export interface WDIOVSCodeServiceOptions {
[VSCODE_CAPABILITY_KEY]?: VSCodeOptions
}

export interface VSCodeCapabilities extends Capabilities.Capabilities, WDIOVSCodeServiceOptions {}

/**
* Settings to handle VSCode Proxy API
*/
Expand Down Expand Up @@ -99,10 +108,6 @@ export interface VSCodeOptions {
vscodeProxyOptions: Partial<VSCodeProxyOptions>
}

export interface VSCodeCapabilities extends Capabilities.Capabilities {
[VSCODE_CAPABILITY_KEY]?: VSCodeOptions
}

export interface WDIOLogs {
level: string
message: string
Expand Down

0 comments on commit 0e22a03

Please sign in to comment.