Severity decides what blocks
When an AI job finishes its work, QA Wolf lints what changed before the job can complete. A rule’s severity decides what happens next:error— blocks. QA Wolf sends the agent the findings and waits for a fix, and the job fails if the agent cannot clear them.warn— informs. The agent sees the finding but it does not hold up the job.off— silent. The agent is never told about it.
Configure rules
Add an.eslintrc.json file at the root of your repository. Without one, only
the base rules run, at the severities they ship with.
.eslintrc.json
extends enables
@qawolf/eslint-plugin-pom,
which is bundled into QA Wolf — you install nothing. Its rules cover page object
conventions: locators confined to the locators getter, no raw page.click() in
a flow, Arrange-Act-Assert (AAA) comments on every step. The plugin’s README lists each
one with examples.
rules re-sets the severity of any rule, base rules included, using "off",
"warn" or "error" — or the matching number 0, 1 or 2. Rules you do not
list keep the severity they ship with. Page object model rules take effect only
once the plugin is enabled; set a severity on one without it and the rule stays
off, and the editor says so.
QA Wolf’s AI writes page objects whichever rules you enable — every workspace
is built on the POM base classes. These rules enforce the conventions around
them rather than turning them on.
Turn on any other ESLint rule
Name any core ESLint or typescript-eslint rule and it runs.@typescript-eslint/no-deprecated is a useful one to know
about: it flags calls to any API documented as @deprecated, including the
superseded Playwright methods such as page.type().
Rules needing type information report less inside an AI job than in the editor,
because the job does not resolve imports from npm packages.
What QA Wolf reads
QA Wolf reads three keys from.eslintrc.json: extends, plugins and rules.
It ignores anything else — settings, parserOptions, overrides, env — and
flags it in the editor so the file does not quietly lie about what is running.
$schema and root pass without complaint.
Three more limits worth knowing:
- Rule options are dropped. In
"no-redeclare": ["error", { … }]the severity applies and QA Wolf discards the options after it. @qawolf/eslint-plugin-pomis the only plugin supported. Any other plugin named inextendsorpluginshas no effect, and the editor says QA Wolf skipped it. Ask QA Wolf about adding one you need.- An unreadable file is skipped whole. If the JSON is invalid, is not an object, or runs past 131,072 characters, QA Wolf enables no page object model rules at all. The base rules still run, and the editor explains why.