Pular para o conteúdo

Remoção de segredos

As gravações são commitadas no git, então os segredos são removidos antes de qualquer coisa ser gravada no disco. A remoção fica ativa por padrão; o proxy substitui os valores destes headers de requisição/resposta por [REDACTED]:

  • Authorization
  • Cookie
  • Set-Cookie

Isso é seguro: a correspondência na reprodução ignora esses headers, então a remoção nunca quebra a reprodução. Ela se aplica a gravações .mock.json, gravações WebSocket e arquivos .har. Para desativar a remoção, passe --no-redact na CLI ou defina redaction: false na config.

Quando apenas alguns cookies são sensíveis, coloque os inofensivos na allow-list por nome (por exemplo, um cookie theme ou de teste A/B). Cookies na allow-list mantêm seus valores dentro de Cookie/Set-Cookie; todos os outros cookies continuam removidos.

Para manter o fluxo de login e as credenciais totalmente fora das gravações, execute a autenticação em um projeto de setup do Playwright com o proxy no modo transparent, persista o storageState em um auth-state.json ignorado pelo git e reutilize-o nos seus testes. As requisições gravadas então carregam apenas os headers de sessão (removidos), nunca o login.

Veja o exemplo de aplicação autenticada para uma configuração funcional contra um provedor de autenticação real.

Os headers padrão sempre se aplicam (enquanto a remoção estiver ativa); você pode acrescentar a eles.

  • --no-redact — desativa a remoção de segredos (ativa por padrão).
  • --redact — ativa a remoção de segredos; só é necessário para reativar quando a config define redaction: false.
  • --redact-headers <names> — nomes de header extras, separados por vírgula, a remover (mesclados com os padrões).
  • --redact-body <patterns> — padrões regex separados por vírgula a remover dos corpos de requisição/resposta.
  • --allow-headers <names> — nomes de header, separados por vírgula, isentos de remoção (por exemplo set-cookie).
  • --allow-cookies <names> — nomes de cookie, separados por vírgula, a manter sem remoção dentro de Cookie/Set-Cookie.
Terminal window
# A remoção já está ativa; remova também um header de API-key e tokens "sk_live_...", mantenha o cookie theme
test-proxy-recorder http://localhost:8000 \
--redact-headers x-api-key \
--redact-body "sk_live_[a-zA-Z0-9]+" \
--allow-cookies theme,locale

Ao construir o ProxyServer diretamente:

import { ProxyServer } from 'test-proxy-recorder';
// Passar este objeto ativa a remoção; passe `false` (ou nada) para mantê-la desativada.
const proxy = new ProxyServer('http://localhost:3000', './recordings', undefined, {
headers: ['x-api-key', 'x-auth'], // headers extras, mesclados com os padrões
bodyPatterns: [/sk_live_[a-z0-9]+/i], // regexes substituídos nos corpos de requisição/resposta
allowHeaders: ['set-cookie'], // nunca remova estes headers
allowCookies: ['theme', 'locale'], // mantenha estes cookies dentro de Cookie/Set-Cookie
placeholder: '[REDACTED]', // padrão
});

O redactSession(session, config) também é exportado caso você queira remover segredos de gravações existentes por conta própria.