Programa Builders

Construa com a gente por um mês inteiro. Uso e add-ons ilimitados, chamadas semanais e seu próprio canal no Slack.

Saiba mais
Polymorfa

Sandbox

Teste no WhatsApp sem um celular de verdade

Números de teste são contas de WhatsApp em uma rede simulada. Eles pareiam, enviam e recebem no mesmo runtime dos números reais, pela mesma API e pelos mesmos webhooks, e nunca chegam a uma pessoa de verdade.

Números de teste por projeto
5
Com o add-on Simulation
50
Por dia de número de teste online
0 créditos
Fixtures de eventos de teste
9

Números de teste

Um runtime real em uma rede simulada.

Cada número de teste é uma sessão comum de Linked Devices. Ele se conecta a uma rede de WhatsApp simulada em vez dos servidores do WhatsApp, então o seu código percorre o mesmo caminho de um número real.

Pareamento real, não mocks. O runtime mostra um código de pareamento e o celular simulado o lê, como uma pessoa faz em um celular de verdade.
A API de sessão completa. Mensagens e mídia, edições e confirmações, contatos, grupos, canais, presença, privacidade, perfis, etiquetas e catálogos.
  • Destinatários só do projeto. Mensagens diretas chegam a outros números de teste do projeto. Qualquer outro destinatário retorna 404.
  • Pronto ao ser criado. Um número de teste novo já nasce conectado e continua vinculado depois de reinícios.
  • 243 países. Escolha um país e receba um número no formato local.

Inspector e controles do celular

As duas pontas da conversa.

Abra um número de teste no app de desktop Polymorfa Inspector e aja como o celular dele pelo Console ou pela API.

Abra no Inspector. O Inspector se vincula como mais um dispositivo no macOS, Windows ou Linux e compartilha chats e estado com a sua sessão da API.
Aja como o celular. Liste os dispositivos vinculados, envie como o celular ou desvincule um dispositivo, como uma pessoa faz em Dispositivos vinculados.

Cenários

Teste os caminhos que quebram em produção.

Escolha como um número de teste responde e se os envios dele falham, e comece com histórico de chats.

Respostas em eco. Defina replyBehavior como echo e o número responde com o seu texto, então um teste de conversa tem uma resposta para esperar.
Envios rejeitados. Defina failureScenario como reject-send e os envios dele falham, para você testar novas tentativas e alertas.
Histórico de chats. Envie até 100 mensagens como fixture e comece o número com elas.

Eventos de teste

Qualquer webhook, quando você quiser.

Dispare um evento para um número de teste. Ele chega aos seus webhooks e à API de eventos no formato de produção, marcado como teste.

Assinado como em produção. Cada evento é assinado com o segredo do seu endpoint e traz source: test, então o seu handler o verifica e consegue diferenciá-lo.
Nove fixtures com substituições. De message.received a template.status. Substitua o remetente, o texto, o tipo de mídia, o status ou o motivo da falha.
  • Ida e volta de verdade. Defina fromSession e outro número de teste envia a mensagem, para você responder a ela.
  • Seguro para tentar novamente. Repita um disparo com a mesma Idempotency-Key e você recebe o mesmo evento.
  • Auditado. Todo disparo fica registrado no log de auditoria da sua equipe.

No seu código

Testes que rodam no CI.

Crie números de teste, aja como o celular e dispare eventos pela sua suíte de testes.

test-number.ts
import { MessagingClient } from "@polymorfa/sdk";

const messaging = new MessagingClient({
  credential: { type: "apiKey", value: process.env.POLYMORFA_KEY! },
});

const link = await messaging.quickLinks.create({
  projectId,
  configuration: {
    testing: {
      country: "BR",
      configuration: {
        accountType: "business",
        replyBehavior: "echo",
        failureScenario: "none",
      },
    },
  },
});

Superfície da API

A API do Sandbox.

Números de teste usam a API Messaging comum. Estas rotas acrescentam configuração, controles do celular e eventos de teste.

Números de teste

  • POST/messaging/quicklinksReserva um número de teste com configuration.testing
  • POST/quicklink/{token}/testing/startInicia a conta simulada reservada
  • POST/messaging/testing/{project}/history-fixturesEnvia histórico de chats

Controles do celular

  • GET/messaging/testing/{project}/numbers/{session}/phoneLê o celular e os dispositivos vinculados dele
  • POST…/numbers/{session}/phone/messagesEnvia uma mensagem como o celular
  • POST…/numbers/{session}/phone/devices/{deviceId}/unlinkDesvincula um dispositivo complementar

Eventos de teste

  • POST/messaging/testing/{project}/eventsDispara um evento de teste assinado
  • GET/messaging/testing/{project}/events/fixturesLista as fixtures e as substituições de cada uma

Fixtures

  • Eventomessage.receivedUma mensagem recebida
  • Eventomessage.failedUm envio que falhou
  • Eventocall.missedUma chamada que ninguém atendeu
  • Eventosession.restriction_updatedUma mudança de restrição

Comece com um número grátis

Seu primeiro número real é grátis. Adicione mais números no Pay-As-You-Go.