Özgür Çetintaş QA · SDET · iOS indie

Portfolio · Rotterdam, NL · rev 2026.09

Tests that start from risk. Games that start from logic.

I am Özgür, a test automation and quality engineer in Rotterdam. I build test systems that choose the right layer for each risk, tooling where AI drafts and humans approve, and on the side I ship deduction games for iPhone.

Playwright · TypeScript · Pact · Testcontainers · k6 · Anthropic SDK · React Native · Maestro

  1. Modern Quality Engineering Lab

    A production-style showcase of choosing the right test layer for each risk around a small TypeScript service: table-driven unit tests, in-process API tests, Pact contracts, a real PostgreSQL through Testcontainers, Playwright with axe-core, k6 budgets, Promptfoo evaluations and OpenTelemetry traces, wired into four parallel CI jobs with architecture decision records.

    4 parallel CI jobs · 9 quality layers · 42 automated tests · 5 ADRs

    TypeScript · Vitest · Pact · Testcontainers · Playwright · k6 · GitHub Actions

    open source
  2. TestPlan Studio

    Describe an application and get a risk-based test plan from Claude, with every scenario placed at the layer that can prove it. Turn the browser scenarios into a Playwright spec, pass it through a deterministic guardrail lint that blocks sleeps and brittle selectors, and run it on GitHub Actions against allowlisted targets. A static site with no backend; your API key stays in your browser.

    90 unit and component tests · 12 E2E with network-level API mocks · axe clean · 5 ADRs

    React · Anthropic SDK · structured outputs · Playwright · GitHub Actions

    live
  3. CipherBreaker

    A pure deduction game for iPhone: four digits, ten guesses, zero luck. Seven modes built on one mechanic, from colour-coded feedback to a chess-clock blitz, plus a daily puzzle with a streak worth keeping. The website runs the app's own evaluator, so today's round is playable in the browser.

    7 modes on one mechanic · daily puzzle with streaks · playable round on the web

    React Native · TypeScript · Jest · Maestro · iOS 15.1+ · free

    on the App Store
  4. Outguess

    Word battles. Same word, two boards, and every guess leaks information to both players; fewer guesses wins. A daily duel against the same rival as everyone else, a ranked ladder, and challenges you send to friends.

    daily duel · ranked ladder · friend challenges · released September 2026

    React Native · TypeScript · Game Center · multiplayer

    on the App Store

2.1 Risk before features

Every plan starts with what would hurt if it broke, scored for likelihood and impact. Features earn tests because a risk points at them, not because they exist.

2.2 The lowest layer that proves it

Pure logic in unit tests, HTTP semantics in API tests, contracts between services, real infrastructure only where its semantics matter, and the browser for critical journeys. Small end-to-end suites stay green.

2.3 Agents propose, humans approve

Models are good at drafting plans and specs and poor at deciding what a test should mean. A deterministic lint and a reviewer sit between every proposal and CI.

Email
ozgur.cetintas@yahoo.com
LinkedIn
linkedin.com/in/ozgurcetintas
GitHub
github.com/cozgur
Studio
studio.ozgurcetintas.dev
Games
cipherbreaker.app · outguessapp.com