🎭 Playwright in Jenkins
Playwright in Jenkins: Jenkins içinde Playwright'i düz bir Linux agent üzerinde çalıştırmak, bir kurye şoförüne her tek teslimattan önce kamyonu, lastikleri ve yakıtı bizzat üret
Jenkins içinde Playwright'i düz bir Linux agent üzerinde çalıştırmak, bir kurye şoförüne her tek teslimattan önce kamyonu, lastikleri ve yakıtı bizzat üretmesini istemek gibidir — teknik olarak mümkündür ama kırılgandır ve yavaştır; bir browser sürümü Playwright test runner sürümüyle sessizce senkron dışı kaldığı anda testler, kodunla hiçbir ilgisi olmayan bir nedenle başarısız olmaya başlar. Resmi Docker image'ları bunu, tam olarak eşleşen browser binary'lerini test runner'la AYNI image'ın İÇİNE koyarak çözer — `agent { docker { image 'mcr.microsoft.com/playwright:v1.42.0-jammy' } }` kuryenin doğru şekilde inşa edilmiş kamyonla geldiğini garanti eder. Düşündürücü soru şu: `npm install` zaten Playwright'in kendi browser binary'lerini local'e kuruyorsa, neden ayrıca bütün bir Docker image'a ihtiyaç duyalım ki? Çünkü paylaşılan bir Jenkins agent'ı zaman içinde ÇOK FARKLI job'ları ÇOK FARKLI Playwright sürümleriyle çalıştırır — izole bir container olmadan, bir job'ın browser kurulumu sessizce bir başkasınınkinin üzerine yazabilir veya onunla çakışabilir; tam da 'benim makinemde çalışıyor ama CI'da çalışmıyor' tarzı, temiz bir local tekrarı olmayan bug'lardan biri. Java benzetmesi: bu, bir build agent'ı için tam bir JDK sürümünü Docker image'ının içine sabitlemekle aynı mantıktır — paylaşılan bir build sunucusunda global olarak hangi JDK kuruluysa ona güvenmek yerine. Gerçek QA işinde, 'browser executable not found' hatası veya aynı testin iki CI koşumu arasında gizemli şekilde farklı bir render sonucu, neredeyse her zaman tam olarak bu problemdir ve pipeline çıplak paylaşılan bir agent yerine sürüm-sabitlenmiş bir container içinde çalıştığı anda kaybolur.
Jenkins'te Playwright Testleri (En İyi Pratik)
Resmi Docker image ile Playwright — browser kurulumuna gerek yok
Micro Lab: Jenkinsfile pipeline stage tamamlama
TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.
Adim Adim: Jenkinsfile pipeline stage tamamlama
pipeline ve agent ile calisma yerini sec
checkout ile kaynak kodu al
build/dependency stageini calistir
test stageinde kanit uret
post always icinde rapor ve bildirim yayinla
Jenkinsfile kalite kapisi akisini sirala.
Şimdi İlk Jenkinsfile sekmesindeki Jenkins Sandbox'ta dene: yukarıdaki gibi resmi bir Docker image kullanan bir stage ekle (mevcut 'Deploy' stage'ine benzer şekilde, içinde bir echo adımı yeterli) ve build'i yeşil bitir.
🎬 Playwright Neden Jenkins'te Docker Agent'ında Koşmalı