BlockerHigh confidence

Checkout can't be completed

Selecting Place order did nothing and the page stayed on checkout. The confirmation page was never reached.

Step 4 of 5, screenshot and video
Example finding Dashboard GitHub check
MajorHigh confidence

No error or timeout state when the API is slow

With the order request delayed, the button spins indefinitely and the user is never told anything went wrong.

Step 5, screenshot and the delayed request
Example finding Dashboard GitHub check
01 / 05

Happy paths

Completes the main flows your PR touches, like a real user would.

Type
AI
Status
[TBD: Live / Beta / Coming soon]
Default
[TBD: On / Off]
Est. cost
[TBD: X credits per run]

What it catches

  • A primary flow that no longer completes
  • Buttons, links and forms that don't respond
  • Navigation that dead-ends
  • Flows that complete but show the wrong result

Example finding

Every step of the session as a thumbnail, with the failing step circled.

Hydrofoil · Session timeline
  1. 1. Open home
  2. 2. Add to cart
  3. 3. Open checkout
  4. 4. Place order
  5. 5. Confirmation
0:14 / 0:18

Step 4 · Select Place order.The button did not respond and the page stayed on checkout.

  1. 1
    Step thumbnailsA screenshot for each step the agent took.
  2. 2
    Failing stepCircled, with the step index.
  3. 3
    Timeline and videoReplay the full session up to the failure.

How it works

From the diff and criteria, Hydrofoil picks the flows the PR affects. A browser agent walks them step by step, reading the page and acting as a user would.

  1. 01

    Pick the flows

    From the diff and criteria, choose what the PR affects.

  2. 02

    Walk each flow

    The browser agent acts as a user would.

  3. 03

    Read the page

    Check each step did what it should.

  4. 04

    Report failures

    Findings point to the failing step.

Output

Findings appear in the Hydrofoil dashboard and in your GitHub check, with a severity (blocker, major, minor or nit) and a confidence level. Low-confidence findings are marked Needs reviewand don't fail the check.

Severity
BlockerMajorMinorNit
Confidence
HighMediumLow · Needs reviewDoesn't fail the check
Where it appears
Hydrofoil dashboard GitHub check

Evidence

What each finding includes.

  • Step index, screenshot at the failing step, and the full session timeline and video.

Known limits

  • Only covers flows reachable in the preview with the personas you've provided.
  • Won't perform forbidden actions such as real payments or real emails.
  • Agent runs can vary between runs. Each run has a step and time budget.

Configuration

Turn this review on or off for each repository in repository settings.[TBD: add any check-specific options.]

02 / 05

Unhappy paths

Tries the things users do wrong, and the things networks do wrong.

Type
AI + Deterministic
Status
[TBD: Live / Beta / Coming soon]
Default
[TBD: On / Off]
Est. cost
[TBD: X credits per run]

What it catches

  • Missing validation for empty, invalid, very long and boundary inputs
  • Unicode, emoji and right-to-left text that breaks layouts or logic
  • Double submits and duplicate actions
  • State lost on back or refresh mid-flow
  • Deep links that skip login
  • Expired sessions
  • Missing loading, error and empty states under slow or failing requests

Example finding

A form stuck on a spinner because the API was slowed down, next to the finding it produced.

Hydrofoil · Slow API, forced
MajorHigh confidence

No error or timeout state when the API is slow

With the order request delayed, the button spins indefinitely and the user is never told anything went wrong.

Step 5, screenshot and the delayed request
Example finding Dashboard GitHub check
  1. 1
    Spinner foreverWhat the user sees when the request never finishes.
  2. 2
    Delayed requestThe request Hydrofoil slowed or failed.
  3. 3
    FindingRaised because the page never recovers.

How it works

The agent tries the inputs and actions above. For failures and delays it uses Playwright network interception to force API errors and slow responses, then checks what the user sees.

  1. 01

    Try bad input

    Empty, invalid, long, boundary and Unicode values.

  2. 02

    Repeat and interrupt

    Double submits, back, refresh and expired sessions.

  3. 03

    Break the network

    Playwright forces API errors and slow responses.

  4. 04

    Check what users see

    Look for loading, error and empty states.

Output

Findings appear in the Hydrofoil dashboard and in your GitHub check, with a severity (blocker, major, minor or nit) and a confidence level. Low-confidence findings are marked Needs reviewand don't fail the check.

Severity
BlockerMajorMinorNit
Confidence
HighMediumLow · Needs reviewDoesn't fail the check
Where it appears
Hydrofoil dashboard GitHub check

Evidence

What each finding includes.

  • Step index, screenshot, and the request that was failed or delayed.

Known limits

  • Failures are simulated at the browser, not produced by your real backend.
  • Uses harmless "escape-test" inputs only; no destructive actions.
  • Server-side validation is only visible through what the UI shows.

Configuration

Turn this review on or off for each repository in repository settings.[TBD: add any check-specific options.]

03 / 05

Critical-journey smoke tests

Runs your most important journeys on every PR, to catch breakage outside the diff.

Type
AI
Status
[TBD: Coming soon?]
Default
[TBD: On / Off]
Est. cost
[TBD: X credits per run]

What it catches

  • A PR that quietly breaks sign-up, checkout or another core journey
  • Regressions in areas the diff didn't mention

Example finding

Your journeys with a pass or fail each. Expand one to see the steps.

Hydrofoil · Critical journeys
Sign upPassed
Check out with a saved cardFailed at step 3
  1. 1. Open the cart
  2. 2. Choose the saved card
  3. 3. Select Pay now

The payment button stayed disabled after the card was chosen.

Log inPassed
  1. 1
    Plain-English namesJourneys are named and written the way you'd say them.
  2. 2
    Pass or failOne result per journey, on every PR.
  3. 3
    StepsExpand a failed journey to see where it stopped.

How it works

You describe journeys per repository in plain English ("Sign up", "Check out with a saved card"). Hydrofoil runs them on every PR alongside the PR-specific review.

  1. 01

    Describe journeys

    In plain English, per repository.

  2. 02

    Run on every PR

    Alongside the PR-specific review.

  3. 03

    Report each result

    Pass or fail per journey.

Output

Findings appear in the Hydrofoil dashboard and in your GitHub check, with a severity (blocker, major, minor or nit) and a confidence level. Low-confidence findings are marked Needs reviewand don't fail the check.

Severity
BlockerMajorMinorNit
Confidence
HighMediumLow · Needs reviewDoesn't fail the check
Where it appears
Hydrofoil dashboard GitHub check

Evidence

What each finding includes.

  • Same as Happy paths: step index, screenshot and session replay.

Known limits

  • Only journeys you define are run.
  • This is a quick safety net, not a full regression suite.
  • [TBD: maximum journeys per repo]

Configuration

Turn this review on or off for each repository in repository settings.Define journeys in repository settings. Journeys are written in plain English, not code.

04 / 05

Console & network health

Watches the browser console and network for errors while every flow runs.

Type
Deterministic
Status
[TBD: Live / Beta / Coming soon]
Default
[TBD: On / Off]
Est. cost
[TBD: X credits per run]

What it catches

  • JavaScript errors and unhandled promise rejections
  • Hydration warnings
  • 4xx and 5xx responses and failed assets
  • CORS errors, mixed content and CSP violations

Example finding

The page at the moment an error was logged, beside the console entry itself.

Hydrofoil · Console and network
ConsoleStep 3 · /cart
  • info[vite] connected.
  • warnWarning: Each child in a list should have a unique key.
  • errorUncaught TypeError: Cannot read properties of undefined (reading 'total')
  • errorGET /api/cart 500 (Internal Server Error)
  1. 1
    Page at that momentA screenshot taken when the error occurred.
  2. 2
    The flagged entryThe console message that matters, highlighted.

How it works

The browser records console output and network activity throughout the run. Hydrofoil flags the entries that matter and the AI helps rank them.

  1. 01

    Record

    Console output and network activity throughout the run.

  2. 02

    Flag

    Keep the entries that matter.

  3. 03

    Rank

    AI helps order them by importance.

Output

Findings appear in the Hydrofoil dashboard and in your GitHub check, with a severity (blocker, major, minor or nit) and a confidence level. Low-confidence findings are marked Needs reviewand don't fail the check.

Severity
BlockerMajorMinorNit
Confidence
HighMediumLow · Needs reviewDoesn't fail the check
Where it appears
Hydrofoil dashboard GitHub check

Evidence

What each finding includes.

  • The console message or network request, the page URL and the step where it occurred.

Known limits

  • Only sees pages and states the run actually visited.
  • Third-party noise may appear. [TBD: ignore-list option]

Configuration

Turn this review on or off for each repository in repository settings.[TBD: add any check-specific options.]

Related reviews

See it on your next pull request

Hydrofoil opens each preview in a real browser and posts what it finds to GitHub.