Receber por email
← Voltar para o catálogo

error-explanation-generator

Explains test failures and provides actionable debugging guidance. Use when tests fail (unit, integration, E2E), builds fail, or code throws errors. Analyzes error messages, stack traces, and test output to identify root causes and suggest concrete fixes. Handles pytest, jest, junit, mocha, vitest, selenium, cypress, playwright, and other testing frameworks across Python, JavaScript/TypeScript, Ja

105estrelas
Atualizado há 8 meses

Ver no GitHub ↗ Licença: Apache-2.0

Como adicionar

/plugin marketplace add ArabelaTso/Skills-4-SE

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/error-explanation-generator/svg)](https://www.skillteca.com.br/skills/error-explanation-generator)

Skills relacionadas

Ver todas de Desenvolvimento →

Alerta por categoria

Receba novas skills de Desenvolvimento toda segunda

1 email curto, só com as skills novas de Desenvolvimento. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

Error Explanation Generator

Analyze test failures and provide clear explanations with actionable fixes.

Core Capabilities

This skill helps debug failed tests by:

  1. Parsing error messages - Extract key information from test output
  2. Identifying root causes - Determine why tests fail
  3. Explaining clearly - Translate technical errors into understandable language
  4. Providing fixes - Suggest concrete, actionable solutions
  5. Recognizing patterns - Detect common error categories across frameworks

Error Analysis Workflow

Step 1: Gather Error Context

Collect all relevant information:

Essential Information:

  • Complete error message and stack trace
  • Test framework being used (pytest, jest, junit, etc.)
  • Test code that failed
  • Code being tested (if accessible)
  • Programming language

Additional Context (if available):

  • Recent code changes
  • Environment details (OS, language version, dependencies)
  • Test configuration files

How to gather:

# Python pytest
pytest -v --tb=long

# JavaScript/TypeScript jest
npm test -- --verbose

# Java junit
mvn test -X

# Go tests
go test -v

Step 2: Parse and Categorize the Error

Identify the error category using references/error_patterns.md:

Common Categories:

  1. Assertion Failures - Expected vs actual value mismatch
  2. Exceptions/Errors - Runtime errors during test execution
  3. Timeout Errors - Tests taking too long
  4. Setup/Teardown Failures - Fixture or initialization issues
  5. Import/Dependency Errors - Missing modules or broken imports
  6. Type Errors - Type mismatches in typed languages
  7. Mock/Stub Issues - Problems with test doubles
  8. Configuration Errors - Test framework or build config issues
  9. Compilation Errors - Syntax or build failures
  10. Flaky Test Issues - Intermittent failures

Step 3: Extract Key Information

Pull out critical details:

From Error Message:

  • Error type (AssertionError, TypeError, NullPointerException, etc.)
  • Expected vs actual values
  • Error description
  • Line numbers where error occurred

From Stack Trace:

  • Failure point in test code
  • Failure point in source code
  • Call chain leading to error

Example Extraction:

FAILED tests/test_user.py::test_create_user - AssertionError: assert 201 == 200

Extracted:

  • Test file: tests/test_user.py
  • Test name: test_create_user
  • Error type: AssertionError
  • Expected: 200
  • Actual: 201

Step 4: Identify Root Cause

Analyze why the error occurred:

Questions to Ask:

  • What was the test expecting?
  • What actually happened?
  • Why did the actual behavior differ from expected?
  • Is this a test bug or a code bug?

Common Root Causes:

  • Logic error in implementation
  • Incorrect test expectations
  • Missing or wrong test data
  • Race conditions or timing issues
  • Environmental differences
  • Outdated mocks or fixtures
  • Dependency version conflicts

Step 5: Provide Explanation

Structure the explanation clearly:

## Error Summary

[One-sentence description of what went wrong]

## What Happened

[Explain the error in plain language]

**Expected:** [What the test expected to happen]
**Actual:** [What actually happened]

## Root Cause

[Explain why this happened - the underlying issue]

## How to Fix

### Option 1: [Most likely fix] ⭐

[Specific code change or action to take]

// Before [problematic code]

// After [fixed code]


**Why this works:** [Brief explanation]

### Option 2: [Alternative fix]

[Another possible solution if Option 1 doesn't apply]

## Verification

[How to verify the fix works]

[command to run test]


## Prevention

[How to avoid this error in the future]

Step 6: Suggest Next Steps

Provide actionable guidance:

If fix is clear:

  • Show exact code change
  • Provide test command to verify
  • Mention related tests to check

If diagnosis needs more info:

  • Suggest debugging steps
  • Recommend logging/print statements to add
  • Propose code to inspect

If issue is environmental:

  • Suggest dependency checks
  • Recommend configuration verification
  • Propose environment comparison

Error Pattern Examples

Example 1: Assertion Failure (Python/pytest)

Error Output:

FAILED tests/test_calculator.py::test_divide - AssertionError: assert 2.5 == 2

Analysis:

## Error Summary
Test expected integer division but got float division result.

## What Happened

**Expected:** `2` (integer)
**Actual:** `2.5` (float)

The test `test_divide` called a divide function with arguments that produce
a decimal result (e.g., 5 / 2 = 2.5) but expected an integer result.

## Root Cause

The implementation uses true division (`/`) which returns floats in Python 3,
but the test expects integer division behavior.

## How to Fix

### Option 1: Update implementation to use integer division ⭐

Before

def divide(a, b): return a / b

After

def divide(a, b): return a // b # Integer division


**Why this works:** The `//` operator performs floor division, returning
integers when both operands are integers.

### Option 2: Update test to expect float result

Before

assert divide(5, 2) == 2

After

assert divide(5, 2) == 2.5


Use this if float division is the intended behavior.

## Verification

pytest tests/test_calculator.py::test_divide -v


## Prevention

- Clarify division requirements in function documentation
- Use type hints: `def divide(a: int, b: int) -> int:`
- Add test cases for both integer and float division scenarios

Example 2: TypeError (JavaScript/Jest)

Error Output:

TypeError: Cannot read property 'name' of undefined
    at getUserName (src/user.js:5:20)
    at Object.<anonymous> (tests/user.test.js:10:22)

Analysis:

## Error Summary
Attempted to access property 'name' on undefined user object.

## What Happened

**Expected:** User object with 'name' property
**Actual:** `undefined`

Function `getUserName()` tried to access `.name` property on a value that
was undefined, causing a runtime error.

## Root Cause

The user object passed to `getUserName()` was undefined. This commonly
happens when:
- Function called without argument
- Async data not yet loaded
- Database/API query returned no result

## How to Fix

### Option 1: Add null/undefined check ⭐

// Before function getUserName(user) { return user.name; }

// After function getUserName(user) { if (!user) { return null; // or throw error, or return default } return user.name; }


**Why this works:** Defensively handles cases where user might be undefined.

### Option 2: Fix the test to provide valid user object

// Before const name = getUserName(); // Called without argument

// After const name = getUserName({ name: 'Alice', id: 1 });


### Option 3: Use optional chaining (modern JS)

function getUserName(user) { return user?.name ?? 'Unknown'; }


## Verification

npm test -- user.test.js


## Prevention

- Add input validation to functions
- Use TypeScript for type safety
- Define clear function contracts
- Use optional chaining for property access

Example 3: Timeout Error (E2E/Cypress)

Error Output:

Timed out retrying after 4000ms: Expected to find element: [data-testid="submit-btn"],
but never found it.

Analysis:

## Error Summary
Test couldn't find submit button within timeout period.

## What Happened

**Expected:** Element with `data-testid="submit-btn"` to appear on page
**Actual:** Element never appeared within 4 seconds

## Root Cause

Possible reasons:
1. Element takes longer than 4s to render
2. Element has different selector/ID
3. Element only appears under certain conditions
4. JavaScript error preventing element from rendering

## How to Fix

### Option 1: Increase timeout for slow-loading elements ⭐
Compartilhar X LinkedIn