بنقرة واحدة
astro-testing
Testing and QA gate for Astro lead gen sites. Manual + E2E + A11y + Performance. FAIL = no deploy.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Testing and QA gate for Astro lead gen sites. Manual + E2E + A11y + Performance. FAIL = no deploy.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Canonical lead-gen tracking for Astro.js on Cloudflare Workers (v6, Run 6 contract). Drop-in components: <Tracking/>, <TrackedForm/>, <PhoneLink/>, <CallbackButton/>. Two channels with a SHARED event_id: browser (GTM → GA4 / Meta Pixel / Google Ads) + server-side via the Soborbo event-gateway worker. Model 2: the browser OWNS on-site GA4 + Google Ads; the server sends Meta CAPI on-site (+ TikTok/LinkedIn/Microsoft click-ID forwarders, event_id-deduped) and Google Ads ONLY offline (CRM lead lifecycle, Google Data Manager API); the server sends NO GA4. Two gateway ingress paths: tokenless browser path for low-risk clicks (Origin allow-list + rate limit), authenticated server path (per-site token, service binding) for form/lead/purchase conversions dispatched by the site BACKEND. No Turnstile. Daily synthetic smoke-lead cron + digest guard. Consent Mode v2 + CookieYes, gclid/gbraid/wbraid/fbclid + full UTM capture, calculator funnel, form abandonment, phone dedup, first/last touch attribution. Bilingual / multi-
DEPRECATED (legacy, in old/) — use the `soborbo-tracking` skill instead for GA4 + Meta + Google Ads tracking on Astro. Kept for reference only.
Audit and strengthen visible E-E-A-T signals and AI-search (GEO) readiness on Astro lead-gen sites. Use when a page or site needs Experience/Expertise/Authoritativeness/Trust signals, author credibility, first-hand-experience proof, trust pages (about/contact/privacy/returns), NAP + company registration display, review/trust-mark surfacing, AI-crawler access in robots.txt, or answer-first content for ChatGPT/Gemini/Perplexity/AI Overviews. Also triggers on "EEAT", "E-E-A-T", "GEO", "AEO", "AI search visibility", "get cited by AI", "trust signals", "author bio", "local trust", or making a small/niche business outrank larger competitors. Runs a deterministic auditor with runnable tests. Delegates JSON-LD generation to schema-entity-graph and JSON-LD validation to schema-audit; delegates copy voice to humanise-copy.
Width-based responsive image patterns for Astro. Local build-time processing, per-format quality (AVIF/WebP/JPG/PNG), alpha-aware fallback, art direction, face-focus, OG generation, image SEO. Picture, ArtPicture, FixedImage components.
Per-site client tracker and Astro endpoint for the centralised soborbo-error-pipeline workers. Captures client JS errors via sendBeacon, forwards via console.error → Tail Worker. Server-side uncaught exceptions are captured automatically. ~1.5KB client bundle, no external deps. Email throttled to 1 per (site, code) per 4 hours by the notifier worker.
Form infrastructure for Astro projects. Contact forms, booking forms, quote requests. Zod validation, email delivery (Resend/Brevo), rate limiting, Google Sheets, postcode lookup, spam protection.
| name | astro-testing |
| description | Testing and QA gate for Astro lead gen sites. Manual + E2E + A11y + Performance. FAIL = no deploy. |
No testing = No deploy. Period.
QA gate before deployment. Blocking tests must pass.
test_verdict: PASS | WARN | FAIL
blocking_issues: []
warnings: []
| Test | Category |
|---|---|
| Form submits successfully | Critical |
| Thank you page displays | Critical |
| Email received (business) | Data |
| Confirmation email sent | Data |
| Lead saved in system | Data |
| Mobile menu works | UX |
| Phone link works | UX |
| Homepage loads | Core |
| 404 page exists | Core |
| Lighthouse ≥90 | Performance |
| Test | Category |
|---|---|
| Animation smoothness | Polish |
| Minor CLS (<0.1) | Performance |
| Desktop hover states | UX |
| Print stylesheet | Accessibility |
data_integrity:
- form_submitted: true
- lead_saved: true
- business_email_sent: true
- customer_email_sent: true
- analytics_event_fired: true
Form shows success but data missing = FAIL.
| Test | Expected |
|---|---|
| Submit empty form | Error, no submit |
| Invalid email format | Validation error |
| Honeypot filled | Silent reject |
| Missing privacy consent | Blocked |
| SQL injection attempt | Sanitized |
Negative test passes incorrectly = FAIL.
browser_matrix:
required: [mobile_safari, mobile_chrome, desktop_chrome, desktop_safari]
optional: [firefox, edge, samsung_internet]
Missing required browser = FAIL.
| Severity | Max Allowed | Result |
|---|---|---|
| Critical | 0 | FAIL |
| Serious | 0 | FAIL |
| Moderate | 2 | WARN |
| Minor | 5 | WARN |
| Metric | Threshold | Result |
|---|---|---|
| Lighthouse (all) | ≥90 | FAIL if below |
| LCP | <2.5s | WARN if above |
| CLS | <0.1 | WARN if above |
| Total JS | <100KB | WARN if above |
| # | Test |
|---|---|
| 1 | Homepage loads |
| 2 | Primary CTA works |
| 3 | Form visible |
| 4 | Form submits |
| 5 | Thank you displays |
| 6 | Business email received |
| 7 | Customer email sent |
| 8 | Phone link works |
| 9 | Mobile menu works |
| 10 | 404 page exists |
Any fail = FAIL.
| Device | Key Checks |
|---|---|
| Mobile (375px) | Menu, form, keyboard, validation, 44px buttons, no h-scroll |
| Desktop (1440px) | Header, grid, hover, focus, tab order |
Full checklists → references/checklists.md
| Condition | Verdict |
|---|---|
| Any blocking test fails | FAIL |
| Data integrity fail | FAIL |
| Required browser missing | FAIL |
| Lighthouse <90 | FAIL |
| Critical/serious a11y | FAIL |
| Negative test passes incorrectly | FAIL |
| Non-blocking issue | WARN |
| Moderate a11y (≤2) | WARN |
| All pass | PASS |
deployment_gate:
block_on_fail: true
require_manual_confirm: true
FAIL → deploy blocked. No exceptions.
| Condition |
|---|
| Any critical path fails |
| Form success but no data |
| Email not received |
| Required browser not tested |
| Lighthouse <90 |
| Critical/serious a11y |
| Condition |
|---|
| Non-blocking test fails |
| Moderate a11y ≤2 |
| LCP >2.5s |
| CLS >0.1 |