CodeVetter · Repo Unpack · Contributor handoff
webdriverio/webdriverio
Begin with the owning package and the smallest relevant lifecycle chain; the inventory and investigation are bounded. Tests and CI were inspected, not executed, and no passing status is asserted. Preserve the distinctions between Node/browser exports, launcher/worker hooks, stub/real sessions, and Classic/BiDi behavior. Proposed validation should remain read-only here and become executable only under appropriate task authorization.
- Use package.json and pnpm-workspace.yaml as the dependency/build authority; tsconfig selects strict NodeNext/ES2022 compilation, and public webdriverio exports require awareness of Node, browser, ESM, and CommonJS surfaces.
- For CLI lifecycle changes, read commands/run.ts, Launcher.run/_runSpecs/_endHandler, and Runner.run first; preserve hook order and the retry-budget message sent before requesting a real session.
- For element behavior, keep changes within the command and relevant lookup/middleware chain; selector, parent, elementId, and BiDi locator fields are functional recovery state rather than incidental metadata.
- Treat Classic and BiDi as explicit branches: findElement excludes iframe/deep-selector cases from its BiDi path, and screenshot options are rejected in Classic but validated and supported in BiDi.
- Do not interpret root build/setup as passive checks: scripts clean artifacts and generate BiDi sources, whose generator can download specification input and overwrite generated TypeScript files.
- If execution is later authorized, select the owning test through the configured Vitest runner first; relevant inspected examples include request.test.ts, launcher.test.ts, and node/saveScreenshot.test.ts. Broader typing, smoke, component, and e2e scripts have distinct prerequisites.
- Tests and CI were inspected, not executed: carry forward the limitations that driver setup is skipped in unit tests, coverage is disabled by default, Preact/misc component commands are bypassed, and cloud CI is main-only.
- Keep publication and deployment outside ordinary edits: npm publishing is manually dispatched and depends on publisher-team authorization, whereas documentation deployment is a separate manually dispatched workflow with cloud credential references.