[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:frontend\u002Ftesting":4,"config":234},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":133,"samples":150},"frontend","Frontend","","testing","Testing","en",75,2925,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,94,97,100,103,106,109,112,115,118,121,124,127,130],{"key":19,"name":20,"count":11},"accessibility","Accessibility",{"key":22,"name":23,"count":11},"angular-change-detection","Angular Change Detection",{"key":25,"name":26,"count":11},"angular-components-lifecycle","Angular Components Lifecycle",{"key":28,"name":29,"count":11},"angular-dependency-injection","Angular Dependency Injection",{"key":31,"name":32,"count":11},"angular-directives-pipes","Angular Directives Pipes",{"key":34,"name":35,"count":11},"angular-router-forms","Angular Router Forms",{"key":37,"name":38,"count":11},"angular-testing-performance","Angular Testing Performance",{"key":40,"name":41,"count":11},"css-layout","Css Layout",{"key":43,"name":44,"count":11},"dom-browser-apis","Dom Browser Apis",{"key":46,"name":47,"count":11},"javascript-async-concurrency","Javascript Async Concurrency",{"key":49,"name":50,"count":11},"javascript-language","Javascript Language",{"key":52,"name":53,"count":11},"javascript-memory-performance","Javascript Memory Performance",{"key":55,"name":56,"count":11},"javascript-modules-bundling","Javascript Modules Bundling",{"key":58,"name":59,"count":11},"javascript-prototypes-oop","Javascript Prototypes Oop",{"key":61,"name":62,"count":11},"javascript-runtime-apis","Javascript Runtime Apis",{"key":64,"name":65,"count":11},"javascript-testing-tooling","Javascript Testing Tooling",{"key":67,"name":68,"count":11},"performance","Performance",{"key":70,"name":71,"count":11},"react-components-jsx","React Components Jsx",{"key":73,"name":74,"count":11},"react-context-state","React Context State",{"key":76,"name":77,"count":11},"react-effects-lifecycle","React Effects Lifecycle",{"key":79,"name":80,"count":11},"react-forms-suspense","React Forms Suspense",{"key":82,"name":83,"count":11},"react-hooks-state","React Hooks State",{"key":85,"name":86,"count":11},"react-rendering-performance","React Rendering Performance",{"key":88,"name":89,"count":11},"rendering-reactivity","Rendering Reactivity",{"key":91,"name":92,"count":11},"state-management","State Management",{"key":8,"name":9,"count":11},{"key":95,"name":96,"count":11},"typescript-advanced-types","Typescript Advanced Types",{"key":98,"name":99,"count":11},"typescript-generics","Typescript Generics",{"key":101,"name":102,"count":11},"typescript-modules-declarations","Typescript Modules Declarations",{"key":104,"name":105,"count":11},"typescript-narrowing-control-flow","Typescript Narrowing Control Flow",{"key":107,"name":108,"count":11},"typescript-tooling-config","Typescript Tooling Config",{"key":110,"name":111,"count":11},"typescript-type-fundamentals","Typescript Type Fundamentals",{"key":113,"name":114,"count":11},"vue-components-props","Vue Components Props",{"key":116,"name":117,"count":11},"vue-composition-api","Vue Composition Api",{"key":119,"name":120,"count":11},"vue-directives-templates","Vue Directives Templates",{"key":122,"name":123,"count":11},"vue-performance-testing","Vue Performance Testing",{"key":125,"name":126,"count":11},"vue-reactivity-system","Vue Reactivity System",{"key":128,"name":129,"count":11},"vue-router-state-management","Vue Router State Management",{"key":131,"name":132,"count":11},"web-security","Web Security",[134,138,141,144,147],{"key":135,"name":136,"count":137},"angular","Angular",450,{"key":139,"name":140,"count":137},"javascript","JavaScript",{"key":142,"name":143,"count":137},"react","React",{"key":145,"name":146,"count":137},"typescript","TypeScript",{"key":148,"name":149,"count":137},"vue","Vue",[151,169,182,195,208,221],{"id":152,"topic":9,"difficulty":153,"body":154,"options":155,"correct_key":166,"explanation":168},"019f56bb-baa8-74f2-aa3f-1af865ebc9dc",1,"Frontend tests are commonly split into unit, integration, and end-to-end. What does this split describe?",[156,159,162,165],{"key":157,"text":158},"a","Which team writes them — developers write the unit tests, while the QA and design teams own the end-to-end ones",{"key":160,"text":161},"b","Which programming language each kind of test is required to be written in",{"key":163,"text":164},"c","Whether a test runs inside a real browser or only from the terminal",{"key":166,"text":167},"d","How much of the system a test exercises: one unit, a few parts together, or the whole app via its UI","The three levels describe scope: a unit test checks one small piece (like a single component), an integration test checks a few pieces working together, and an e2e test drives the whole app through its UI. It is not about who writes them (a) — developers commonly write all three levels.",{"id":170,"topic":9,"difficulty":153,"body":171,"options":172,"correct_key":163,"explanation":181},"019f56bb-baa8-7ab2-8a24-e2aed9780f53","What is a component test primarily meant to check?",[173,175,177,179],{"key":157,"text":174},"That the component's source file compiles and passes the project's linter without any warnings at all",{"key":160,"text":176},"That the full multi-page checkout flow works from start to finish",{"key":163,"text":178},"That a single UI component, on its own, renders correctly and reacts to input as expected",{"key":166,"text":180},"That the CSS bundle finishes loading before the JavaScript bundle","A component test mounts one component in isolation and verifies its rendered output and its response to input (props, clicks, typing). Checking a full multi-page flow (b) is the job of an end-to-end test, not a component test.",{"id":183,"topic":9,"difficulty":153,"body":184,"options":185,"correct_key":157,"explanation":194},"019f56bb-baa9-70bd-acc1-1e866bb54cc5","A UI test is structured as arrange–act–assert (AAA). What belongs in the act phase?",[186,188,190,192],{"key":157,"text":187},"Trigger the user interaction under test, such as a click or typing",{"key":160,"text":189},"Render the component and set up its initial props, state, and any fakes",{"key":163,"text":191},"Check that the expected text or element is now visible on screen",{"key":166,"text":193},"Remove the component from the DOM and reset any shared state","Act performs the single behavior under test — the click or keystroke. Rendering and setting up state is the arrange phase (b), and checking the visible result is the assert phase (c).",{"id":196,"topic":9,"difficulty":153,"body":197,"options":198,"correct_key":160,"explanation":207},"019f56bb-baa9-75a9-9eaa-cbf91eba37ae","What is the difference between a happy-path test and an edge-case test?",[199,201,203,205],{"key":157,"text":200},"Happy-path tests are run locally by developers during coding; edge-case tests are run only by the QA team before a release",{"key":160,"text":202},"Happy path uses valid input; an edge case probes unusual or boundary input like empty, zero, or very long values",{"key":163,"text":204},"Happy-path tests cover the UI layer; edge-case tests are limited to backend logic and databases",{"key":166,"text":206},"Happy-path tests need no assertions; edge-case tests are the only ones that assert an outcome","The happy path exercises normal, valid input; edge cases probe boundaries and unusual input where bugs hide — empty strings, zero, negative or very long values. It is not about who runs them (a); both are ordinary developer tests.",{"id":209,"topic":9,"difficulty":153,"body":210,"options":211,"correct_key":166,"explanation":220},"019f56bb-baa9-7a18-a4f7-89a7e1084cc8","Why do teams usually write many component\u002Funit tests but only a handful of end-to-end tests?",[212,214,216,218],{"key":157,"text":213},"Because end-to-end tests cannot run inside a continuous integration pipeline",{"key":160,"text":215},"Because unit tests are the only kind that can find real bugs in UI code",{"key":163,"text":217},"Because once component-level coverage is high enough, the integration between those components no longer needs any testing",{"key":166,"text":219},"Because end-to-end tests are slower and more brittle, so a large number of them is costly to run and maintain","It is about cost and stability: unit\u002Fcomponent tests are fast and pinpoint failures, while e2e tests are slow and brittle, so keeping many of them is expensive. A few e2e tests remain essential — it is not that they cannot run in CI (a).",{"id":222,"topic":9,"difficulty":153,"body":223,"options":224,"correct_key":163,"explanation":233},"019f56bb-baaa-7086-81da-4ce0bb328e18","Which best describes a frontend end-to-end (e2e) test?",[225,227,229,231],{"key":157,"text":226},"It renders one single component in isolation, with every one of its dependencies replaced by fakes and hand-written stubs",{"key":160,"text":228},"It statically analyzes the source for type errors without running the code",{"key":163,"text":230},"It drives the real, running app through the browser the way a user would, across real pages and requests",{"key":166,"text":232},"It counts how many lines of the code base were executed at least once","An e2e test behaves like a real user: it opens the assembled app in a browser and clicks through real pages and network calls. Rendering one component with faked dependencies (a) describes a component\u002Funit test instead.",{"fields":235,"seniorities":410,"interview_shapes":411,"locales":416,"oauth":418,"question_count":421,"coach_enabled":422,"jd_match_enabled":422},[236,261,270,287,311,324,343,362,384,391,397,404],{"key":237,"name_tr":238,"name_en":238,"sort":153,"specializations":239},"backend","Backend",[240,243,246,249,252,255,258],{"key":241,"name":242,"field":237},"general","Genel",{"key":244,"name":245,"field":237},"go","Go",{"key":247,"name":248,"field":237},"python","Python",{"key":250,"name":251,"field":237},"java","Java",{"key":253,"name":254,"field":237},"csharp","C#\u002F.NET",{"key":256,"name":257,"field":237},"nodejs","Node.js",{"key":259,"name":260,"field":237},"php","PHP",{"key":5,"name_tr":6,"name_en":6,"sort":262,"specializations":263},2,[264,265,266,267,268,269],{"key":241,"name":242,"field":5},{"key":139,"name":140,"field":5},{"key":145,"name":146,"field":5},{"key":142,"name":143,"field":5},{"key":148,"name":149,"field":5},{"key":135,"name":136,"field":5},{"key":271,"name_tr":272,"name_en":272,"sort":273,"specializations":274},"fullstack","Fullstack",3,[275,276,277,278,279,280,281,282,283,284,285,286],{"key":241,"name":242,"field":271},{"key":244,"name":245,"field":237},{"key":247,"name":248,"field":237},{"key":250,"name":251,"field":237},{"key":253,"name":254,"field":237},{"key":256,"name":257,"field":237},{"key":259,"name":260,"field":237},{"key":139,"name":140,"field":5},{"key":145,"name":146,"field":5},{"key":142,"name":143,"field":5},{"key":148,"name":149,"field":5},{"key":135,"name":136,"field":5},{"key":288,"name_tr":289,"name_en":289,"sort":290,"specializations":291},"devops-cloud","DevOps \u002F Cloud",4,[292,293,296,299,302,305,308],{"key":241,"name":242,"field":288},{"key":294,"name":295,"field":288},"aws","AWS",{"key":297,"name":298,"field":288},"gcp","GCP",{"key":300,"name":301,"field":288},"azure","Azure",{"key":303,"name":304,"field":288},"kubernetes","Kubernetes",{"key":306,"name":307,"field":288},"terraform","Terraform",{"key":309,"name":310,"field":288},"linux","Linux",{"key":312,"name_tr":313,"name_en":313,"sort":314,"specializations":315},"ai-engineer","AI Engineer",5,[316,317,318,321],{"key":241,"name":242,"field":312},{"key":247,"name":248,"field":312},{"key":319,"name":320,"field":312},"llm-rag","LLM\u002FRAG",{"key":322,"name":323,"field":312},"mlops","MLOps",{"key":325,"name_tr":326,"name_en":327,"sort":328,"specializations":329},"database","Veritabanı","Database",6,[330,331,334,337,340],{"key":241,"name":242,"field":325},{"key":332,"name":333,"field":325},"postgresql","PostgreSQL",{"key":335,"name":336,"field":325},"mysql","MySQL",{"key":338,"name":339,"field":325},"mongodb","MongoDB",{"key":341,"name":342,"field":325},"redis","Redis",{"key":344,"name_tr":345,"name_en":346,"sort":347,"specializations":348},"mobile","Mobil","Mobile",7,[349,350,353,356,359],{"key":241,"name":242,"field":344},{"key":351,"name":352,"field":344},"ios-swift","iOS (Swift)",{"key":354,"name":355,"field":344},"android-kotlin","Android (Kotlin)",{"key":357,"name":358,"field":344},"flutter","Flutter",{"key":360,"name":361,"field":344},"react-native","React Native",{"key":363,"name_tr":364,"name_en":365,"sort":366,"specializations":367},"security","Güvenlik","Security",8,[368,369,372,375,378,381],{"key":241,"name":242,"field":363},{"key":370,"name":371,"field":363},"appsec","AppSec",{"key":373,"name":374,"field":363},"offensive-pentest","Offensive \u002F Pentest",{"key":376,"name":377,"field":363},"cloud-security","Cloud Security",{"key":379,"name":380,"field":363},"devsecops","DevSecOps",{"key":382,"name":383,"field":363},"blue-team-incident","Blue Team \u002F Incident",{"key":385,"name_tr":386,"name_en":387,"sort":388,"specializations":389},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[390],{"key":241,"name":242,"field":385},{"key":392,"name_tr":393,"name_en":393,"sort":394,"specializations":395},"data-engineer","Data Engineer",10,[396],{"key":241,"name":242,"field":392},{"key":398,"name_tr":399,"name_en":400,"sort":401,"specializations":402},"game-dev","Oyun Geliştirme","Game Development",11,[403],{"key":241,"name":242,"field":398},{"key":405,"name_tr":406,"name_en":406,"sort":407,"specializations":408},"ml-engineer","ML Engineer",12,[409],{"key":241,"name":242,"field":405},[14,15,16],{"junior":412,"mid":414,"senior":415},{"questions":413,"median_sec":3},20,{"questions":413,"median_sec":3},{"questions":413,"median_sec":3},[417,10],"tr",[419,420],"google","github",21750,true]