# Integration Test Triage

> Triage a red any-llm integration test suite. Use when integration tests are failing, when deciding whether a failure is a real regression, or before skipping or "fixing" an integration test.

- Skill: `mozilla-ai/integration-test-triage` (Agent Skill)
- Install (CLI): `npx skillmds@latest add mozilla-ai/integration-test-triage`
- Raw SKILL.md: https://api.skillmd.com/api/skills/mozilla-ai/integration-test-triage/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: mozilla-ai (https://skillmd.com/u/mozilla-ai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/mozilla-ai/integration-test-triage

---


# Integration test triage

Integration tests run on `main` post-merge, and on a PR only via the `run-integration-tests`
label (auto-removed after each run). They are not a merge gate, so failures accumulate.

A red suite is usually a backlog of unrelated causes, not one regression. Build a test's
history before assuming a recent break: list the recent failed runs
(`gh run list --workflow "Integration Tests" --status failure`), then read the failing steps
of the ones you need (`gh run view <id> --log-failed`). Root-cause each failure as one of:

- **An any-llm bug**: fix it and add a test.
- **A deprecated or wrong test model**: update `tests/conftest.py` and cite the provider's docs.
- **Missing or invalid credentials**: a 401/403 from one provider means its key is absent or
  expired. Name the secret; never turn it into a code change.
- **Missing CI infrastructure**: skip it, naming the missing piece in the skip reason.
- **Rate limiting or quota exhaustion**: 429s and quota errors. The suite runs under `-n auto`,
  so re-run serially to tell contention apart from an exhausted account.
- **A provider outage**: failures correlated on one provider, possibly narrowed to a single
  model, endpoint, region, or operation rather than all of its tests. Treat the correlation
  plus that provider's public status page as the evidence before calling it transient.

Never record a cause as "flaky" or "does not reliably support". Every skip and fix needs a
concrete reason (HTTP status, deprecated model, missing CI infra).

