Skip to content

Type mismatch on setupBrowser argument #51

@hugueschabot

Description

@hugueschabot

If I create a new wdio (currently version 8.27) project with TypeScript and Testing Library, when I used setupBrowser I get a compilation error. However, the test can be executed normally so this is not a valid type error.

Example

import { expect, browser, $ } from "@wdio/globals";
import { setupBrowser } from "@testing-library/webdriverio";

describe("My Login application", () => {
  it("should login with valid credentials", async () => {
    const { getByRole } = setupBrowser(browser);
    // ...
  });
});

Compilation error:

Argument of type 'Browser' is not assignable to parameter of type 'BrowserBase'.
  Type 'Browser' is not assignable to type 'SelectorsBase'.
    The types returned by '$$(...)' are incompatible between these types.
      Type 'ChainablePromiseArray<ElementArray>' is not assignable to type 'Element[] | ChainablePromiseArrayBase<Promise<Element>> | Promise<Element[]>'.
        Type 'ChainablePromiseArray<ElementArray>' is missing the following properties from type 'Element[]': pop, push, concat, join, and 20 more.ts(2345)

Workaround

The workaround I found is to convince TypeScript that everything is okay by forcing a type cast: setupBrowser(browser as unknown as BrowserBase)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions