a11y-playwright-testin…
Accessibility testing for web applications using Playwright (@playwright/test), TypeScript, and axe-core. Use to write, run, or…
Investigate a specific test failure to its root cause and document the why. Detects whether a failing test is flaky (intermittent) or a deterministic bug during reproduction. Use when a test fails and you need the real cause, not just to make it green. Execution layer, not
Claude Code
$ npx -y skills add fugazi/test-automation-skills-agents --skill qa-investigation --agent claude-code
Codex
$ npx skills add fugazi/test-automation-skills-agents --skill qa-investigation -a codex -y
Cursor
$ npx skills add fugazi/test-automation-skills-agents --skill qa-investigation -a cursor -y
Gemini CLI
$ npx skills add fugazi/test-automation-skills-agents --skill qa-investigation -a gemini-cli -y
GitHub Copilot
$ npx skills add fugazi/test-automation-skills-agents --skill qa-investigation -a github-copilot -y
OpenCode
$ npx skills add fugazi/test-automation-skills-agents --skill qa-investigation -a opencode -y
Windsurf
$ npx skills add fugazi/test-automation-skills-agents --skill qa-investigation -a windsurf -y
name: qa-investigation description: 'Investigate a specific test failure to its root cause and document the why. Detects whether a failing test is flaky (intermittent) or a deterministic bug during reproduction. Use when a test fails and you need the real cause, not just to make it green. Execution layer, not strategy review. Keywords: flaky test, intermittent failure, debugging tests, root cause analysis, test failure triage, bug hunt, why does this test fail.' license: 'Complete terms in LICENSE.txt'
A persistent, file-backed investigation journal for **a specific failing test**. This is the **execution layer**: it resolves a concrete failure. It does **not** validate strategy or architecture (`grill-me-qa`) nor generate QA deliverables (`qa-manual-istqb`).
The core idea: your context window is volatile RAM; the filesystem is persistent disk. Writing goals, evidence, and decisions to markdown prevents context drift during a long investigation.
The boundary is **not** "is it a selector / browser issue / timeout" — any of those can be worth investigating. The boundary is whether the request needs a **persistent, multi-step root-cause investigation** or is a one-shot tactical task. If uncovering the *why* takes evidence, runs, and iteration, use this skill.
This method is independent of any test framework — web, API, mobile, embedded, unit, load. Terms like "browser", "selector", "network requests", or "CI vs local" are **illustrative, not requirements**; substitute the equivalent in your stack.
The phases are the same whether the failure is flaky or a deterministic bug. The skill **discovers** the classification during triage — it does not assume it up front.
> **Non-reproducible path:** if the failure cannot be reproduced after a bounded number of attempts, do **not** force a label. Record it as non-reproducible with partial evidence, note the suspected nature (infrastructure, app logic, or test-side timing), and **escalate or flag for observation**. Log the decision and reason to `qa_investigation_findings.md`. See [Flow](./references/flow.md) for detail.
Scale the file scope to the investment level (triaged at the start — see [Flow](./references/flow.md)). Higher value = fuller record; lower value = leaner:
| Investment | Files in project root | How much to write | |------------|----------------------|-------------------| | **P1** high-value / blocking | All three: `plan` + `findings` + `progress` | Full pipeline: goal, phases, decisions, errors, run log | | **P2** medium | `plan` + `findings` | Phases and the why; `progress` only if the session runs long | | **P3** low-value / cosmetic flake | `findings` only | Evidence + classification + suspected cause; move on |
Each investigation creates the files above in the **project root**:
| File | Purpose | When to Update | |------|---------|----------------| | `qa_investigation_plan.md` | Goal, phases, decisions, error log | After each phase completes | | `qa_investigation_findings.md` | Root cause, evidence, technical decisions | After ANY discovery | | `qa_investigation_progress.md` | Session log, run/result records | Throughout the session |
1. **Create the plan first** — non-negotiable; the plan is your persistent memory. For a **P3** (low-value) case, the `findings` file is the plan — create that first. 2. **2-Action Rule** — after every 2 read/search ops, save key findings to `qa_investigation_finding
A practical library of agents, instructions, and skills designed specifically for QA Automation Engineers, focusing on production-oriented solutions.
Accessibility testing for web applications using Playwright (@playwright/test), TypeScript, and axe-core. Use to write, run, or…
Accessibility testing toolkit using Selenium WebDriver 4+ with Java 21+ and axe-core engine. Use when asked to validate WCAG 2.2…
Test REST and GraphQL endpoint contracts using Playwright request fixture (TypeScript) or REST Assured (Java). Use for standalone…
A guided interview to challenge and validate QA automation plans, test strategies, and framework designs before implementation.…
Drive a live browser from the CLI with playwright-cli to navigate, interact, snapshot, and capture evidence. Use for ad-hoc…
Author and maintain versioned Playwright (@playwright/test) TypeScript UI specs for browser user flows. Use when asked to create,…
Produce the "Playwright 1.xx API Review" artifact for a range of commits - the public API additions and the breaking or behavior…
Write, refine, run, and QA promptfoo evaluation suites: promptfooconfig.yaml, prompts, providers, vars, tests, assertions,…
DeepEval evaluation workflow for AI agents and LLM applications. TRIGGER when the user wants to evaluate or improve an AI agent,…