[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en: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 Automation","","ta-selenium-cypress-playwright-tradeoffs","Ta Selenium Cypress Playwright Tradeoffs","en",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,"How does a Selenium WebDriver client library (e.g. the Java or Python bindings) tell the browser to click an element?",[69,72,75,78],{"key":70,"text":71},"a","It injects a JavaScript click() call directly into the page's own script context",{"key":73,"text":74},"b","It writes the command into a shared memory segment that the browser polls",{"key":76,"text":77},"c","It sends an HTTP request to a driver process, which performs the action in the browser",{"key":79,"text":80},"d","It attaches directly to the browser's rendering engine through a compiled native plugin installed alongside the browser","Selenium follows the WebDriver protocol: the client library sends an HTTP request (JSON body) to a driver executable such as chromedriver or geckodriver, and that driver process translates the request into the actual browser action. a describes something closer to how Cypress executes commands in-browser; b and d are not how any of the three tools communicate.",{"id":83,"topic":9,"difficulty":66,"body":84,"options":85,"correct_key":70,"explanation":94},"019faeb4-4b3f-772d-a1dc-d6d7c23148c5","Where does Cypress's test code actually execute while a test is running?",[86,88,90,92],{"key":70,"text":87},"In the same browser and run loop as the app under test",{"key":73,"text":89},"On a remote grid node, separate from any browser",{"key":76,"text":91},"Inside the operating system's accessibility layer, outside the browser",{"key":79,"text":93},"Inside the application's own backend server process, isolated from the browser entirely","Cypress test code runs directly in the browser alongside your application's JavaScript, sharing the same run loop; a Node.js process handles tasks that need OS-level access (like reading files) and proxies network traffic. b, c and d do not describe where Cypress test code executes.",{"id":96,"topic":9,"difficulty":66,"body":97,"options":98,"correct_key":79,"explanation":107},"019faeb4-4b40-7612-8553-852e032312c1","Which protocol does Playwright primarily use to control Chromium-based browsers?",[99,101,103,105],{"key":70,"text":100},"The classic Selenium JSON Wire Protocol",{"key":73,"text":102},"A generic screen-scraping protocol based on pixel comparison",{"key":76,"text":104},"IMAP-style polling over a socket",{"key":79,"text":106},"The Chrome DevTools Protocol (CDP)","Playwright drives Chromium browsers over the Chrome DevTools Protocol (CDP), a WebSocket-based protocol originally built for browser debugging tools. a is Selenium's older protocol lineage, not Playwright's; b and c are not real automation protocols used here.",{"id":109,"topic":9,"difficulty":66,"body":110,"options":111,"correct_key":73,"explanation":120},"019faeb4-4b41-723e-bc7e-497bd980df43","Which of the three tools requires a separate, browser-vendor-specific driver executable (like chromedriver or geckodriver) matched to the installed browser version?",[112,114,116,118],{"key":70,"text":113},"Cypress",{"key":73,"text":115},"Selenium",{"key":76,"text":117},"Playwright, for every browser it supports",{"key":79,"text":119},"None of them need any driver at all","Selenium's WebDriver architecture depends on a driver executable per browser vendor, and that driver's version must generally match the installed browser version. Cypress bundles its own binary without a separate vendor driver, and Playwright manages its own browser binaries rather than requiring you to install and version-match external driver executables.",{"id":122,"topic":9,"difficulty":123,"body":124,"options":125,"correct_key":73,"explanation":134},"019faeb4-4b41-7b93-a203-3ea40bfcca36",2,"Why can Selenium be used to automate real Apple Safari on macOS, while Cypress cannot test Safari at all?",[126,128,130,132],{"key":70,"text":127},"Cypress is too slow to keep up with Safari's rendering speed",{"key":73,"text":129},"Selenium can drive Safari through Apple's own safaridriver, whereas Cypress has no Safari-family engine integration",{"key":76,"text":131},"Safari blocks all HTTP-based automation protocols by policy",{"key":79,"text":133},"Cypress requires a Windows-only kernel-level driver component that has never been ported to Safari's macOS engine","Selenium's WebDriver architecture lets any vendor ship a conforming driver, and Apple provides safaridriver for exactly this purpose, so Selenium can automate real Safari on macOS. Cypress has never integrated a Safari or WebKit-based execution path, so it simply cannot run tests against Safari. a, c and d describe reasons that do not match how these tools actually work.",{"id":136,"topic":9,"difficulty":123,"body":137,"options":138,"correct_key":79,"explanation":147},"019faeb4-4b43-7236-9d3c-f884bd1481a9","Historically, why did Cypress have restrictions around interacting with a second, different origin (domain) within the same test?",[139,141,143,145],{"key":70,"text":140},"Cypress refuses to send any network request that is not HTTPS",{"key":73,"text":142},"Cypress test files are limited to exactly one HTTP request per test",{"key":76,"text":144},"Second-origin pages always render in a special headless-only sandbox mode that Cypress's inspector has no visibility into",{"key":79,"text":146},"Cypress code runs inside the browser tied to the app's origin, so crossing origins broke execution","Because Cypress code executes directly inside the browser in the same context as the application, navigating to a genuinely different origin used to break that execution context, which is why Cypress later introduced cy.origin() as a workaround. a, b and c are not real constraints Cypress has ever had.",{"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":310,"name_en":6,"sort":311,"specializations":312},"QA \u002F Test Otomasyonu",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},[341,10],"tr",[343,344],"google","github",22200,true]