VaadinBench · petclinic-vets-simple

Angular and Vaadin: complete Codex and Claude results

Vaadin vanilla scored higher in both harnesses: 80% versus Angular’s 25% with Codex, and 85% versus 60% with Claude Code. The effect of MCP and skills differs between harnesses.

160/160 trials completed8 model / effort combinations5 repetitions per configuration2026-10-21 07:36 UTC

Pass rates, with harnesses kept separate

Codex

Angular · vanilla
25%5/20
Vaadin · vanilla
80%16/20
Vaadin · MCP only
65%13/20
Vaadin · skills + MCP
95%19/20

Claude Code

Angular · vanilla
60%12/20
Vaadin · vanilla
85%17/20
Vaadin · MCP only
90%18/20
Vaadin · skills + MCP
80%16/20

Each bar contains four model/effort combinations × five trials. Angular was run with vanilla only. Compare vanilla rows for the technology comparison; MCP-only and skills + MCP measure additional configurations. Codex and Claude use different models and agent harnesses, so their results are not pooled.

Results, running time and cost — all completed trials

Codex

Technology / configurationPassedPass rateAvg. agentAvg. full trialAvg. tokensAvg. costTotal cost
Angular · vanilla5/2025%3m 10s5m 14s870.4K$0.626$12.516
Vaadin · vanilla16/2080%2m 39s4m 29s816.3K$0.618$12.366
Vaadin · MCP only13/2065%2m 49s4m 58s820.5K$0.479$9.577
Vaadin · skills + MCP19/2095%2m 31s4m 03s994.2K$0.660$13.210

Claude Code

Technology / configurationPassedPass rateAvg. agentAvg. full trialAvg. tokensAvg. costTotal cost
Angular · vanilla12/2060%6m 49s9m 09s3.14M$0.832$16.632
Vaadin · vanilla17/2085%5m 45s7m 13s3.07M$0.737$14.746
Vaadin · MCP only18/2090%5m 21s7m 20s2.37M$0.601$12.024
Vaadin · skills + MCP16/2080%4m 39s6m 17s2.61M$0.634$12.670

Averages include successes and failed tests. Agent time excludes setup and verification; full-trial time includes both. Queue waits are excluded. Token totals equal input + output; cached input is already included in input. Costs are recorded USD estimates, not subscription invoices.

Comparison for each model and effort

Codex

Model / effortAngular · vanillaVaadin · vanillaVaadin · MCP onlyVaadin · skills + MCP
Luna 6medium2/51m 21s agent · 3m 36s full517.5K tokens · $0.011 / trialInput 512.7K · cached 478.8KOutput 4.8K3/50m 58s agent · 3m 13s full355.0K tokens · $0.009 / trialInput 351.9K · cached 308.8KOutput 3.1K2/51m 18s agent · 3m 16s full355.3K tokens · $0.008 / trialInput 352.5K · cached 321.5KOutput 2.8K4/51m 08s agent · 2m 38s full362.8K tokens · $0.009 / trialInput 359.8K · cached 318.6KOutput 3.0K
Luna 6xhigh2/53m 15s agent · 5m 28s full912.8K tokens · $0.025 / trialInput 893.1K · cached 829.2KOutput 19.7K3/51m 44s agent · 3m 34s full398.1K tokens · $0.013 / trialInput 389.4K · cached 335.7KOutput 8.7K1/52m 01s agent · 4m 52s full503.2K tokens · $0.016 / trialInput 492.5K · cached 424.3KOutput 10.7K5/52m 06s agent · 3m 41s full748.7K tokens · $0.020 / trialInput 737.9K · cached 656.8KOutput 10.8K
Sol 6.1medium1/53m 44s agent · 5m 45s full814.1K tokens · $0.275 / trialInput 805.4K · cached 749.0KOutput 8.7K5/54m 26s agent · 6m 06s full1.20M tokens · $0.306 / trialInput 1.19M · cached 1.13MOutput 6.5K5/54m 24s agent · 6m 17s full1.56M tokens · $0.357 / trialInput 1.56M · cached 1.49MOutput 7.2K5/53m 30s agent · 5m 06s full1.51M tokens · $0.373 / trialInput 1.50M · cached 1.42MOutput 7.3K
Astra 6medium0/5*4m 18s agent · 6m 06s full1.24M tokens · $2.193 / trialInput 1.23M · cached 1.16MOutput 7.4K5/53m 30s agent · 5m 04s full1.31M tokens · $2.145 / trialInput 1.31M · cached 1.24MOutput 5.1K5/53m 33s agent · 5m 27s full861.1K tokens · $1.534 / trialInput 856.1K · cached 808.7KOutput 5.0K5/53m 20s agent · 4m 49s full1.36M tokens · $2.240 / trialInput 1.35M · cached 1.28MOutput 5.0K

Claude Code

Model / effortAngular · vanillaVaadin · vanillaVaadin · MCP onlyVaadin · skills + MCP
Haiku 5.5medium4/54m 55s agent · 7m 16s full2.01M tokens · $0.144 / trialInput 1.96M · cached 1.86MOutput 44.8K5/53m 51s agent · 5m 05s full2.10M tokens · $0.093 / trialInput 2.07M · cached 1.99MOutput 28.3K4/53m 42s agent · 6m 05s full1.68M tokens · $0.070 / trialInput 1.65M · cached 1.57MOutput 26.4K5/52m 54s agent · 4m 09s full1.52M tokens · $0.047 / trialInput 1.49M · cached 1.42MOutput 23.3K
Haiku 5.5xhigh4/510m 40s agent · 13m 48s full5.43M tokens · $0.556 / trialInput 5.32M · cached 5.14MOutput 109.6K4/510m 33s agent · 12m 35s full4.54M tokens · $0.439 / trialInput 4.47M · cached 4.31MOutput 75.0K4/59m 48s agent · 12m 04s full3.64M tokens · $0.378 / trialInput 3.57M · cached 3.41MOutput 67.1K5/58m 11s agent · 9m 26s full4.64M tokens · $0.451 / trialInput 4.57M · cached 4.41MOutput 72.0K
Sonnet 5medium0/57m 41s agent · 9m 27s full4.00M tokens · $1.487 / trialInput 3.97M · cached 3.87MOutput 32.5K3/55m 43s agent · 7m 03s full4.59M tokens · $1.530 / trialInput 4.56M · cached 4.46MOutput 23.7K5/54m 51s agent · 6m 26s full3.23M tokens · $1.180 / trialInput 3.21M · cached 3.12MOutput 20.1K2/54m 54s agent · 7m 32s full3.31M tokens · $1.206 / trialInput 3.29M · cached 3.19MOutput 20.0K
Opus 5.5medium4/54m 00s agent · 6m 03s full1.10M tokens · $1.140 / trialInput 1.08M · cached 1.01MOutput 18.9K5/52m 53s agent · 4m 10s full1.05M tokens · $0.887 / trialInput 1.04M · cached 985.1KOutput 11.3K5/53m 04s agent · 4m 46s full950.7K tokens · $0.777 / trialInput 940.6K · cached 890.9KOutput 10.1K4/52m 36s agent · 4m 01s full973.5K tokens · $0.830 / trialInput 962.8K · cached 908.5KOutput 10.7K

Each cell contains five trials. Time, tokens and costs are means over all five; cached input is a subset of input. The CSV contains full-precision counts, including cache-creation tokens where available.

Token usage and estimated cost

Codex

20 completed trials per rowInputCached inputCache creationOutputTotal costCost / trialCost / pass
Angular · vanilla17.21M16.11M0.0K202.9K$12.516$0.626$2.503
Vaadin · vanilla16.21M15.08M0.0K116.7K$12.366$0.618$0.773
Vaadin · MCP only16.28M15.21M0.0K128.8K$9.577$0.479$0.737
Vaadin · skills + MCP19.75M18.39M0.0K130.5K$13.210$0.660$0.695

Claude Code

20 completed trials per rowInputCached inputCache creationOutputTotal costCost / trialCost / pass
Angular · vanilla61.68M59.43M2.25M1.03M$16.632$0.832$1.386
Vaadin · vanilla60.74M58.74M2.00M691.1K$14.746$0.737$0.867
Vaadin · MCP only46.88M44.98M1.90M618.9K$12.024$0.601$0.668
Vaadin · skills + MCP51.57M49.64M1.93M630.1K$12.670$0.634$0.792

Costs are available for 160 completed trials. Values come from each trial’s agent_result.cost_usd, not a recalculation using current prices. Harbor’s Codex adapter can estimate costs from pricing tables; Claude reports session costs. Both harnesses use subscription authentication. These estimates are not invoices and exclude subscription fees, infrastructure and verification costs. Different pricing/recording paths limit direct cross-harness cost comparisons.

Cost / pass = total recorded cost of completed trials ÷ passes, including spend on failures. It describes this sample, not a forecast. Cached reads and cache-creation tokens are included in input; they must not be added to it again. Output already includes recorded reasoning tokens. Counts sum usage over requests, including repeated context, rather than counting unique prompt text. K = thousand; M = million.

Passing trials only, grouped by task

Only completed trials with reward = 1 contribute to this section’s times, tokens and costs. Each row has one task, one harness, one model, one effort and one configuration. No averages combine tasks or models. Passed is shown out of five scheduled trials.

Angular Petclinic task

angular-petclinic-vets-simple

Codex

Model / effortConfigurationPassedAvg. agentAvg. full trialAvg. tokensAvg. costTotal cost
Luna 6mediumVanilla2/50m 58s3m 24s323.9KInput 319.4Kof which cached 293.3KOutput 4.5K$0.008$0.016
Luna 6xhighVanilla2/53m 31s6m 14s860.7KInput 841.1Kof which cached 772.0KOutput 19.6K$0.024$0.049
Sol 6.1mediumVanilla1/54m 11s7m 08s955.4KInput 945.5Kof which cached 887.3KOutput 9.9K$0.305$0.305
Astra 6mediumVanilla0/5*No passing trials; metrics unavailable

Claude Code

Model / effortConfigurationPassedAvg. agentAvg. full trialAvg. tokensAvg. costTotal cost
Haiku 5.5mediumVanilla4/54m 52s7m 31s2.04MInput 2.00Mof which cached 1.90MOutput 44.4K$0.146$0.584
Haiku 5.5xhighVanilla4/510m 15s13m 47s5.07MInput 4.97Mof which cached 4.79MOutput 103.6K$0.512$2.049
Sonnet 5mediumVanilla0/5No passing trials; metrics unavailable
Opus 5.5mediumVanilla4/54m 02s6m 12s1.13MInput 1.11Mof which cached 1.04MOutput 19.1K$1.155$4.621

Vaadin Petclinic task

flow-petclinic-vets-simple

Codex

Model / effortConfigurationPassedAvg. agentAvg. full trialAvg. tokensAvg. costTotal cost
Luna 6mediumVanilla3/50m 59s2m 38s382.4KInput 379.2Kof which cached 330.2KOutput 3.2K$0.010$0.029
Luna 6mediumMCP only2/51m 39s3m 32s386.2KInput 383.6Kof which cached 349.8KOutput 2.6K$0.008$0.016
Luna 6mediumSkills + MCP4/51m 11s2m 50s370.6KInput 367.6Kof which cached 330.2KOutput 3.0K$0.009$0.034
Luna 6xhighVanilla3/51m 47s3m 25s451.9KInput 442.8Kof which cached 400.0KOutput 9.1K$0.013$0.038
Luna 6xhighMCP only1/51m 40s3m 38s513.6KInput 504.6Kof which cached 457.5KOutput 9.1K$0.014$0.014
Luna 6xhighSkills + MCP5/52m 06s3m 41s748.7KInput 737.9Kof which cached 656.8KOutput 10.8K$0.020$0.100
Sol 6.1mediumVanilla5/54m 26s6m 06s1.20MInput 1.19Mof which cached 1.13MOutput 6.5K$0.306$1.531
Sol 6.1mediumMCP only5/54m 24s6m 17s1.56MInput 1.56Mof which cached 1.49MOutput 7.2K$0.357$1.785
Sol 6.1mediumSkills + MCP5/53m 30s5m 06s1.51MInput 1.50Mof which cached 1.42MOutput 7.3K$0.373$1.867
Astra 6mediumVanilla5/53m 30s5m 04s1.31MInput 1.31Mof which cached 1.24MOutput 5.1K$2.145$10.726
Astra 6mediumMCP only5/53m 33s5m 27s861.1KInput 856.1Kof which cached 808.7KOutput 5.0K$1.534$7.671
Astra 6mediumSkills + MCP5/53m 20s4m 49s1.36MInput 1.35Mof which cached 1.28MOutput 5.0K$2.240$11.198

Claude Code

Model / effortConfigurationPassedAvg. agentAvg. full trialAvg. tokensAvg. costTotal cost
Haiku 5.5mediumVanilla5/53m 51s5m 05s2.10MInput 2.07Mof which cached 1.99MOutput 28.3K$0.093$0.464
Haiku 5.5mediumMCP only4/53m 55s5m 44s1.74MInput 1.72Mof which cached 1.63MOutput 26.9K$0.077$0.308
Haiku 5.5mediumSkills + MCP5/52m 54s4m 09s1.52MInput 1.49Mof which cached 1.42MOutput 23.3K$0.047$0.237
Haiku 5.5xhighVanilla4/511m 07s12m 28s4.60MInput 4.53Mof which cached 4.37MOutput 77.0K$0.457$1.826
Haiku 5.5xhighMCP only4/59m 06s10m 46s3.42MInput 3.36Mof which cached 3.20MOutput 63.2K$0.351$1.404
Haiku 5.5xhighSkills + MCP5/58m 11s9m 26s4.64MInput 4.57Mof which cached 4.41MOutput 72.0K$0.451$2.254
Sonnet 5mediumVanilla3/55m 38s6m 58s4.33MInput 4.30Mof which cached 4.20MOutput 24.6K$1.502$4.505
Sonnet 5mediumMCP only5/54m 51s6m 26s3.23MInput 3.21Mof which cached 3.12MOutput 20.1K$1.180$5.898
Sonnet 5mediumSkills + MCP2/54m 08s5m 22s2.95MInput 2.93Mof which cached 2.85MOutput 17.9K$1.081$2.163
Opus 5.5mediumVanilla5/52m 53s4m 10s1.05MInput 1.04Mof which cached 985.1KOutput 11.3K$0.887$4.435
Opus 5.5mediumMCP only5/53m 04s4m 46s950.7KInput 940.6Kof which cached 890.9KOutput 10.1K$0.777$3.887
Opus 5.5mediumSkills + MCP4/52m 39s3m 58s968.5KInput 957.7Kof which cached 903.0KOutput 10.8K$0.834$3.336

Compare matching model/effort rows across the two tasks. These successful-run subsets are small and unequal. A dash indicates no passing trials, not zero cost or time. Average cost here is the mean cost of a passing run, while the main report’s cost / pass also includes failed-run spending. Failed trials and their spending are excluded here. Data export: passing-trials.csv.

What the completed results show

Comparability and limits

Both tasks use the same one-line instruction and identical UC-002 use-case text and shared business rules in the inspected submissions. Both allow 2 CPUs, 4 GB RAM, a 60-minute agent phase and a 20-minute verifier phase. Fixture code, the 1,000-vet dataset, a 200-result-row loading-step budget and 20-second browser interaction timeouts are matched.

The complete stacks differ: Angular + Quarkus + JPA versus Vaadin Flow + Spring Boot + jOOQ. Angular needs frontend/backend integration and its own paging UI; Vaadin supplies a Grid component and backend data-provider integration. Angular checks browser-visible behavior; Vaadin combines server-side component tests with browser tests and requires a Vaadin Grid. Their scroll-driving mechanisms differ. Those differences are part of this benchmark.

There is one task pair and five repetitions per model/effort/configuration. A single trial changes a model cell by 20 percentage points. Results are descriptive scores under these verifiers, not a general ranking of frontend technologies or application runtime performance. MCP-only trials ran later in a separate suite; order and provider state are not randomized.

One original Claude attempt ended with a revoked OAuth token and was replaced after authentication recovered. The 160 scored results use the valid replacement and exclude the interrupted attempt’s time and cost. This report covers scored trial estimates, not all money or quota consumed while operating the suites. No benchmark tests or submitted solutions were modified for this report.

* Astra, Angular: All five trials sorted vets by database ID (order by v.id) rather than the surname/first-name order enforced by both verifiers. They failed the ordering assertion and timed out waiting for Lazy0001 on the initial page. That timeout alone does not demonstrate a scrolling defect. Builds, navigation, empty-list handling and welcome-page tests passed. The linked UC-002 specification explicitly orders specialties alphabetically but does not explicitly require surname/first-name veterinarian ordering. Therefore these are failures against an additional verifier expectation, not established violations of that written requirement. The recorded scores have been retained.