games:
  - type: classify
    title: "Test Layer Classifier"
    categories:
      - name: "Unit Test"
        color: "#58a6ff"
      - name: "Integration Test"
        color: "#3fb950"
      - name: "E2E Test"
        color: "#d29922"
    items:
      - text: "Tests a single function in isolation with dependencies mocked. Fast, many tests."
        category: "Unit Test"
      - text: "Spins up a real database, hits real endpoints, verifies service + DB together."
        category: "Integration Test"
      - text: "Launches the full app in a browser, simulates user clicks, checks rendered UI."
        category: "E2E Test"
      - text: "Tests that UserRepository.save() correctly persists to the DB with a test DB."
        category: "Integration Test"
      - text: "Tests formatPrice(99.99) returns '$99.99' with no external deps."
        category: "Unit Test"
      - text: "Uses Playwright to log in, add item to cart, and complete checkout flow."
        category: "E2E Test"
      - text: "Mocks PaymentService; tests OrderService.applyDiscount() with fake payment client."
        category: "Unit Test"
      - text: "Starts API server + DB, sends HTTP request, asserts response and DB state."
        category: "Integration Test"
      - text: "Tests a React component with React Testing Library; mocks child components."
        category: "Unit Test"
      - text: "Runs in a real browser, tests full signup → email verify → first login flow."
        category: "E2E Test"

  - type: speed-round
    title: "Test Double Sprint"
    rounds:
      - question: "You need to verify that sendEmail() was called with the user's address. Which double?"
        options:
          - "Stub"
          - "Mock"
          - "Fake"
          - "Dummy"
        answer: 1
        timeLimit: 16
      - question: "You need a simple object to satisfy a parameter but never use it. Which?"
        options:
          - "Mock"
          - "Stub"
          - "Spy"
          - "Dummy"
        answer: 3
        timeLimit: 16
      - question: "You need to return a fixed response without hitting the real API. Which?"
        options:
          - "Mock"
          - "Stub"
          - "Spy"
          - "Dummy"
        answer: 1
        timeLimit: 16
      - question: "You want to record calls to a method for later assertion. Which?"
        options:
          - "Stub"
          - "Spy"
          - "Fake"
          - "Dummy"
        answer: 1
        timeLimit: 16
      - question: "You need a working in-memory implementation instead of real DB. Which?"
        options:
          - "Mock"
          - "Stub"
          - "Fake"
          - "Dummy"
        answer: 2
        timeLimit: 16
      - question: "You need to assert that a method was called exactly once. Which double?"
        options:
          - "Stub"
          - "Mock"
          - "Fake"
          - "Dummy"
        answer: 1
        timeLimit: 16
      - question: "You need to replace a slow service with a simple return value. Which?"
        options:
          - "Mock"
          - "Stub"
          - "Spy"
          - "Dummy"
        answer: 1
        timeLimit: 15
      - question: "You wrap a real object to record its calls. Which?"
        options:
          - "Stub"
          - "Mock"
          - "Spy"
          - "Dummy"
        answer: 2
        timeLimit: 16
