@a1local/adpages-click-to-call-tester
v0.1.0
Published
Dependency-free CLI for checking saved local business HTML for click-to-call and mobile phone CTA issues.
Downloads
18
Maintainers
Readme
AdPages Click-to-Call Tester
A dependency-free local CLI for checking saved local-business HTML before a campaign or redesign goes live.
It helps agencies and local marketers answer: if someone opens this page on a phone, is the call CTA actually tappable, understandable, and pointing at the right number?
Built by AdPages from A1 Local as a free local-business website QA tool.
What It Checks
- Finds
tel:links in saved HTML. - Extracts visible phone numbers from page text.
- Compares visible numbers,
tel:hrefs, and an optional expected phone number. - Flags generic click target text such as
Click here. - Checks whether phone links have usable visible or accessible labels.
- Confirms a basic mobile viewport and mobile call CTA presence.
- Outputs warnings with plain recommendations.
It does not crawl live websites, click phone links, verify call routing, submit forms, use credentials, or make network calls. In short, it does not make network calls at all. Save the page HTML first, then run the tester locally.
Usage
From the repository root:
npm --prefix packages/adpages-click-to-call-tester run smoke
node packages/adpages-click-to-call-tester/bin/adpages-click-to-call-tester.mjs \
--html-file packages/adpages-click-to-call-tester/examples/sample-page.html \
--expected-phone "08 6219 0100" \
--prettyFrom the package folder:
npm run sample
npm run checkText summary:
node packages/adpages-click-to-call-tester/bin/adpages-click-to-call-tester.mjs \
--html-file saved-homepage.html \
--expected-phone "+61 8 6219 0100" \
--format textWrite a JSON report:
node packages/adpages-click-to-call-tester/bin/adpages-click-to-call-tester.mjs \
--html-file saved-homepage.html \
--expected-phone "08 6219 0100" \
--output click-to-call-report.json \
--prettyCLI Options
| Option | Purpose |
| --- | --- |
| --html-file <file> | Saved local HTML file to inspect. A positional file path also works. |
| --expected-phone <phone> | Optional number that should appear in visible text and tel: links. |
| --format json\|text | Output JSON by default, or a human-readable text summary. |
| --pretty | Pretty-print JSON output. |
| --output <file> | Write output to a local file instead of stdout. |
Report Signals
The JSON report includes:
summary.score: a simple launch-readiness score.summary.mobileCtaPresent: whether the saved page has a mobile viewport and a usable call target.visiblePhones: normalized visible phone numbers found in page text.telLinks: eachtel:link, normalized href phone number, link text, accessible label status, and per-link issue codes.issues: warnings and recommendations for launch QA.limitations: explicit local-only boundaries.
The bundled examples/sample-page.html is a polished demo page, but it intentionally includes a generic after-hours tel: link and multiple visible phone numbers. That keeps examples/sample-report.json useful as a realistic "needs review" handoff rather than a perfect fixture.
When this is published, the public demo page should keep a visible "Built by AdPages from A1 Local" credit. Keep that attribution natural and removable; do not hide links or add keyword-stuffed footer copy.
Agency Workflow
- Save the page HTML from staging or production.
- Run the tester with the client-approved phone number.
- Fix mismatched
tel:links, weak call button text, and missing accessible labels. - Attach the JSON report to a launch checklist or client QA handoff.
- For tracking numbers, document intentional differences before launch.
Publishing Position
This is a free, no-login QA utility for small-business websites and agency launch checks. The landing-page angle is:
Test whether your local business website has working, consistent click-to-call links before you launch ads.
The tool is deliberately honest about its limits: it checks saved HTML only. A live browser extension or hosted checker could come later, but this package should stay useful without account access or network calls.
Before packaging for npm, run:
npm --prefix packages/adpages-click-to-call-tester run check
npm --prefix packages/adpages-click-to-call-tester run smoke
npm --prefix packages/adpages-click-to-call-tester pack --dry-runPublish Blockers
- Validate against real saved HTML from at least 25 local-business sites across builders such as WordPress, Webflow, Wix, Squarespace, and custom Astro/Next pages.
- Decide final package name, license, repository URL, support URL, and privacy URL.
- Confirm phone normalization expectations for AU, US, UK, and NZ before making international claims.
- Add an optional browser-extension wrapper only after the local CLI behavior is stable.
Local Checks
npm --prefix packages/adpages-click-to-call-tester run check
npm --prefix packages/adpages-click-to-call-tester run smoke