Playwright testleri oluşturun. Kullanıcı "test yaz", "test oluştur", "için test ekle", "bu component'i test et", "e2e test", "test oluştur", "bu sayfayı test et" veya "bu özelliği test et" dediğinde kullanın.
cd ~/.claude/skills
git clone https://github.com/alirezarezvani/claude-skills.git claude-skills mkdir -p ~/.claude/skills/generate
curl -fsSL https://raw.githubusercontent.com/alirezarezvani/claude-skills/HEAD/.gemini/skills/generate/SKILL.md \
-o ~/.claude/skills/generate/SKILL.md Bir kullanıcı hikayesinden, URL'den, bileşen adından veya özellik açıklamasından production-ready Playwright testleri oluştur.
$ARGUMENTS test edilecek şeyi içerir. Örnekler:
"kullanıcı e-posta ve şifre ile giriş yapabilir""ödeme akışı""src/components/UserProfile.tsx""filtreleri olan arama sayfası"$ARGUMENTS öğesini ayrıştırarak şunları belirle:
Bağlam toplamak için Explore alt ajanını kullan:
playwright.config.ts öğesinde testDir, baseURL, projects değerlerini okutestDir içindeki mevcut testleri kontrol etpages/ içinde mevcut sayfa nesnelerini kontrol etfixtures/ içinde mevcut fixture'ları kontrol etauth.setup.ts veya storageState config)Bu eklentideki templates/ klasöründe eşleşen desenleri kontrol et:
| Test ediyorsan... | Şablonu yükle |
|---|---|
| Giriş/auth akışı | ../pw/templates/auth/login.md |
| CRUD işlemleri | templates/crud/ |
| Ödeme/checkout | templates/checkout/ |
| Arama/filtre UI | templates/search/ |
| Form gönderimi | templates/forms/ |
| Dashboard/veri | templates/dashboard/ |
| Ayarlar sayfası | templates/settings/ |
| Onboarding akışı | templates/onboarding/ |
| API endpoint'leri | templates/api/ |
| Erişilebilirlik | templates/accessibility/ |
Şablonu spesifik uygulamaya uyarla — {{placeholders}} yerine gerçek seçiciler, URL'ler ve veriler koy.
Bu kurallara uy:
Yapı:
import { test, expect } from '@playwright/test';
// Proje custom fixture'lar kullanıyorsa import et
test.describe('Özellik Adı', () => {
// İlgili davranışları grupla
test('şunu yapmalı: <beklenen davranış>', async ({ page }) => {
// Arrange: navigate et, durumu hazırla
// Act: kullanıcı eylemini gerçekleştir
// Assert: sonucu doğrula
});
});
Locator önceliği (çalışan ilkini kullan):
getByRole() — düğmeler, linkler, başlıklar, form öğelerigetByLabel() — etiketli form alanlarıgetByText() — etkileşimli olmayan metin içeriğigetByPlaceholder() — yer tutucu metni olan girdilergetByTestId() — semantic seçenekler mevcut olmadığındaAssertions — her zaman web-first:
// İYİ — otomatik yeniden deneme
await expect(page.getByRole('heading')).toBeVisible();
await expect(page.getByRole('alert')).toHaveText('Başarılı');
// KÖTÜ — yeniden deneme yok
const text = await page.textContent('.msg');
expect(text).toBe('Başarılı');
Asla kullanma:
page.waitForTimeout()page.$(selector) veya page.$$(selector)page.evaluate()Her zaman içer:
awaitbaseURL-relative navigation (page.goto('/') değil page.goto('http://...')).spec.ts oluşturrequire() import'ları ile .spec.js oluşturtest-data/ içinde bir JSON dosyası oluşturOluşturulan testi çalıştır:
npx playwright test <oluşturulan-dosya> --reporter=list
Başarısız olursa:
2 veya daha fazla bağımsız görevin paralel olarak yürütülebileceği ve aralarında state paylaşımı ya da sıralı bağımlılık olmadığı durumlarda kullanın.
Ayrı bir oturumda inceleme kontrol noktaları ile yürütülecek yazılı bir uygulama planınız olduğunda kullanın.
Mevcut oturumda bağımsız görevlerle uygulama planlarını yürütürken kullanın
Herhangi bir hata, test başarısızlığı veya beklenmeyen davranışla karşılaştığınızda, çözüm önerisi sunmadan önce kullanın.
Herhangi bir feature ya da bugfix uygulamaya başlamadan önce kullanın.
Yeni beceriler oluştururken, mevcut becerileri düzenlerken veya dağıtımdan önce becerileri doğrularken kullanın.