brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
generateGere testes Playwright. Use quando o usuário disser "escrever testes", "gerar testes", "adicionar testes para", "testar este componente", "teste e2e", "criar teste para", "testar esta página" ou "testar esta funcionalidade".
Independent GitHub snapshot · Automated classification · Original documentation governs
name: "generate" description: >- Gere testes Playwright. Use quando o usuário disser "escrever testes", "gerar testes", "adicionar testes para", "testar este componente", "teste e2e", "criar teste para", "testar esta página" ou "testar esta funcionalidade". agents:
Gere testes Playwright prontos para produção a partir de uma história de usuário, URL, nome de componente ou descrição de funcionalidade.
$ARGUMENTS contém o que testar. Exemplos:
"user can log in with email and password""the checkout flow""src/components/UserProfile.tsx""the search page with filters"Analisar $ARGUMENTS para determinar:
Use o subagente Explore para coletar contexto:
playwright.config.ts para testDir, baseURL, projectstestDir para padrões, fixtures e convençõespages/fixtures/auth.setup.ts ou config storageState)Verificar templates/ neste plugin para padrões correspondentes:
| Se testando... | Carregar template de |
|---|---|
| Fluxo de login/auth | templates/auth/login.md |
| Operações CRUD | templates/crud/ |
| Checkout/pagamento | templates/checkout/ |
| UI de pesquisa/filtro | templates/search/ |
| Envio de formulário | templates/forms/ |
| Dashboard/dados | templates/dashboard/ |
| Página de configurações | templates/settings/ |
| Fluxo de integração | templates/onboarding/ |
| Endpoints de API | templates/api/ |
| Acessibilidade | templates/accessibility/ |
Adaptar o template à aplicação específica — substituir {{placeholders}} por seletores, URLs e dados reais.
Seguir estas regras:
Estrutura:
import { test, expect } from '@playwright/test';
// Importar fixtures personalizados se o projeto os usar
test.describe('Feature Name', () => {
// Agrupar comportamentos relacionados
test('should <expected behavior>', async ({ page }) => {
// Arranjar: navegar, configurar estado
// Agir: executar ação do usuário
// Asserir: verificar resultado
});
});
Prioridade de localizador (use o primeiro que funcionar):
getByRole() — botões, links, cabeçalhos, elementos de formuláriogetByLabel() — campos de formulário com rótulosgetByText() — conteúdo de texto não interativogetByPlaceholder() — inputs com texto de placeholdergetByTestId() — quando opções semânticas não estão disponíveisAsserções — sempre web-first:
// BOM — tenta automaticamente
await expect(page.getByRole('heading')).toBeVisible();
await expect(page.getByRole('alert')).toHaveText('Success');
// RUIM — sem retry
const text = await page.textContent('.msg');
expect(text).toBe('Success');
Nunca use:
page.waitForTimeout()page.$(selector) ou page.$(selector)page.evaluate() para coisas que localizadores podem fazerSempre inclua:
await adequado em toda chamada PlaywrightbaseURL (page.goto('/') não page.goto('http://...')).spec.ts.spec.js com imports require()test-data/Executar o teste gerado:
npx playwright test <arquivo-gerado> --reporter=list
Se falhar: