UNPKG

webdriverio

Version:

Next-gen browser and mobile automation test framework for Node.js

55 lines (41 loc) • 2.05 kB
# webdriverio User-facing automation API (`browser`, `$`, `$$`, element commands, mocks). Protocol transport belongs in `webdriver`. Shared types belong in `@wdio/types`. ## Layout - `src/commands/browser/` — `browser.*` commands - `src/commands/element/` — element commands - `src/commands/mobile/` — mobile / Appium helpers - `src/scripts/` — snippets injected into the browser - `src/utils/` — command support (not a second public API) Each new command needs: 1. Implementation with JSDoc (feeds `pnpm run docs:generate`) 2. A sibling unit test under `tests/commands/...` 3. A usage snippet in `tests/typings/webdriverio/async.ts` if the public type surface changed ## Commands ```sh pnpm run dev webdriverio pnpm run test:package webdriverio npx vitest packages/webdriverio/tests/commands/element/getCSSProperty.test.ts pnpm run test:typings:webdriverio ``` Use `@wdio/webdriver-mock-service` scenarios for runner-level command checks (`pnpm run test:smoke standaloneTest`). Do not launch a real browser in unit tests. ## Test ownership One primary test owner per contract: - Package exports (`remote`, `attach`, `multiRemote`, `Key`, `SevereServiceError`) belong to `tests/module.test.ts`. Do not add a second file that only checks those exports are defined. - Selector parsing belongs to `tests/findStrategy.test.ts`. Do not replay the same `findStrategy(...)` input from `tests/utils/`. - `browser.react$` / `browser.react$$` flag assertions stay in the browser command tests. Element files should call `element.react$` / `element.react$$`. ## Guardrails - Add user-facing behavior here, not in `webdriver`, unless it is a raw protocol call. - Keep commands small; put reusable logic in `src/utils/` of this package. - JSDoc parameter / return types must match the implementation. Docs are generated from these comments, not rewritten by hand in `website/docs/api`. - Multi-remote and browser-runner both consume this package. Prefer `browser` / `multiRemoteBrowser` helpers over assuming a single session.