Skip to main content
Some testkit helpers are pure functions. Others call ports supplied by the QA Wolf runner.

Pure Helpers

Pure helpers work anywhere.
import { otp } from "@qawolf/testkit";

const code = otp.fromUri("otpauth://totp/QA%20Wolf?secret=JBSWY3DPEHPK3PXP");
No runner setup is required.

Client-Backed Helpers

These helpers need a configured client:
  • mountCifsShare(...)
  • startOpenVpn(...)
  • saveBaselineScreenshot(...)
import { startOpenVpn } from "@qawolf/testkit";

await startOpenVpn({ configPath: "/tmp/client.ovpn" });
If no client is configured, the helper throws a setup error.

Who Configures The Client?

In QA Wolf runs, the runner configures the client before your flow starts. In tests or local harnesses, configure it yourself:
import { configureTestkitClient, resetTestkitClient } from "@qawolf/testkit";
import { createTestkitClient } from "@qawolf/testkit/client";

configureTestkitClient(
  createTestkitClient({
    mountCifsShare: async ({ remotePath }) => remotePath,
    startOpenVpn: async ({ configPath }) => configPath,
    startWireGuard: async ({ configPath }) => configPath,
  }),
);

// run code that uses testkit helpers

resetTestkitClient();
For exact client ports and top-level helper exports, see the Client Reference and Core Reference.
Last modified on April 24, 2026