Stefan Florescu

QA Automation & Game QA Engineer

8+ years in QA, 4.5 of them on FIFA Mobile at Electronic Arts. Today I combine hands-on QA with AI-driven test automation, and make sure every payout and balance is right.

Open to roles · Full-time · Remote or hybrid in BucharestRemote / Bucharest

  • 8+ years in QA
  • ex-EA FIFA Mobile
  • ~350 automated tests
  • 4,000+ rounds verified
8+ years in QA

Experience

  1. Dec 2022 – present · Remote

    Iron Sheep

    QA Automation & Game QA Engineer (Quality Analyst)
    Client · ZOOT

    A US social & sweepstakes casino platform (formerly Enigma Lake) and its in-house games.

    • Full-spectrum manual QA (scripted, exploratory, A/B) that grew into AI-driven test automation
    • Playwright suite of ~350 tests, Smoke and Regression runs in TestRail
    • Games verified down to the maths: every round re-calculated from the rules
    • Release checks for batches of up to 66 games
    • Built the QA Companion Chrome extension used by the QA team
    Client · AQUA

    NFT marketplace web app. Manual QA across the full range: scripted and exploratory testing, A/B testing, functional and regression testing.

  2. May 2018 – Nov 2022 · Bucharest

    Electronic Arts

    Quality Analyst
    FIFA Mobile

    4.5 years on one of the world's biggest mobile games, through its live releases: new-feature, regression and sanity testing, with test cases in TestRail, bugs in Jira and builds from Perforce.

Case files · described without confidential details

Selected work

  1. Case 01

    Calling a NO-GO

    NO-GOSpec-based testing · edge cases · release decisions
    Problem
    A new slot game's optional "extra play" cost 1.5× the stake, and the spec called it fine.
    What I did
    Turned the spec into ~90 checks and played the edges of the play limits. At the maximum stake the real cost broke the platform limit, and I re-tested in a fresh session before reporting.
    Result
    A clear NO-GO with evidence, so the launch decision was made knowingly.
  2. Case 02

    Proving games pay what the rules say

    Game maths · statistics · Node.js
    Problem
    The server calculates every win; I wanted a check that did not depend on the game's own code.
    What I did
    Wrote a verifier per game from the rules document (lines, wilds, cascades, bonus rounds, caps), plus statistical sanity checks (chi-square, z-score, Monte Carlo) on hit rates and RTP.
    Result
    4,000+ real rounds across 6 games, 0 maths mismatches.
  3. Case 03

    A QA tool for the whole team

    Chrome extensions · product thinking · Cloudflare Workers
    Problem
    Testers checked balances and banned wording by hand on every game.
    What I did
    Built a Chrome extension (Manifest V3 side panel): a round log, a balance check after each round, a banned-wording scan and a downloadable checklist, shipped with versioned releases.
    Result
    Reached v0.9.3; the QA team used it in their game testing.
  • Case 04

    Automation at platform scale

    ~350 tests; Plinko suite 26% faster, no new flakiness.

    Problem & approach
    Problem
    A growing platform and game catalogue needed regression coverage.
    What I did
    Built a Playwright suite (61 specs, 301 catalogued cases) with Smoke and Regression runs, TestRail reporting, a run dashboard and templates per game type.
  • Case 05

    Release checks for 66 games at once

    A clear Released / No / Blocked call for every game.

    Problem & approach
    Problem
    A provider delivered a big batch, and each game needed a release decision.
    What I did
    Drove a real Android phone and a desktop browser in parallel: one play per currency, banned wording, currency labels, both layouts and max exposure under the limit.
  • Case 06

    Setting the QA process

    Repeatable QA across games; judgement stays human.

    Problem & approach
    Problem
    The QA process lived in people's heads.
    What I did
    Defined how we test (spec to checks, re-test before reporting, clear GO / NO-GO rules) and wrote it down as 10 reusable AI agent playbooks with Claude Code.
Archived and still playable

ZOOT games

ZOOT has closed, but its games live on in a public archive at zoot-portfolio.pages.dev. One of them I built; below it are a few I tested end to end, with manual testing and AI-driven testing.

  1. Built · Sep 2026

    Claw Machine

    BUILTForge (ZOOT's AI game builder) · prompts · reference images
    What it is
    An arcade claw-machine game for the ZOOT platform, credited to me in the archive.
    What I did
    Built it with Forge, ZOOT's AI game builder, by writing the prompts and feeding it reference images and reference games, then shaped it until it was ready to ship.
    Result
    The team turned it into a reusable template: Autumn Claw and Midnight Claw (Oct 2026) are built on it.
    See it

Tested · a few that stood out

  • Cluster cascade slot

    Hellfront

    GO

    Every round re-derived from the rules; hit rate 26.2% against 26.5% predicted.

    What I checked
    Approach
    Turned the game's spec into ~90 checks, wrote an independent verifier for cluster wins, cascades and multipliers, and tested on a real Android phone.
    Outcome
    Released as GO with two minor fixes. A first sample of 101 rounds looked off; 271 rounds showed the game was right.
    See it in the archive ↗
  • Coin slot

    Cauldron Grab

    GO

    1,405 real rounds re-checked, 0 maths mismatches.

    What I checked
    Approach
    Verified line wins, Coin Grabs and every Bonus Round frame by frame against the rules, plus balances, languages and layouts.
    Outcome
    GO after two wording fixes, one of them a gambling term in the Chinese translation.
    See it in the archive ↗
  • Coin slot

    Coinfall Grab

    FIXED SAME DAY

    A phone-landscape bug found, reported and fixed the same day.

    What I checked
    Approach
    Tested on a real phone held sideways and measured the game window against the layout's limits.
    Outcome
    The play controls were cut off below about 270 px of height; the developers shipped a fixed build the same day.
    See it in the archive ↗
  • Line slot

    The Ritual

    NO-GO

    The NO-GO from Case 01: a paid feature broke the play limits.

    What I checked
    Approach
    Played the edges of the play limits in both currencies and re-tested in a fresh session before reporting.
    Outcome
    A clear NO-GO with evidence, so the launch decision was made knowingly.
    See it in the archive ↗
Runnable demo · Comet Coins

How I test a game

Client work is confidential, so I rebuilt the method on a small fictional game. Invented data, real method.

  1. 01

    Rules become checks

    Every claim in the rules document maps to a check.

    PASS
  2. 02

    Independent verifier

    Re-derives every round from the rules, not the game code.

    PASSSee output ↓
  3. 03

    Exact model + data

    All 27,000 outcomes give the exact RTP; 5,000 rounds are tested against it.

    PASSSee output ↓
  4. 04

    Playwright suite

    16 tests on desktop and phone; a planted bug fails exactly one.

    PASS
  5. 05

    QA report

    Verdict first, then evidence, then every check.

    PASSWATCH 1
  6. 06

    Play it

    The game runs in the browser; a seed makes rounds replayable.

    PASS
Step 02 output

The verifier catches a 1-cent overpay

$ npm run verify
5,000 / 5,000 rounds re-derived from RULES.md · 0 mismatches ✓
Step 03 output

5,000 rounds stay inside the predicted band

model 94.781% · exact, 27,000 outcomes
observed 90.28%z −1.70inside band ✓

Payout rate (RTP) over 5,000 played rounds. Inside the band means the game pays as its rules predict.

  • assert 01

    Re-test before reporting

    A finding goes out only after it reproduces in a separate run.

  • assert 02

    Small samples lie

    18% hit rate over 100 rounds was 26.2% over 271 (26.5% expected).

  • assert 03

    Measure, then change

    Speed work starts with a baseline with retries off and ends with three clean runs.

  • assert 04

    Verdict first

    Reports open with the decision and the evidence.

Toolkit

Skills

Game QA
Live-service mobile games, RTP and paytable checks, statistical sanity checks, provider parity, sweepstakes release checks
Testing
Manual, scripted and exploratory testing, A/B testing, test automation, regression and sanity, test case design, spec-based testing, release testing, risk analysis
Tools
Playwright, Postman, TestRail, Jira, Confluence, Perforce, Chrome DevTools / CDP, Android ADB, Git / GitHub
Code
JavaScript, TypeScript, Node.js, HTML/CSS, Chrome Extensions (MV3)
Infra
Cloudflare Workers (extension release site), AWS ECS + Pulumi (helped deploy game servers)
AI
AI-driven test automation, AI agent playbooks (Claude Code), AI-assisted test design, verification and reporting
Open to roles

What I'm looking for

Roles

QA Automation · Game QA · QA Lead

Next focus: AI-assisted QA and test automation.

Setup

Full-time · Remote, or hybrid in Bucharest

EU-based (EET) · I live in Ilfov

Domains

Games & iGaming · Fintech & payments

Anywhere money calculations must be right: payouts, balances, rounding, limits.

Let's talk.

Open to full-time QA roles, remote or hybrid in Bucharest. Email is the fastest way to reach me.

CV: English · Română · PDF