mcpField
T
testing

testing

github.com/grafanaTesting & quality2954.3k installsUpdated 1d ago
Repository

About testing

A Grafana Cloud testing skill for testing and observability teams, covering Synthetic Monitoring probes, k6 Cloud load tests, and Faro frontend monitoring.

Key features

  1. 01Create and verify Synthetic HTTP checks
  2. 02Run k6 Cloud load tests
  3. 03Collect frontend events with Faro
  4. 04Review check metrics and alert rules
  5. 05Troubleshoot probes, tests, and events

Use cases

  1. 01Verify website endpoint availability
  2. 02Run load tests in the cloud
  3. 03Inspect frontend sessions, events, and traces

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/grafana/skills --skill testing

After installing, type/testingin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
k6-and-faro.md
k6-cloud.md
synthetic-monitoring.md
synthetic.md

Details

From the project README

Grafana Cloud Testing

Docs: https://grafana.com/docs/grafana-cloud/testing/

Three pillars: external probing (Synthetic Monitoring), load testing (k6 Cloud), real-user monitoring (Faro).

Prerequisites

  • Grafana Cloud stack
  • Synthetic Monitoring: SM access token (sm:write)
  • k6 Cloud: a Grafana Cloud k6 token + projectID
  • Faro: a Faro app + write-token from Frontend Observability → Apps

Common Workflows

1. Create + verify a Synthetic HTTP check
# 1. Create the check (full payload in references/synthetic.md)
curl -X POST https://synthetic-monitoring-api.grafana.net/sm/checks \
  -H "Authorization: Bearer <sm-token>" -H "Content-Type: application/json" \
  -d '{"job":"website","target":"https://example.com","frequency":60000,"timeout":15000,
       "enabled":true,"probes":[1,5,10],
       "settings":{"http":{"method":"GET","validStatusCodes":[200]}}}'

# 2. List checks — confirm it exists and is enabled
curl -s https://synthetic-monitoring-api.grafana.net/sm/checks \
  -H "Authorization: Bearer <sm-token>" | jq '.[] | select(.job=="website")'

# 3. Verify probe_success arrived (wait ~60s for the first run)
#    In Grafana Explore on the synthetic metrics datasource:
#      probe_success{job="website"}
#    Expect 1 from each probe in `probes:[1,5,10]`.
#
# Rollback: DELETE /sm/checks/<id> or set `"enabled": false`.

See references/synthetic.md for all check types, PromQL queries, and alert rules.

2. Run a k6 cloud load test
# 1. Authenticate once
k6 cloud login --token <grafana-cloud-k6-token>

# 2. Validate the script locally first (smoke run, no cloud cost)
k6 run --vus 1 --duration 30s script.js

# 3. Launch in cloud
k6 cloud script.js
# → URL of the run; thresholds (p95<500ms, error<1%) decide pass/fail.

# 4. Verify in CI — exit code 0 = thresholds passed, 99 = threshold failed.
echo $?

Full script + scenarios + CI YAML: references/k6-and-faro.md.

3. Instrument a frontend with Faro
# 1. Install
npm install @grafana/faro-web-sdk @grafana/faro-web-tracing
// 2. initializeFaro({ url, apiKey, app, instrumentations }) — see references/k6-and-faro.md
// 3. Push a test event so we have something to look for:
faro.api.pushEvent('faro_smoketest', { ts: Date.now().toString() });
# 4. Verify the collector accepted it (browser DevTools → Network)
#    POST to /collect should return 202. If 401 — apiKey mismatch.

# 5. Verify in Grafana
#    - Frontend Observability → your app → Sessions: should show your session
#    - Explore on Loki: `{kind="event"} |= "faro_smoketest"`
#    - For traces: filter by `service.name="my-frontend"` in Tempo

Troubleshooting

  • Synthetic check stuck at probe_success=0 → check probe_*_duration_seconds for the failing stage; the probe-region label tells you which prober errored
  • k6 cloud run "ABORTED_THRESHOLD" → a threshold tripped; inspect the run page to see which one
  • Faro events not landing → check the browser network call to /collect returns 202; common cause is wrong apiKey or url (must match the FE Observability app)

References

Resources

Comments

Markdown supported