[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:qa-test-automation\u002Fta-selenium-cypress-playwright-tradeoffs":4,"config":148},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":8,"topic_name":9,"spec_key":7,"spec_name":7,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":58,"samples":63},"qa-test-automation","QA \u002F Test Otomasyonu","","ta-selenium-cypress-playwright-tradeoffs","Ta Selenium Cypress Playwright Tradeoffs","tr",75,1050,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,51,52,55],{"key":19,"name":20,"count":11},"qa-api-testing","Qa Api Testing",{"key":22,"name":23,"count":11},"qa-automation-fundamentals","Qa Automation Fundamentals",{"key":25,"name":26,"count":11},"qa-ci-cd-testing","Qa Ci Cd Testing",{"key":28,"name":29,"count":11},"qa-defect-management","Qa Defect Management",{"key":31,"name":32,"count":11},"qa-exploratory-manual-testing","Qa Exploratory Manual Testing",{"key":34,"name":35,"count":11},"qa-performance-testing","Qa Performance Testing",{"key":37,"name":38,"count":11},"qa-test-case-design","Qa Test Case Design",{"key":40,"name":41,"count":11},"qa-test-strategy","Qa Test Strategy",{"key":43,"name":44,"count":11},"ta-cross-browser-parallel-execution","Ta Cross Browser Parallel Execution",{"key":46,"name":47,"count":11},"ta-framework-architecture-patterns","Ta Framework Architecture Patterns",{"key":49,"name":50,"count":11},"ta-locators-selectors-strategy","Ta Locators Selectors Strategy",{"key":8,"name":9,"count":11},{"key":53,"name":54,"count":11},"ta-synchronization-flaky-tests","Ta Synchronization Flaky Tests",{"key":56,"name":57,"count":11},"ta-visual-regression-reporting","Ta Visual Regression Reporting",[59],{"key":60,"name":61,"count":62},"test-automation","Test Automation",450,[64,82,95,108,121,135],{"id":65,"topic":9,"difficulty":66,"body":67,"options":68,"correct_key":76,"explanation":81},"019faeb4-4b3e-7863-acbb-299bf08572c9",1,"Bir Selenium WebDriver client kütüphanesi (ör. Java veya Python binding'i) tarayıcıya bir elemente tıklamasını nasıl söyler?",[69,72,75,78],{"key":70,"text":71},"a","Sayfanın kendi script bağlamına doğrudan bir JavaScript click() çağrısı enjekte eder",{"key":73,"text":74},"b","Komutu tarayıcının poll ettiği paylaşımlı bir bellek bölgesine yazar",{"key":76,"text":77},"c","Bir HTTP isteğini bir driver sürecine gönderir, o süreç de işlemi tarayıcıda gerçekleştirir",{"key":79,"text":80},"d","Tarayıcıyla birlikte kurulmuş, derlenmiş yerel bir plugin üzerinden doğrudan tarayıcının render motoruna bağlanır","Selenium, WebDriver protokolünü izler: client kütüphane HTTP isteğini (JSON gövdeli) chromedriver veya geckodriver gibi bir driver çalıştırılabilirine gönderir, o driver süreci isteği gerçek tarayıcı işlemine çevirir. a, Cypress'in komutları tarayıcı içinde çalıştırma biçimine daha yakın; b ve d üç aracın da iletişim şekli değil.",{"id":83,"topic":9,"difficulty":66,"body":84,"options":85,"correct_key":70,"explanation":94},"019faeb4-4b3f-772d-a1dc-d6d7c23148c5","Bir test çalışırken Cypress'in test kodu gerçekte nerede çalışır?",[86,88,90,92],{"key":70,"text":87},"Test edilen uygulamayla aynı tarayıcıda ve run loop'ta",{"key":73,"text":89},"Herhangi bir tarayıcıdan ayrı, uzak bir grid node'unda",{"key":76,"text":91},"Tarayıcının dışında, işletim sisteminin erişilebilirlik katmanında",{"key":79,"text":93},"Uygulamanın kendi backend sunucu sürecinin içinde, tarayıcıdan tamamen izole","Cypress test kodu, uygulamanızın JavaScript'iyle aynı run loop'u paylaşarak doğrudan tarayıcıda çalışır; bir Node.js süreci dosya okuma gibi OS erişimi gerektiren işleri yapar ve network trafiğini proxy'ler. b, c ve d Cypress test kodunun çalıştığı yeri tarif etmiyor.",{"id":96,"topic":9,"difficulty":66,"body":97,"options":98,"correct_key":79,"explanation":107},"019faeb4-4b40-7612-8553-852e032312c1","Playwright, Chromium tabanlı tarayıcıları kontrol etmek için öncelikle hangi protokolü kullanır?",[99,101,103,105],{"key":70,"text":100},"Klasik Selenium JSON Wire Protocol",{"key":73,"text":102},"Piksel karşılaştırmasına dayalı genel bir ekran-tarama protokolü",{"key":76,"text":104},"Bir soket üzerinden IMAP tarzı polling",{"key":79,"text":106},"Chrome DevTools Protocol (CDP)","Playwright, Chromium tarayıcılarını, orijinal olarak tarayıcı debug araçları için geliştirilmiş WebSocket tabanlı Chrome DevTools Protocol (CDP) üzerinden yönetir. a, Selenium'un daha eski protokol soyu; b ve c burada kullanılan gerçek otomasyon protokolleri değil.",{"id":109,"topic":9,"difficulty":66,"body":110,"options":111,"correct_key":73,"explanation":120},"019faeb4-4b41-723e-bc7e-497bd980df43","Üç araçtan hangisi, yüklü tarayıcı sürümüyle eşleşmesi gereken, tarayıcı-üreticisine-özgü ayrı bir driver çalıştırılabilirine (chromedriver veya geckodriver gibi) ihtiyaç duyar?",[112,114,116,118],{"key":70,"text":113},"Cypress",{"key":73,"text":115},"Selenium",{"key":76,"text":117},"Playwright, desteklediği her tarayıcı için",{"key":79,"text":119},"Hiçbiri herhangi bir driver'a ihtiyaç duymaz","Selenium'un WebDriver mimarisi, tarayıcı üreticisi başına bir driver çalıştırılabilirine bağımlıdır ve o driver'ın sürümü genelde yüklü tarayıcı sürümüyle eşleşmelidir. Cypress ayrı bir üretici driver'ı olmadan kendi binary'sini paketler, Playwright ise dışarıdan driver çalıştırılabilirini kurup sürüm eşlemesi yapmanızı istemek yerine kendi tarayıcı binary'lerini kendisi yönetir.",{"id":122,"topic":9,"difficulty":123,"body":124,"options":125,"correct_key":73,"explanation":134},"019faeb4-4b41-7b93-a203-3ea40bfcca36",2,"Selenium neden macOS'ta gerçek Apple Safari'yi otomatikleştirmek için kullanılabilirken Cypress hiç Safari test edemez?",[126,128,130,132],{"key":70,"text":127},"Cypress, Safari'nin render hızına yetişemeyecek kadar yavaştır",{"key":73,"text":129},"Selenium, Safari'yi Apple'ın kendi safaridriver'ı üzerinden sürebilir; Cypress'in ise Safari ailesi bir motor entegrasyonu yoktur",{"key":76,"text":131},"Safari, HTTP tabanlı tüm otomasyon protokollerini politika gereği engeller",{"key":79,"text":133},"Cypress, Safari'nin macOS motoruna hiç taşınmamış, Windows'a özgü bir kernel düzeyi driver bileşeni gerektirir","Selenium'un WebDriver mimarisi herhangi bir üreticinin uyumlu bir driver yayınlamasına izin verir ve Apple tam olarak bu amaçla safaridriver sağlar, bu yüzden Selenium macOS'ta gerçek Safari'yi otomatikleştirebilir. Cypress hiçbir zaman bir Safari\u002FWebKit çalıştırma yolu entegre etmedi, dolayısıyla Safari'ye karşı test çalıştıramaz. a, c ve d bu araçların gerçekte çalışma biçimiyle uyuşmayan gerekçeler.",{"id":136,"topic":9,"difficulty":123,"body":137,"options":138,"correct_key":79,"explanation":147},"019faeb4-4b43-7236-9d3c-f884bd1481a9","Cypress, geçmişte aynı test içinde ikinci, farklı bir origin (domain) ile etkileşimde neden kısıtlıydı?",[139,141,143,145],{"key":70,"text":140},"Cypress, HTTPS olmayan hiçbir network isteğini göndermeyi reddeder",{"key":73,"text":142},"Cypress test dosyaları test başına tam olarak bir HTTP isteğiyle sınırlıdır",{"key":76,"text":144},"İkinci origin sayfaları her zaman, Cypress'in inspector'ının hiç görünürlüğü olmadığı özel bir headless sandbox modunda render olur",{"key":79,"text":146},"Cypress kodu, uygulamanın origin'ine bağlı tarayıcı içinde çalışır, origin değişimi bağlamı bozardı","Cypress kodu uygulamayla aynı bağlamda doğrudan tarayıcı içinde çalıştığı için, gerçekten farklı bir origin'e gitmek bu çalışma bağlamını bozardı; bu yüzden Cypress daha sonra bir çözüm olarak cy.origin()'i tanıttı. a, b ve c Cypress'in hiç sahip olmadığı gerçek kısıtlamalar.",{"fields":149,"seniorities":334,"interview_shapes":335,"locales":340,"oauth":342,"question_count":345,"coach_enabled":346,"jd_match_enabled":346},[150,175,195,212,236,249,268,287,309,315,321,328],{"key":151,"name_tr":152,"name_en":152,"sort":66,"specializations":153},"backend","Backend",[154,157,160,163,166,169,172],{"key":155,"name":156,"field":151},"general","Genel",{"key":158,"name":159,"field":151},"go","Go",{"key":161,"name":162,"field":151},"python","Python",{"key":164,"name":165,"field":151},"java","Java",{"key":167,"name":168,"field":151},"csharp","C#\u002F.NET",{"key":170,"name":171,"field":151},"nodejs","Node.js",{"key":173,"name":174,"field":151},"php","PHP",{"key":176,"name_tr":177,"name_en":177,"sort":123,"specializations":178},"frontend","Frontend",[179,180,183,186,189,192],{"key":155,"name":156,"field":176},{"key":181,"name":182,"field":176},"javascript","JavaScript",{"key":184,"name":185,"field":176},"typescript","TypeScript",{"key":187,"name":188,"field":176},"react","React",{"key":190,"name":191,"field":176},"vue","Vue",{"key":193,"name":194,"field":176},"angular","Angular",{"key":196,"name_tr":197,"name_en":197,"sort":198,"specializations":199},"fullstack","Fullstack",3,[200,201,202,203,204,205,206,207,208,209,210,211],{"key":155,"name":156,"field":196},{"key":158,"name":159,"field":151},{"key":161,"name":162,"field":151},{"key":164,"name":165,"field":151},{"key":167,"name":168,"field":151},{"key":170,"name":171,"field":151},{"key":173,"name":174,"field":151},{"key":181,"name":182,"field":176},{"key":184,"name":185,"field":176},{"key":187,"name":188,"field":176},{"key":190,"name":191,"field":176},{"key":193,"name":194,"field":176},{"key":213,"name_tr":214,"name_en":214,"sort":215,"specializations":216},"devops-cloud","DevOps \u002F Cloud",4,[217,218,221,224,227,230,233],{"key":155,"name":156,"field":213},{"key":219,"name":220,"field":213},"aws","AWS",{"key":222,"name":223,"field":213},"gcp","GCP",{"key":225,"name":226,"field":213},"azure","Azure",{"key":228,"name":229,"field":213},"kubernetes","Kubernetes",{"key":231,"name":232,"field":213},"terraform","Terraform",{"key":234,"name":235,"field":213},"linux","Linux",{"key":237,"name_tr":238,"name_en":238,"sort":239,"specializations":240},"ai-engineer","AI Engineer",5,[241,242,243,246],{"key":155,"name":156,"field":237},{"key":161,"name":162,"field":237},{"key":244,"name":245,"field":237},"llm-rag","LLM\u002FRAG",{"key":247,"name":248,"field":237},"mlops","MLOps",{"key":250,"name_tr":251,"name_en":252,"sort":253,"specializations":254},"database","Veritabanı","Database",6,[255,256,259,262,265],{"key":155,"name":156,"field":250},{"key":257,"name":258,"field":250},"postgresql","PostgreSQL",{"key":260,"name":261,"field":250},"mysql","MySQL",{"key":263,"name":264,"field":250},"mongodb","MongoDB",{"key":266,"name":267,"field":250},"redis","Redis",{"key":269,"name_tr":270,"name_en":271,"sort":272,"specializations":273},"mobile","Mobil","Mobile",7,[274,275,278,281,284],{"key":155,"name":156,"field":269},{"key":276,"name":277,"field":269},"ios-swift","iOS (Swift)",{"key":279,"name":280,"field":269},"android-kotlin","Android (Kotlin)",{"key":282,"name":283,"field":269},"flutter","Flutter",{"key":285,"name":286,"field":269},"react-native","React Native",{"key":288,"name_tr":289,"name_en":290,"sort":291,"specializations":292},"security","Güvenlik","Security",8,[293,294,297,300,303,306],{"key":155,"name":156,"field":288},{"key":295,"name":296,"field":288},"appsec","AppSec",{"key":298,"name":299,"field":288},"offensive-pentest","Offensive \u002F Pentest",{"key":301,"name":302,"field":288},"cloud-security","Cloud Security",{"key":304,"name":305,"field":288},"devsecops","DevSecOps",{"key":307,"name":308,"field":288},"blue-team-incident","Blue Team \u002F Incident",{"key":5,"name_tr":6,"name_en":310,"sort":311,"specializations":312},"QA \u002F Test Automation",9,[313,314],{"key":155,"name":156,"field":5},{"key":60,"name":61,"field":5},{"key":316,"name_tr":317,"name_en":317,"sort":318,"specializations":319},"data-engineer","Data Engineer",10,[320],{"key":155,"name":156,"field":316},{"key":322,"name_tr":323,"name_en":324,"sort":325,"specializations":326},"game-dev","Oyun Geliştirme","Game Development",11,[327],{"key":155,"name":156,"field":322},{"key":329,"name_tr":330,"name_en":330,"sort":331,"specializations":332},"ml-engineer","ML Engineer",12,[333],{"key":155,"name":156,"field":329},[14,15,16],{"junior":336,"mid":338,"senior":339},{"questions":337,"median_sec":3},20,{"questions":337,"median_sec":3},{"questions":337,"median_sec":3},[10,341],"en",[343,344],"google","github",22200,true]