Skip introSkip to content

Harry Bevan, Lead Quality AI Engineer Portfolio

Lift the guard to start

01Start line· Pole position

Harry Bevan

Lead Quality AI Engineer

Nine years in quality engineering, from regression testing core banking systems to leading quality for AI products. I’d rather show the work than list it, so this site is built the way I build software: specified, automated and tested on every change. Take a lap: first the site’s own test results and AI evals, then how I design tests and automate the admin.

years in quality & test engineering
9+
automated tests run before every deploy
100+
of the start sequence’s criteria traced to tests
100%
  • Playwright
  • AI/LLM validation
  • Test design
  • CI/CD
  • Risk-based testing

02Opening corners

A portfolio that tests itself

A quality engineer’s portfolio should prove the work, not just describe it. This site is specified, automated and tested on every change, and it publishes the evidence.

  • Build & test · This site

    Only a green run can deploy

    100%controls with a test id

    Problem
    Claims about quality are cheap. The proof is a site that can’t ship broken, and shows you why.
    Approach
    A stable data-testid on every control, covered by Playwright end-to-end tests on desktop and mobile Chromium, visual regression screenshots, axe accessibility scans, and CSP and privacy checks. GitHub Actions runs lint, type checks and the full suite on every change.
    Outcome
    Each deploy publishes its own test results, below. Replay that run, run live checks in your own browser, or break the page and watch the checks catch it.
    • Playwright
    • Visual regression
    • axe
    • GitHub Actions

Latest CI run

Playwright · desktop + mobile Chromium

Passed
–
Failed
–
Skipped
–
Run time
–

“Break it” knocks a wheel off the car and plants real bugs in this page. Then run the live checks and watch them get caught.

  1. Press “Replay the CI run” to watch the suite that shipped this build, or “Run live checks” to test this page in your browser now.

Screenshots

Lighthouse, measured on the production build, 4 Nov 2026.

Performance
96
mobile
Accessibility
100
Lighthouse
Best practices
96
Lighthouse
SEO
100
Lighthouse

AI evals · scorecard

The pit wall assistant

A small AI assistant that answers questions about this portfolio, using only the text on this page. It was asked questions it should answer, questions it can’t answer, requests for personal data, prompt injections and off-topic requests. Its answers were recorded once and are scored by code, and every CI run re-scores them, so this scorecard always matches the suite. No model runs when you load this page.

A recorded eval run, scored by the suite.

03The esses

From requirement to test cases

How an AI test-design agent works, with a tester reviewing every step, shown on something you’ve just used: this site’s start sequence. The agent turns a requirement into acceptance criteria, maps the states and risks, picks techniques and drafts prioritised test cases. A coverage matrix then proves every criterion is tested, and the gaps it finds become new tests.

  1. 01 · Requirement

    The user story

    As a visitor, I want to start the car myself, so the intro never plays without me and I stay in control of it.

    Acceptance criteria

    • AC1START only works once the safety guard is lifted, and lowering the guard disarms it.
    • AC2Pressing START runs the sequence once: five red lights, all green, then the lap.
    • AC3“Skip intro” is the first focusable element and goes straight to the content, with focus on the hero.
    • AC4Everything works with a keyboard alone.
    • AC5With reduced motion, the sequence uses fades only and ends in the same place.
    • AC6No sound plays before the visitor’s first click, and muting is remembered.
    • AC7A finished intro is remembered for the session, and “Replay start” runs it again.
  2. 02 · Analysis

    States, risks and techniques

    States

    introarmedstartingtrack

    • intro → armed (lift the guard)
    • armed → intro (lower the guard)
    • armed → starting → track (press START)
    • any stage → track (Skip intro)
    • track → intro (Replay start)

    Risks

    • An accidental or repeated start
    • Keyboard focus lost or trapped
    • Motion that makes visitors unwell
    • Audio playing without consent
    • Content hidden if something fails

    Techniques

    • State transition
    • Negative testing
    • Equivalence partitioning (input methods)
    • Accessibility
    • Cross-device
  3. 03 · Test cases

    14 prioritised test cases

    9 P1 · 5 P2 · each with its technique and the Playwright test that automates it

    See all 14 test cases
    Test cases for the start sequence
    IDTest caseCoversTechniquePriorityAutomated by
    TC-01START is locked until the guard is liftedAC1NegativeP1✓ guard then button reaches the track state
    TC-02Lifting the guard arms START and announces itAC1State transitionP1✓ guard then button reaches the track state
    TC-03Lowering the guard disarms START againAC1State transitionP2✓ the guard can be lowered again before starting
    TC-04START runs five red lights, then green, then the lapAC2State transitionP1✓ with sound on (the default), the sequence plays audio without errors
    TC-05Pressing START again mid-sequence doesn’t restart itAC2NegativeP2✓ pressing START again mid-sequence does not restart it
    TC-06“Skip intro” is first in the tab orderAC3AccessibilityP1✓ initial screen: Skip intro is the first focusable element
    TC-07“Skip intro” lands on the hero, with focusAC3State transitionP1✓ Skip intro jumps straight to the track/hero state
    TC-08Keyboard alone: Tab, Enter and Space complete the startAC3, AC4Equivalence partitioningP1✓ keyboard-only flow works end to end
    TC-09No serious accessibility issues at any stageAC3, AC4AccessibilityP1✓ start screen has no serious or critical violations✓ armed state has no serious or critical violations
    TC-10Reduced motion: fades only, same end state, focus on the heroAC5AccessibilityP1✓ shows the content without the full animation✓ Skip intro moves focus to the hero, not back onto the skip link
    TC-11No audio exists before the first clickAC6NegativeP1✓ no audio is created and no AudioContext exists before any click
    TC-12Muting is remembered after a reloadAC6State transitionP2✓ sound is on by default, and muting is remembered
    TC-13A finished intro is skipped on reload; “Replay start” runs it againAC7State transitionP2✓ completed intro is remembered for the session, and can be replayed
    TC-14The whole start works on a phone-sized screenAC1, AC2, AC3Cross-deviceP2✓ guard then button reaches the track state (mobile Chromium)
  4. 04 · Coverage

    Every criterion covered

    7/7 criteria covered ·14/14 test cases automated

    Which test cases cover each acceptance criterion
    CriterionCovered by
    AC1 START only works once the safety guard is lifted, and lowering the guard disarms it.TC-01, TC-02, TC-03, TC-14
    AC2 Pressing START runs the sequence once: five red lights, all green, then the lap.TC-04, TC-05, TC-14
    AC3 “Skip intro” is the first focusable element and goes straight to the content, with focus on the hero.TC-06, TC-07, TC-08, TC-09, TC-14
    AC4 Everything works with a keyboard alone.TC-08, TC-09
    AC5 With reduced motion, the sequence uses fades only and ends in the same place.TC-10
    AC6 No sound plays before the visitor’s first click, and muting is remembered.TC-11, TC-12
    AC7 A finished intro is remembered for the session, and “Replay start” runs it again.TC-13

    The matrix exposed one gap: nothing tested a second press of START mid-sequence. TC-05 was added, along with its Playwright test, which now runs on every deploy.

Demo: drafted by an AI agent from the requirement, then reviewed and edited by me, the way I’d run it on a real feature. The automated tests are this site’s own; their latest results are in the Telemetry panel above.

04Back straight

Admin that files itself

A Power Automate flow, built with AI, that moves tasks from one system onto the board I actually work from, without copying anything by hand.

  • Automation · Power Automate + AI

    From inbox to task board, untouched

    Problem
    Tasks raised in one system arrived as emails in my inbox, and I copied each one by hand onto the task board I built to plan my work. Slow, easy to miss, and the details drifted.
    Approach
    I described the flow in plain English and used AI to draft it in Power Automate, then reviewed and hardened it like any other code: one step at a time, tested with sample emails for every case I could think of.
    Outcome
    Every task lands on one board with its details and a link back to where it came from, and the inbox only holds what still needs me.

    How it runs

    1. TriggerA task notification email arrives in my inbox.
    2. FilterOnly emails from the source system go further, matched by sender and subject.
    3. ExtractThe title, due date, priority and a link to the original task are pulled out.
    4. CheckIf a card with that link is already on the board, the flow stops: no duplicates.
    5. CreateA new card goes onto my task board with the details filled in.
    6. TidyThe email is filed away.
    • Power Automate
    • AI-assisted build
    • Workflow automation
    • Testing

05Chequered flag

Let’s talk quality

Lap complete. Talk to me about quality engineering, AI validation or test automation.

Chequered flag!

Lap time --:--.---

Lap complete

The lap from above

Every marker is a section of the portfolio, with the split time you reached it in. Pick one to go back to it.

Map of a stylised racing circuit. The car shows how far through the portfolio you’ve scrolled; the numbered markers link to each section. START / FINISHPIT LANETurn 1Turn 2Turn 3Turn 4Turn 5Turn 6Turn 7Turn 8Turn 9Turn 10Turn 11Turn 12020304