QA Wolf currently maintains @qawolf/pom internally and isn't accepting external pull requests yet. Bug reports and feature requests via GitHub Issues are very welcome.
- Node.js
>=22.22.0 <25(see theenginesfield inpackage.json) - npm (ships with Node.js)
npm cinpm run tsc:check # typecheck (tsc --noEmit)
npm run lint # eslint + prettier --check
npm run lint:fix # eslint --fix + prettier --write
npm test # run all tests
npm run test:watch # run tests in watch mode
npm run build # compile to dist/ via tsconfig.build.jsonRun npm run lint:fix after editing files, and make sure npm run lint, npm test, and npm run build all pass — this mirrors what CI runs on every pull request.
src/
├── index.ts # Public entry point and re-exports
├── basePageObject.ts # BasePageObject — core page-object base class
├── subPageObject.ts # SubPageObject — page objects scoped to a region
├── entryPointPageObject.ts# EntryPointPageObject — browser launch + hook install (QA Wolf platform)
├── pageHooks.ts # Popup and route-interceptor hook definitions
├── popupHandler.ts # Popup dismissal via addLocatorHandler
├── popupShieldInitScript.ts # CSS-injection popup shield init script
├── networkMonitor.ts # NetworkMonitor — collects network errors
├── platformClient.ts # callPlatformAPI — QA Wolf platform tRPC client
├── cleanupUtils.ts # Cleanup-failure reporting to the QA Wolf platform
├── sequence.ts # SequencePromise type
└── testDataUtilities.ts # Money/price helpers for test data
The core building blocks (BasePageObject, SubPageObject, popup/route hooks, and the network monitor) work with any Playwright project. entryPointPageObject.ts, platformClient.ts, and cleanupUtils.ts integrate with the QA Wolf platform — see the README for details.
See RELEASING.md. Releases are version-driven: bump the version in package.json in a PR, and merging to main publishes to npm.