Skip to content

QA Rules

QA Rules catch text problems automatically, every time a page is captured — no separate scan step. Some checks (broken layout, console errors, failed network requests) run automatically with no setup; QA Rules let you add checks specific to your site.

What gets checked automatically, with no rule needed

  • Text overflow — content clipped or cut off by its container.
  • RTL layout overflow — the same overflow check, applied to right-to-left content (Arabic, Hebrew, etc.) so layout breaks in RTL languages aren't missed.
  • Console errors / page errors — JavaScript errors on the page.
  • Failed requests — network requests that failed or returned an error status.

What you configure with a QA Rule

Rule type What it catches Language-specific?
Translation pattern Leftover placeholder text (like {{variable}} or some.translation.key) that should have been replaced with real content — a common sign a translation was missed. Built-in patterns are already checked; add your own if your site has other tell-tale placeholder formats. No — applies to every language.
Forbidden phrase Text that should never appear — old branding, internal notes, placeholder copy. Matched as plain text (not case-sensitive), not a pattern. Yes — required. Pick which language this phrase applies to.
Ignore console message Suppresses console errors/warnings you already know about and don't want flagged (e.g. a noisy third-party script). Matched as a pattern. Also stops that error from ever counting as a "new" one for Monitor notifications — same suppression, not a separate setting. No
Ignore network domain Suppresses failed-request warnings for a specific third-party domain you don't control. Matched as plain text. No
Required phrase Flags a capture when mandatory copy is absent. Matching can use substring, whole word, exact page text, or regex. Yes — required.
Ignore selector Suppresses DOM-based findings from a known noisy element or component. Enter a CSS selector. No
Text length limit Flags matching elements whose trimmed text exceeds a character limit. Enter a CSS selector and maximum length. No
Accessible text Flags matching elements that have no text, aria-label, alt, title, or placeholder. Enter a CSS selector. No

Specific examples

Check Example configuration or page condition Expected result
Translation pattern Pattern \\[\\[.+?\\]\\]; page contains [[checkout_title]] missing_translation issue
Forbidden phrase French, whole-word Free; page says Start your Free trial forbidden_phrase issue; freestyle does not match
Required phrase English, substring Terms and Conditions; footer omits it required_phrase_missing issue
Ignore console message Pattern ResizeObserver loop limit exceeded That known console error is suppressed
Ignore network domain analytics.example.com Failed analytics requests are suppressed; API failures remain
Ignore selector .intercom-widget DOM findings attributed to that selector are suppressed
Text length limit Selector .pricing-card h3, maximum 30; heading has 42 characters text_too_long issue
Accessible text Selector img.product-image; an image has no alt, label, title, or text missing_accessible_text issue
Automatic text overflow A 100px-wide button clips Complete your purchase with overflow: hidden text_overflow issue
Automatic RTL overflow An Arabic dir="rtl" navigation label exceeds its container rtl_overflow issue
Automatic console error Page logs TypeError: Cannot read properties of undefined console_error issue
Automatic page error An uncaught promise throws during page load page_error issue
Automatic failed request GET /api/products returns HTTP 500 Error-severity failed_request issue
Brand color Approved #1A73E8; a visible button uses an out-of-tolerance red brand_color_violation issue
Brand font Approved Inter; visible content uses Comic Sans MS brand_font_violation issue

Phrase matching modes behave as follows: Contains text finds the phrase anywhere; Whole word avoids partial-word matches; Exact text requires an entire text node (or the page body for a required phrase) to match; and Regular expression supports patterns such as Terms (and|&) Conditions.

Creating a rule

Field What it means
Type One of the eight configurable rule types above.
Language Shown and required for Forbidden phrase and Required phrase rules.
Pattern The text or pattern to match.
Match mode How forbidden/required phrases are compared.
Maximum length Character limit for Text length rules.
Pages Apply to all pages, or pick specific ones.

A rule with no pages selected applies everywhere in the project. A rule scoped to specific pages only applies there — it never affects other pages.

Managing rules

The rules list shows each one's type, pattern, language (if applicable), and scope. From here you can disable a rule temporarily (without deleting it) or remove it. To change a rule's pattern or type, delete it and create a new one — there's currently no in-place edit for those fields.

Where results show up

Every capture is checked automatically as it's taken — you don't run QA Rules separately. Anything detected becomes an issue attached to that capture, visible from the capture's detail view.

Dismissing a warning that's fine

In the capture's issues panel, each warning has an Ignore menu with two choices:

  • Ignore until it changes — the default. Records the warning as acknowledged for that page and variant (language + viewport + cookie profile), together with a snapshot of the flagged element: its text and rendered size (for a missing translation, the exact string). The warning stops showing on later captures of that page — but only while the element stays the same. If a later capture finds the same element with different text or a different size, the warning comes back with a "content changed since you ignored this" note, so a genuinely new overflow on a redesigned button is never hidden. Manage these under Ignored findings in the project's Detection & Review section; removing one there makes the warning show again regardless.
  • Always ignore on this page / across the project — creates a standing QA Rule (an Ignore selector, Ignore console message, or Ignore network domain rule) so that class of finding is silenced permanently. Available for layout/overflow, console/page errors, and failed requests; missing translations and brand violations only support "ignore until it changes".