Uçtan Uca Testte Cypress mi Playwright mi: Hangisini Ne Zaman Seçmeli
Cypress ve Playwright'ın mimari farkı test yazma deneyiminden çok daha fazlasını belirler. İkisi arasında seçim yapmadan önce bilinmesi gerekenler ve uçtan uca test yazarken düşülen tipik tuzaklar.
Cypress ve Playwright karşılaştırmaları genelde özellik listesiyle başlar: kaç tarayıcı destekliyor, hangi dilde test yazılıyor, paralel çalışıyor mu. Ama asıl belirleyici fark daha derindir ve listelenen özelliklerin çoğunu açıklar.
Cypress, test kodunu tarayıcının kendi çalışma döngüsü içinde çalıştırır. Test ve uygulama aynı JavaScript ortamını paylaşır, Cypress araya bir proxy katmanı koyarak ağ isteklerini ve DOM'u izler. Bunun getirisi büyük: komutlar ve assertion'lar DOM'daki değişikliği doğrudan görür, zaman içinde geriye dönüp her adımın anlık görüntüsünü incelemeye izin veren bir hata ayıklama deneyimi sunar. Getirdiği kısıt da aynı köktendir: Cypress uzun süre tek sekmeyle sınırlı kaldı, birden fazla origin arasında gezinmek özel bir komut gerektirir, yeni sekmede açılan pop-up'ları test etmek doğrudan desteklenmez ve dolandırılması gerekir.
Playwright farklı bir yol seçti: tarayıcıyı kendi protokolü üzerinden, ayrı bir süreçten, WebSocket üzerinden yönetir. Test kodu tarayıcının içinde değil dışında çalışır. Bu sayede birden fazla tarayıcı bağlamını (context) ve sekmeyi aynı testte eş zamanlı sürebilir, origin değiştirmek özel bir işlem gerektirmez, popup ve yeni sekme akışları doğal olarak çalışır. Chromium'un yanında Firefox ve WebKit için de kendi yamalı derlemelerini sağladığından üçü de birinci sınıf tarayıcı olarak test edilir. Dil tarafında da JavaScript/TypeScript'e ek olarak Python, Java ve .NET bağlayıcıları vardır; bu, testleri ayrı bir ekip ya da farklı bir dilde çalışan bir platform ekibi yazacaksa önemli bir ayrım noktasıdır.
Hangisi nerede kazanır
Saf frontend ekibi, tek sayfa uygulaması, JavaScript dışında bir dil kullanma ihtimali yok, hata ayıklarken adım adım geriye sarma deneyimi öncelikli: Cypress burada hâlâ güçlü bir seçenek. Zaman yolculuğu arayüzü ve komut günlüğü, bir testin neden kırıldığını anlamak için ekstra log basmaya gerek bırakmadan hızlı fikir verir.
Çok tarayıcılı gerçek doğrulama gerekiyorsa (özellikle Safari/WebKit davranışı önemliyse), testler CI'da paralel ve sayıya bölünerek (sharding) koşacaksa, ya da test yazımı farklı dillerde çalışan ekiplere yayılacaksa varsayılan seçim Playwright olmalı. Yeni başlayan bir proje için de aynı tavsiye geçerli: yerleşik test koşucusu, iz kaydedici (trace viewer) ve paralel çalıştırma desteği ek araç kurmadan geliyor, bu da bakım yükünü azaltıyor.
İkisi de güzel demek burada bir işe yaramaz: eğer proje çok dilli değilse ve Safari doğrulaması kritik değilse Cypress'in kurulumu daha hızlıdır; ama yeni bir proje sıfırdan başlıyorsa ve büyüme ihtimali varsa Playwright'ın esnekliği baştan seçilmeye değer, çünkü sonradan mimariyi değiştirmek (tek sekme varsayımı üzerine kurulmuş yüzlerce testi taşımak) pahalıdır.
Uçtan uca testte tekrar eden tuzaklar
Hangi aracı seçerseniz seçin, uçtan uca testler aynı sınıftan sorunlarla kırılır. Bunları bilmek framework seçiminden daha çok zaman kazandırır.
Sabit süreli bekleme, gerçek sinyali gizler.wait(5000) gibi bir komut, arkasındaki gerçek koşulu unutturur. O bekleme neden konmuştu diye sormak gerekir: çoğu zaman işlem bitince görünen gerçek sinyal bir modalın kapanması değil, bir bildirimin ekranda belirmesidir. Modal, arkadaki asenkron işlem daha sonuçlanmadan kapanabilir. Bekleme süresini kısaltıp koşula bağladığınızda, testin gerçekte neyi doğruladığı da netleşir; süre dolup da koşul sağlanmazsa test kendi hata mesajını versin, sessizce geçmesin.
Aşırı geniş seçiciler yanlış hata verir. Bir bildirim kutusunun CSS sınıfı hem gerçek toast'ta hem de sayfa içi (inline) bir uyarıda kullanılıyorsa, bu seçiciden tek eleman bekleyen bir assertion sayfada on tane eşleşme bulup strict mode ihlali fırlatabilir. Bu, ürünün bozuk olduğu anlamına gelmez; seçicinin gereğinden geniş olduğu anlamına gelir. Seçiciyi daraltmak ya da tekil varlık yerine sayıyı doğrudan ölçmek (elemanın kaçıncı örneği, kaç tane) daha sağlam bir kontrol verir.
Bir suitin ilk testi genelde farklı bir ortamda koşar. İlk çalıştırma; derleme, bağlantı havuzunun ısınması, önbelleğin dolması gibi testin konusuyla ilgisi olmayan sebeplerle başarısız olabilir. Bunu suitin geri kalanıyla karıştırmayın: ayrı bir ısınma adımı koyup ilk testin başarısızlığını rapora farklı işaretleyin, aksi halde her koşuda rastgele bir test flaky damgası yer.
Temiz tarayıcı oturumu, geliştiricinin gördüğünden farklı davranır. Bir ürün turu ya da onboarding katmanı yerel localStorage'da bu tur zaten görüldü bayrağına bakar. Geliştiricinin kendi tarayıcısında bu bayrak zaten var, CI'ın temiz oturumunda yok; tur katmanı gerçek butonun üstüne oturup tıklamayı yutar. Testin her sayfa geçişinden sonra böyle bir örtü olup olmadığını kontrol edip varsa kapatması gerekir.
CI'daki koşucu kodu tazelemezse eski kodu doğrular. Kalıcı bir checkout kullanan bir test ortamı, kod her değiştiğinde açıkça güncellenmezse önceki durumun anlık görüntüsünü koşturmaya devam eder. Bu en tehlikeli biçimde, bu hata bir daha çıkmasın diye eklenen bir regresyon testinde ortaya çıkar: test yeşil görünür ama aslında düzeltmeden önceki kodu ölçüyordur. Her koşudan önce ortamın gerçekten güncellendiğini doğrulamak, yeşil sonuca güvenmenin ön koşuludur.
Seçici disiplini: stile değil role bağlan
Yukarıdaki tuzakların çoğu aslında tek bir kök nedene çıkar: seçicinin uygulamanın görünümüne değil davranışına bağlanması gerekir. Bir CSS sınıfı, bir tasarım güncellemesinde isim değiştirebilir ya da başka bir bileşenle paylaşılabilir; ikisi de testi ürünle hiçbir ilgisi olmayan bir sebeple kırar. Rol tabanlı seçiciler (bir butonun erişilebilirlik rolü ve görünen metni, bir alanın etiketi) tasarımın değişmesine karşı çok daha dayanıklıdır, çünkü kullanıcı da o elemanı aynı yoldan bulur: gördüğü metinle. Test kimliği için özel bir öznitelik eklemek (data-testid benzeri) bir orta yoldur; stil değişse de kalır, ama testin gerçekten kullanıcı gibi davranıp davranmadığını ölçmez. İkisi arasında seçim proje büyüklüğüne göre değişir: küçük bir ekip için rol tabanlı seçiciler hem testi hem de erişilebilirliği aynı anda iyileştirir, büyük ve sık tasarım değişen bir üründe özel test kimlikleri daha öngörülebilir bir sözleşme sunar.
Ne zaman uçtan uca test yazmamalı
Uçtan uca testler en değerli olduğu yerde de en pahalıdır: gerçek tarayıcı, gerçek ağ, gerçek zamanlama. Bir iş kuralının doğru hesaplandığını doğrulamak için tarayıcıyı açıp formu doldurup butona basmak gerekmiyorsa, o kontrol birim ya da entegrasyon testine ait. Uçtan uca suit; kullanıcının gerçekten izlediği, birden fazla bileşenin bir araya geldiği kritik yolları (giriş, ödeme, kayıt tamamlama) doğrulamak için var. Bu ayrımı gözetmeyen bir ekip, her mantık değişikliğinde dakikalarca süren, sık sık flaky çıkan ve kimsenin güvenmediği bir suit biriktirir. Test piramidinin tepesi dar tutulmalı; genişlerse CI yavaşlar ve flaky testler gerçek hataları gürültünün içinde kaybettirir.
1-5 tab geçiş ·
tab sonraki ·
esc geri al ·
↓ kaydır
> ls -lah ~/services/ --sort=tier
[OK] 25 records · 8 featured · 1 retainer · 16 standard
/02 hizmetler
services.tree
> note
· Fiyatlar USD cinsindendir. 6-12 günlük projelerde %7, 13+ günlük projelerde %14 hacim indirimi uygulanmaktadır. 100 adam-gün ve üzeri kapsamlı programlarda proje bazlı özel fiyatlandırma yapılır. Fiyatlar kapsam, aciliyet ve uzun dönem iş birliğine göre müzakere edilebilir.
> ls ~/products/ --open-source
[OK] 2 entries · 1 live · 1 pre-release
/03 ürünler
products.list
liveaçık kaynak · mit/prod/01
filex
her yere gömülebilen self-hosted dosya yöneticisi
tek go binary · vue/react/web-component embed · 5 storage sürücüsü · realtime collab · rbac · native multi-tenancy · ai ajanları için mcp server
Altyapıyı kurar, otomasyonu sağlar, sistemi ayakta tutar.
BRF Teknoloji, Bursa merkezli bir DevSecOps ve yazılım danışmanlık firmasıdır. Kubernetes cluster yönetiminden serverless platform kurulumuna, CI/CD pipeline tasarımından AI agent geliştirmeye kadar 25 farklı hizmet alanında çalışıyoruz.
İşimizin özü basit: sisteminizi ayağa kaldırır, otomatize eder ve gece 3'te sizi uyandırmayacak hale getiririz. Terraform ile altyapınızı kodlar, ArgoCD ile deploy sürecinizi GitOps'a taşır, Prometheus ile her şeyi izleriz. Bir şey bozulursa — biz bozulmadan önce müdahale ederiz.
Vendor lock-in'e karşıyız. Açık kaynak araçlarla, self-hosted çözümlerle ve endüstri standardı teknolojilerle çalışırız. Knative üzerinde kendi serverless platformunuzu kurarız, Kata Containers ile izole ederiz, Vault ile secret'larınızı yönetiriz. Her projeyi net kapsam, net süre, net fiyatla teslim ederiz.
DevSecOps & CI/CD
Kubernetes & Serverless
Infrastructure as Code
AI & Agent (MCP/ACP)
Güvenlik & Sıfır Güven
Full-Stack Geliştirme
Self-Hosted Çözümler
> grep -i question ~/faq.md
[OK] 3 entries · click to expand
[?]BRF Teknoloji'nin DevOps çözümleri hangi hizmetleri içerir?▾
CI/CD pipeline kurulumu, Kubernetes cluster yönetimi, container migrasyonu, Terraform ile altyapı otomasyonu, monitoring & alerting, şirket içi teknoloji kurulumları ve DevOps danışmanlık hizmetleri sunuyoruz.
[?]Yazılım geliştirme hizmetleriniz nelerdir?▾
MVP geliştirme, mevcut yazılım performans optimizasyonu, backend API geliştirme (Node.js, Go, Python) ve tam stack uygulama geliştirme hizmetleri sunuyoruz. Her projede teknik borç minimumda tutularak teslim edilir.
[?]Hangi DevOps araçlarıyla çalışıyorsunuz?▾
Kubernetes ve Docker’dan Talos Linux’a, Terraform ve OpenTofu’dan Ansible’a, Jenkins, GitLab CI/CD, GitHub Actions, ArgoCD, Flux, Helm ve Rancher’a kadar endüstri standardı araçlarla çalışıyoruz. İzleme ve hata takibinde Prometheus, Grafana, Loki, Tempo, OpenTelemetry ve GlitchTip; ağ katmanında Cilium ve Envoy; test otomasyonunda Playwright, Cypress, k6, Locust, Testcontainers ve Trivy kullanıyoruz. Projenizin ihtiyacına göre en uygun araç setini birlikte belirliyoruz.
brf.sh / 2026
·bursa/tr·
timezone utc+3·
tüm sistemler nominal
> ./connect --target=brf.sh
/05 iletişim
contact.txt
> cat contact.txt
[email][email protected] [phone]+90 530 871 2248 [location] Üçevler Mah. İzmir Yolu Cad 241D 16120 Nilüfer/Bursa [hours] Hafta içi 09:00 — 18:00 UTC+3 [eta] <24s iş günü
[OK] handshake ready
· turnstile enabled
· yanıt süresi: <24s · saat dilimi UTC+3 / bursa
CI/CD Pipeline Kurulumu
GitHub Actions, GitLab CI/CD ile otomatik build, test ve deploy süreçleri.
Mevcut ya da sıfırdan bir repo için otomatik build, test ve deploy pipeline'ı kurulur. GitHub Actions, GitLab CI/CD veya tercih edilen araç kullanılır. Staging + production ortamları için ayrı akışlar tanımlanır.
Mevcut uygulamaların container mimarisine taşınması.
Mevcut uygulamaların container mimarisine taşınması. Docker image tasarımı, Compose yapılandırması ve Kubernetes manifest'lerine dönüştürme. İleri düzey izolasyon için Kata Containers / gVisor dahil edilebilir.
Prometheus, Grafana, Loki ile altyapı ve servis izleme.
Prometheus + Grafana stack kurulumu, servis ve altyapı metrikleri için dashboard'lar, kritik eşikler için alert tanımları. İsteğe bağlı: Zabbix, Loki log aggregation.
GitLab, Nextcloud, VPN, mail sunucusu gibi şirket içi araçlar.
GitLab, Mattermost, Nextcloud, mail sunucusu, VPN, iç monitoring gibi araçların şirket sunucularında kurulumu. Docker Compose veya Kubernetes üzerinde deploy edilir.
MCP/ACP agent'lar, RAG pipeline, multi-agent orchestration, model serving.
LLM entegrasyonu (OpenAI, Claude, Gemini, lokal modeller), MCP (Model Context Protocol) ve ACP (Agent Communication Protocol) ile tool-augmented AI agent'lar. RAG pipeline, multi-agent orchestration, model serving (vLLM/Ollama). Mevcut iş süreçlerine yapay zeka katmanı.
Apache Kafka, RabbitMQ, NATS ile event-driven data pipeline. Apache Airflow ile ETL/ELT orkestrasyon, real-time data akışı, CDC (Change Data Capture). Data lake/warehouse tasarımı, schema registry, dead letter queue yönetimi.
Paketler
Kafka/RabbitMQ kurulumu + temel producer/consumer
$3,500
5–7 adam/gün
ETL pipeline (Airflow + source → warehouse)
$5,200
8–12 adam/gün
Tam event-driven architecture (CDC + streaming + DLQ)
ELK Stack veya Loki + Grafana ile merkezi log yönetimi. OpenTelemetry ile distributed tracing, Jaeger/Tempo entegrasyonu. Log retention politikası, structured logging standartları, anomaly detection. Tüm servislerde uçtan uca observability.
Playwright, Cypress ile E2E test otomasyonu, k6/Gatling ile yük testi. CI/CD pipeline'a entegre pre-deploy quality gate, test coverage raporlama, visual regression testing. AI-assisted test generation ile test yazım süresini %60'a kadar düşürme.
Backstage veya Port ile internal developer portal kurulumu. Self-service ortam oluşturma, golden path template'leri, service catalog, TechDocs entegrasyonu. Developer experience (DX) metrikleri, DORA metrics takibi, cognitive load azaltma.
Paketler
Backstage/Port kurulumu + service catalog
$3,900
6–8 adam/gün
Golden path templates + self-service ortam
$6,500
10–14 adam/gün
Tam platform (portal + templates + DORA + DX metrikleri)
Toplanan Kişisel Verileriniz, Toplanma Yöntemi ve Hukuki Sebebi
Kimliğinizi belirli ya da belirlenebilir kılan her türlü bilgi "kişisel veri" olarak kabul edilmektedir. Web sitemizi ziyaret ettiğinizde veya hizmetlerimizi kullandığınızda; ad, soyad, e-posta adresi, telefon numarası gibi iletişim bilgileriniz, IP adresiniz ve tarayıcı çerez verileri otomatik ya da yarı-otomatik yollarla toplanabilir. Bu veriler, 6698 sayılı Kişisel Verilerin Korunması Kanunu'nun 5. maddesinde belirtilen "bir sözleşmenin kurulması veya ifasıyla doğrudan doğruya ilgili olması" ve "ilgili kişinin temel hak ve özgürlüklerine zarar vermemek kaydıyla, veri sorumlusunun meşru menfaatleri için veri işlenmesinin zorunlu olması" hukuki sebeplerine dayanılarak işlenmektedir.
Kişisel Verilerinizin İşlenme Amacı
Toplanan kişisel verileriniz; hizmetlerimizin sunulması ve iyileştirilmesi, müşteri taleplerinin karşılanması, yasal yükümlülüklerin yerine getirilmesi, bilgi güvenliği süreçlerinin yürütülmesi ve iletişim faaliyetlerinin yönetilmesi amaçlarıyla işlenmektedir. Verileriniz, belirtilen amaçlarla sınırlı ve ölçülü olarak işlenir; amacın ortadan kalkması halinde silinir, yok edilir veya anonim hale getirilir.
Toplanan Kişisel Verilerin Kimlere ve Hangi Amaçlarla Aktarılabileceği
Kişisel verileriniz; yasal düzenlemelerin gerektirdiği hallerde kamu kurum ve kuruluşlarına, hizmetlerin sunulması amacıyla iş ortaklarımıza ve teknik altyapı sağlayıcılarına, hukuki uyuşmazlıklarda avukatlar ve danışmanlara aktarılabilir. Aktarım, Kanun'un 8. ve 9. maddelerine uygun olarak, gerekli teknik ve idari tedbirler alınarak gerçekleştirilir.
Kişisel Verileri İşlenen Kişi Olarak Haklarınız
6698 sayılı Kanun'un 11. maddesi uyarınca; kişisel verilerinizin işlenip işlenmediğini öğrenme, işlenmişse bilgi talep etme, işlenme amacını ve amacına uygun kullanılıp kullanılmadığını öğrenme, yurt içinde veya yurt dışında aktarıldığı üçüncü kişileri bilme, eksik veya yanlış işlenmişse düzeltilmesini isteme, Kanun'un 7. maddesindeki şartlar çerçevesinde silinmesini veya yok edilmesini isteme, yapılan işlemlerin aktarıldığı üçüncü kişilere bildirilmesini isteme, münhasıran otomatik sistemler vasıtasıyla analiz edilmesi suretiyle aleyhinize bir sonucun ortaya çıkmasına itiraz etme ve kanuna aykırı işleme sebebiyle zarara uğramanız halinde zararın giderilmesini talep etme haklarına sahipsiniz. Bu haklarınızı kullanmak için web sitemizdeki iletişim kanalları aracılığıyla bize başvurabilirsiniz.
Şartlar ve Koşullar
Şartlar ve Koşullar
1. Hizmet Kapsamı ve Değişiklikler
BRF Teknoloji, sunduğu yazılım geliştirme, DevOps danışmanlık, altyapı kurulumu ve teknik destek hizmetlerini bu şartlar ve koşullar çerçevesinde yürütür. Hizmet kapsamı, her proje için ayrıca belirlenir ve karşılıklı mutabakat ile kesinleştirilir. BRF Teknoloji, sunduğu hizmetlerin kapsamını, fiyatlandırmasını ve teknik detaylarını önceden bildirmek kaydıyla güncelleme hakkını saklı tutar.
2. Gizlilik Politikası
Hizmetlerimiz kapsamında toplanan kişisel veriler, Gizlilik Politikamız çerçevesinde işlenir. Detaylı bilgi için Gizlilik Politikası sayfamızı inceleyebilirsiniz.
3. Hizmet Kullanımı ve Sorumluluklar
Müşteriler, sunulan hizmetleri yalnızca yasal ve etik çerçevede kullanmayı kabul eder. Hizmetlerin kötüye kullanılması, üçüncü taraf haklarının ihlali veya yasa dışı faaliyetler için kullanılması durumunda BRF Teknoloji hizmeti askıya alma veya sonlandırma hakkına sahiptir. Müşteri, proje kapsamında sağladığı bilgilerin doğruluğundan ve güncelliğinden sorumludur.
4. Ödeme Şartları
Ödeme koşulları proje bazında belirlenir ve proje başlangıcında karşılıklı mutabakat ile kesinleştirilir. Aksi belirtilmedikçe, faturalar proje tesliminden itibaren 15 gün içinde ödenir. Geciken ödemelerde aylık %2 gecikme faizi uygulanabilir.
5. İptal ve İade Politikası
İptal talepleri, hizmetin başlangıç tarihinden en az 7 gün önce yazılı olarak bildirilmelidir. Başlamış projelerde, tamamlanan iş oranına göre ücretlendirme yapılır. Proje kapsamında özel olarak geliştirilen yazılım ve altyapı bileşenleri için iade yapılmaz.