Freecode
  • Claude
  • ChatGPT

Testes a partir do diff

  • 5.0 (4)
  • 5
  • 5
  • Jun 19, 2026

Cobre o caminho feliz, a borda e o caso que ninguém lembrou.

Free

Free. Account required.

Lab

Test how it works before buying.

Prompt

28 lines

## Diff
```diff
{{diff}}
```

## Ambiente
- Framework de teste: {{framework}}
- Testes que já existem para este módulo: {{testes_existentes}}

## Etapa 1, enumerar (sem escrever código ainda)
Liste os casos de teste em quatro grupos:
- **Caminho feliz**, o comportamento que a mudança promete
- **Bordas**, vazio, zero, um item, limite máximo, unicode, negativo
- **Falha**, dependência fora do ar, entrada inválida, timeout
- **Regressão**, o que funcionava antes e pode ter quebrado

Marque cada caso com [JÁ COBERTO] se ele já existe na suíte informada.

## Etapa 2, escrever
Escreva em {{framework}} apenas os casos NÃO cobertos.
- Um `expect` por teste sempre que possível.
- Nome do teste descreve o comportamento, não o método: "devolve vazio quando o filtro
  não casa", não "testa filtrar()".
- Sem mock do que você está testando. Mock apenas de I/O.

## Etapa 3, apontar o que não dá para testar
Liste o que ficou sem teste e por quê (precisa de refatoração, depende de relógio,
depende de rede real).

What this prompt does

Lê o diff e propõe casos de teste agrupados por intenção, marcando quais já existem na suíte informada. Escreve o código só depois de listar os casos, o que evita a suíte redundante que testa a mesma coisa cinco vezes.

Preview

Result

Etapa 1, casos

Caminho feliz

  • Converte "Olá Mundo" em "olá-mundo"
  • Múltiplos espaços viram um único hífen

Bordas

  • String vazia devolve string vazia
  • Só espaços devolve string vazia
  • Acento é preservado (a implementação atual não translitera)
  • Emoji sobrevive sem quebrar
  • Hífen já existente não é duplicado

Falha

  • Entrada não-string: a assinatura é string, mas em runtime JS null explode em .toLowerCase

Regressão

  • Nada a verificar: função nova.

Etapa 2, código

import { describe, expect, it } from 'vitest';
import { slugify } from './slugify.ts';

describe('slugify', () => {
  it('minúsculas o texto e troca espaço por hífen', () => {
    expect(slugify('Olá Mundo')).toBe('olá-mundo');
  });

  it('colapsa espaços consecutivos em um único hífen', () => {
    expect(slugify('a    b')).toBe('a-b');
  });

  it('devolve vazio para entrada vazia', () => {
    expect(slugify('')).toBe('');
  });

  it('devolve vazio quando a entrada é só espaço', () => {
    expect(slugify('   ')).toBe('');
  });

  it('preserva acentuação', () => {
    expect(slugify('Ação Rápida')).toBe('ação-rápida');
  });

  it('não duplica hífen já presente', () => {
    expect(slugify('bem - vindo')).toBe('bem---vindo');
  });
});

Etapa 3, sem cobertura

  • Entrada null/undefined: só dá para testar com @ts-expect-error. O teste documentaria um contrato que o tipo já proíbe, sugiro validar na fronteira da API, não aqui.
  • O último teste revela um provável defeito: 'bem - vindo' produz 'bem---vindo', com três hífens. Escrevi o teste com o comportamento atual, não com o desejado. Se a intenção era colapsar, a regex precisa virar /[\s-]+/g. Decida antes de mergear, o teste está fixando o comportamento errado.

How to use

  1. 1

    Copy the template

    Use the copy button in the block above. It is 28 lines of instruction.

  2. 2

    Fill in the variables

    Swap the 3 highlighted variables for your own content. Leaving them blank degrades the output.

  3. 3

    Pick one of the listed models

    Run it on one of the models listed on the side. A smaller model usually degrades the result.

  4. 4

    Paste and run

    Or use the lab, with your own key, and compare it against the preview.

Performance

Nobody has run this prompt in the lab yet.

Versions

Comments

Sign in to comment

No comments yet.