Form QA Checker
Pricing
from $15.00 / 1,000 browser page checkeds
Form QA Checker
Inspect web forms for labels, required fields, validation hints, broken submission indicators, and accessibility risks.
Pricing
from $15.00 / 1,000 browser page checkeds
Rating
0.0
(0)
Developer
junipr
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Store Positioning
Store title: Form QA Checker
Short description: Inspect web forms for labels, required fields, validation hints, broken submission indicators, and accessibility risks.
SEO title: Form QA Checker — browser, screenshot, and rendered-page audit
SEO description: Inspect web forms for labels, required fields, validation hints, broken submission indicators, and accessibility risks. Use it when rendered pages, screenshots, dynamic UI, or browser-visible evidence matters, with explicit caps and cost controls.
Categories: DEVELOPER_TOOLS
Keywords: form, qa, checker, web audit, browser/screenshot/rendered-page actor
Fixed-Inclusive PPE Pricing
This actor uses pay-per-event pricing. Event prices include Apify platform usage; users are not expected to pay a separate platform-usage pass-through charge for the configured pricing model.
- Tier: B1 — Browser/screenshot/rendered-page actor
- Primary event:
browser-page-checkedat $0.01500 base - Default max charge: $50.00
- Store discounts: FREE/BRONZE base, SILVER discounted, GOLD deepest approved discount
Event set:
actor-start: base $0.05000, GOLD $0.04400. Form QA Checker: charged when actor start is completed. The price includes Apify platform usage; no separate usage pass-through is intended.browser-page-checked: base $0.01500, GOLD $0.01320. Form QA Checker: charged when browser page checked is completed. The price includes Apify platform usage; no separate usage pass-through is intended.screenshot-captured: base $0.01000, GOLD $0.00880. Form QA Checker: charged when screenshot captured is completed. The price includes Apify platform usage; no separate usage pass-through is intended.issue-detected: base $0.01300, GOLD $0.01140. Form QA Checker: charged when issue detected is completed. The price includes Apify platform usage; no separate usage pass-through is intended.report-generated: base $0.10000, GOLD $0.08800. Form QA Checker: charged when report generated is completed. The price includes Apify platform usage; no separate usage pass-through is intended.
Public Task Concepts
- Audit Form QA controls on a capped public page set
- Find high-priority Form QA issues before release
- Validate Form QA evidence from supplied pages
- Prioritize Form QA fixes with severity and proof
- Export Form QA QA rows for client review
Inspect web forms for labels, required fields, validation hints, broken submission indicators, and accessibility risks.
What This Actor Does
Form QA Checker inspects supplied HTML or renders public URLs in Chromium, then returns form-by-form evidence for labels, accessible names, required controls, submit controls, methods, actions, validation settings, and risky password submission patterns.
Optional full-page screenshots are stored under deterministic KVS keys only after the screenshot charge succeeds. The actor never submits arbitrary public forms; permissioned submission status or error evidence can be supplied in record metadata for correlation with markup findings.
What This Actor Does Not Do
- It does not provide legal, medical, financial, investment, safety, or compliance advice.
- It does not guarantee completeness of any public source or third-party dataset.
- It does not collect sensitive personal data by default.
- It does not rely on unsupported private APIs.
- It does not automatically submit forms, create accounts, send messages, or trigger transactions.
Best Use Cases
- form launch QA
- lead capture accessibility checks
- required-field and validation review
Input Fields Explained
| Field | Type | Default | Notes |
|---|---|---|---|
records | array | built-in records | Form snapshots with HTML and optional permissioned submission evidence. |
urls | array | [] | Public pages to render; explicit URLs override schema-populated default records. |
fetchUrls | boolean | false | Renders URL rows in Chromium before analysis. |
fetchTimeoutMs | integer | 12000 | Browser navigation timeout, capped at 30 seconds. |
captureScreenshots | boolean | false | Saves a full-page PNG for each rendered row after a screenshot charge. |
watchTerms | array | actor defaults | Terms used to mark relevant records and alerts. |
includeReport | boolean | true | Writes JSON and Markdown report artifacts to the key-value store. |
maxItems | integer | 2 | Caps processed records. Maximum is 50. |
maxTextBytes | integer | 500000 | Caps analyzed text per record. |
debug | boolean | false | Enables debug logging. |
Example Input
{"records": [{"sourceId": "form-good","sourceUrl": "https://example.com/quote","title": "Quote form QA pass","description": "Form includes labels, required hints, and submit action.","category": "form qa","keywords": [],"metadata": {"html": "<form><label for=\"name\">Name</label><input id=\"name\" required><label for=\"email\">Email</label><input id=\"email\" type=\"email\" required><button type=\"submit\">Send</button></form>"}},{"sourceId": "form-risk","sourceUrl": "https://example.com/signup","title": "Signup form missing basics","description": "Form has unlabeled input and no submit button.","category": "form qa","keywords": ["unlabeled input"],"metadata": {"html": "<form><input placeholder=\"Email\"></form>"}}],"includeReport": true,"maxItems": 2}
Output Fields Explained
| Field | Meaning |
|---|---|
auditId | Stable hash for the checked record. |
sourceId, sourceUrl | Source identifiers for traceability. |
status, severity, score | Normalized outcome and 0-100 quality/risk score. |
matchedKeywords | Watch terms found in the record text or metadata. |
issues, issueCodes | Actor-specific findings with severity and messages. |
recommendations | Next actions for the operator or content/data owner. |
metadata | Original metadata plus derived helper fields when applicable. |
pricingTemplate, pricingEventName | PPE tier and primary billed event. |
Example Output
{"auditId": "formqa_b4381899d6fb1658","actorSlug": "form-qa-checker","actorName": "Form QA Checker","sourceType": "input","sourceId": "form-good","sourceUrl": "https://example.com/quote","title": "Quote form QA pass","status": "warn","severity": "medium","score": 82,"matchedKeywords": [],"primaryEntity": null,"category": "form qa","publishedAt": null,"summary": "Form includes labels, required hints, and submit action.","issueCount": 1,"issues": [{"code": "form-action-missing","severity": "warning","message": "Forms without an explicit action (1).","recommendation": "Confirm JavaScript submission is intentional and monitor the configured endpoint"}],"issueCodes": ["form-action-missing"],"recommendations": ["Confirm JavaScript submission is intentional and monitor the configured endpoint"],"metadata": {"html": "<form><label for=\"name\">Name</label><input id=\"name\" required><label for=\"email\">Email</label><input id=\"email\" type=\"email\" required><button type=\"submit\">Send</button></form>","htmlSignalCounts": {"images": 0,"inputs": 2,"forms": 1,"headings": 0},"sourceSpecific": {"formRows": [{"formIndex": 1,"id": null,"action": null,"method": "get","controlCount": 2,"labeledControlCount": 2,"unlabeledControlCount": 0,"requiredControlCount": 2,"submitControlCount": 1,"issueCodes": ["form-action-missing"],"status": "warn"}],"formCount": 1,"renderedWithBrowser": false,"screenshotKey": null,"submissionEvidence": null,"safetyNote": "The actor inspects rendered form behavior and supplied permissioned submission evidence; it never submits arbitrary public forms automatically."},"normalizedTextPreview": "form-good https://example.com/quote Quote form QA pass Form includes labels, required hints, and submit action. form qa {\"html\":\" Name Email Send \"}"},"textBytes": 321,"checkedAt": "2026-07-02T00:00:00.000Z","pricingTemplate": "B1 — Browser/screenshot/rendered-page actor","pricingEventName": "browser-page-checked"}
Cost-Control Tips
- Keep
maxItemssmall for default and scheduled checks. - Use supplied records or snapshots for deterministic QA runs.
- Leave
fetchUrlsoff unless live source fetching is explicitly needed. - Review warning rows before increasing caps.
- Schedule small frequent runs instead of broad one-off sweeps.
Scheduling Examples
- Daily watchlist check with two to five high-value records.
- Weekly QA run before publishing a site, data, or actor update.
- Browser-visible form checks before a release.
Public Task Examples
- Render and inspect forms on a capped set of public pages.
- Find unlabeled controls and missing submit buttons before release.
- Detect password forms using unsafe GET requests.
- Capture browser-visible evidence for client QA.
- Correlate permissioned submission errors with form markup findings.
FAQ
Can I use this with live URLs?
Yes. Supply urls and enable fetchUrls. Chromium renders the page before the form controls are analyzed. Screenshots remain opt-in.
Why does it charge before pushing output?
The actor charges before page rows and optional screenshots. Charge-cap failures stop or skip the corresponding paid output cleanly.
What happens on charge limits?
The actor stops gracefully and writes a summary instead of pushing unpaid result rows.
Is this legal, financial, safety, or compliance advice?
No. The actor produces operational signals and structured data for review. Human owners remain responsible for decisions.
Troubleshooting
- If the dataset is empty, check that
maxItemsis greater than zero and that records are supplied or defaults are enabled. - If a record is flagged unexpectedly, inspect
issueCodes,matchedKeywords, and the normalized metadata preview. - If live fetching fails, rerun with supplied record bodies or snapshots and keep
fetchUrlsfalse.
Limitations
The actor does not submit arbitrary forms because submissions can create records, messages, accounts, or charges. Client-side logic hidden behind user interaction, authentication, CAPTCHA, or conditional steps may need a permissioned manual test. A missing action can be intentional for JavaScript-managed forms and is reported as a review signal.
Source And Safety Notes
Use public or permissioned pages. Do not place passwords, payment data, private form values, or session credentials in actor input.
Changelog
- 2026-07-10: Added Chromium rendering, charged screenshot output, form-level evidence, submission-risk diagnostics, and expanded regression coverage.