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.

Try it

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.