Skip to content

fix(browser): handle absolute https Wikipedia URLs in throughput benchmark#194

Merged
HeyGarrison merged 1 commit into
masterfrom
fix/throughput-wikipedia-selector
Jul 17, 2026
Merged

fix(browser): handle absolute https Wikipedia URLs in throughput benchmark#194
HeyGarrison merged 1 commit into
masterfrom
fix/throughput-wikipedia-selector

Conversation

@HeyGarrison

Copy link
Copy Markdown
Collaborator

Problem

The 2026-07-17 browser throughput benchmark run showed all 6 providers dropping to ~46% success rate with scores collapsing to ~7 (from ~50-77):

Provider Score Status
browserbase 7.2 0/100 OK
browseruse 7.2 0/100 OK
steel 7.1 0/100 OK
hyperbrowser 7.0 0/100 OK
notte 7.0 0/100 OK
kernel 6.9 0/100 OK

Root cause

The CSS selector #mw-content-text a[href*="/wiki/"]:not([href*=":"])`` was rejecting article body links rendered as **absolute URLs** (https://en.wikipedia.org/wiki/Article`) because https: contains a colon. Wikipedia now renders some body links in this absolute format (as part of the Parsoid Read Views rollout). The :not([href*=":"]) filter was designed to exclude namespace pages (Help:, File:, Category:) but also rejects any URL with https:.

When the click action failed to find a link, goBack navigated to a blank page and the final waitForSelector timed out at 30s, producing the bimodal ~42s / ~4s task times and tanking scores across all providers.

Additionally, the expectedActions = 50 hardcoded value in run.ts meant the "OK" count was always 0 (actual actions per session is 10).

Fixes

  1. Selector fix (throughput-benchmark.ts): Replace CSS :not() filter with JS-based isArticleLink() that checks for namespace colons only after /wiki/, correctly handling relative, protocol-relative, and absolute https:// URL formats
  2. goBack skip (throughput-benchmark.ts): When click fails, skip remaining dependent actions (6-10) instead of timing out for 40s
  3. Stub filtering (browser-throughput-benchmarks.yml): Retry up to 5 times to find articles with body links during URL resolution
  4. expectedActions fix (run.ts): Use ACTIONS_PER_SESSION instead of hardcoded 50

…hmark

The CSS selector :not([href*=':']) rejected article body links rendered
as absolute https:// URLs (e.g. https://en.wikipedia.org/wiki/Foo) because
'https:' contains a colon. Wikipedia now renders some body links in this
format, causing ~54% of iterations to fail across all providers on the
2026-07-17 run.

Three fixes:
- Replace CSS :not() filter with JS-based isArticleLink() that only checks
  for namespace colons after /wiki/, handling relative, protocol-relative,
  and absolute URL formats
- Skip goBack and dependent actions when click fails to avoid 30s timeouts
  on stub articles with no body links
- Add stub-filtering retry logic to workflow URL resolution
- Fix hardcoded expectedActions=50 in run.ts to use ACTIONS_PER_SESSION (10)
@open-cla

open-cla Bot commented Jul 17, 2026

Copy link
Copy Markdown

Contributor License Agreement

All contributors are covered by a CLA.

@github-actions

Copy link
Copy Markdown
Contributor

Storage Benchmark Results

1MB Files

# Provider Score Download Throughput Upload Status
1 Azure Blob Storage 96.3 0.03s 325.6 Mbps 0.11s 10/10
2 Vercel Blob 95.0 0.07s 119.9 Mbps 0.29s 10/10
3 AWS S3 94.7 0.10s 81.9 Mbps 0.22s 10/10
4 Tigris 94.7 0.06s 141.2 Mbps 0.57s 10/10
5 Cloudflare R2 94.4 0.19s 44.8 Mbps 0.31s 10/10

View full run · SVGs available as build artifacts

@github-actions

Copy link
Copy Markdown
Contributor

Snapshot/Fork Benchmark Results

small dataset

# Provider Score Snapshot create Fork (snapshot) Fork (live) First read Status
1 Tigris 99.6 0.28s 0.25s 0.14s 0.09s 1/1
2 Cloudflare R2 97.0 2.21s 1.94s 1.67s 0.12s 1/1
3 Azure-blob 96.8 2.40s 1.68s 2.56s 0.05s 1/1
4 AWS S3 0.0 0.00s 0.00s 0.00s 0.00s 0/1

View full run

@github-actions

Copy link
Copy Markdown
Contributor

Browser Benchmark Results

# Provider Score Create Connect Navigate Release Total Status
1 Kernel 97.3 0.03s 0.11s 0.12s 0.04s 0.32s 10/10
2 Browserbase 94.0 0.23s 0.16s 0.14s 0.12s 0.66s 10/10
3 Browseruse 92.5 0.55s 0.10s 0.06s 0.05s 0.78s 10/10
4 Notte 90.7 0.18s 0.50s 0.19s 0.08s 1.08s 10/10
5 Hyperbrowser 89.3 0.31s 0.56s 0.26s 0.10s 1.28s 10/10
6 Steel 71.1 1.13s 0.79s 0.15s 0.16s 2.78s 10/10

View full run · SVG available as build artifact

@github-actions

Copy link
Copy Markdown
Contributor

Browser Throughput Benchmark Results

# Provider Score APS (med) Task (med) Task (p95) Screenshot Status
1 Kernel 72.3 4.07/s 2.46s 2.77s 224ms 3/3
2 Browseruse 65.5 2.81/s 3.55s 3.95s 299ms 3/3
3 Browserbase 59.6 1.94/s 5.15s 5.38s 499ms 3/3
4 Steel 55.5 1.55/s 6.47s 7.48s 739ms 3/3
5 Notte 50.2 1.11/s 8.98s 9.31s 1177ms 3/3
6 Hyperbrowser 49.1 1.07/s 9.32s 10.34s 1027ms 3/3

View full run · SVG available as build artifact

@github-actions

Copy link
Copy Markdown
Contributor

Sandbox Benchmark Results

Sequential

# Provider Score Median TTI P95 P99 Status
1 isorun 99.7 0.01s 0.05s 0.05s 10/10
2 declaw 99.1 0.05s 0.15s 0.15s 10/10
3 northflank 98.8 0.09s 0.17s 0.17s 10/10
4 archil 98.3 0.15s 0.21s 0.21s 10/10
5 daytona 97.8 0.17s 0.29s 0.29s 10/10
6 blaxel 97.8 0.20s 0.25s 0.25s 10/10
7 createos 96.9 0.26s 0.39s 0.39s 10/10
8 e2b 95.6 0.42s 0.49s 0.49s 10/10
9 upstash 95.5 0.43s 0.48s 0.48s 10/10
10 vercel 94.9 0.35s 0.74s 0.74s 10/10
11 superserve 94.9 0.44s 0.63s 0.63s 10/10
12 modal 94.7 0.47s 0.62s 0.62s 10/10
13 cloud-run 94.5 0.51s 0.60s 0.60s 10/10
14 runloop 93.9 0.52s 0.73s 0.73s 10/10
15 tensorlake 91.0 0.85s 0.97s 0.97s 10/10
16 beam 90.3 0.37s 1.87s 1.87s 10/10
17 cloudflare 80.4 1.55s 2.58s 2.58s 10/10
18 codesandbox 74.4 2.43s 2.75s 2.75s 10/10
19 lightning 57.9 0.20s 0.57s 0.57s 6/10
20 hopx 20.2 6.34s 7.08s 7.08s 6/10

Staggered

# Provider Score Median TTI P95 P99 Status
1 isorun 99.8 0.01s 0.03s 0.03s 10/10
2 northflank 99.0 0.07s 0.14s 0.14s 10/10
3 declaw 98.9 0.08s 0.15s 0.15s 10/10
4 archil 98.4 0.14s 0.19s 0.19s 10/10
5 daytona 98.1 0.12s 0.30s 0.30s 10/10
6 createos 97.4 0.25s 0.28s 0.28s 10/10
7 blaxel 97.4 0.21s 0.34s 0.34s 10/10
8 beam 96.2 0.37s 0.40s 0.40s 10/10
9 superserve 95.9 0.39s 0.44s 0.44s 10/10
10 upstash 95.7 0.38s 0.51s 0.51s 10/10
11 e2b 95.0 0.34s 0.74s 0.74s 10/10
12 cloud-run 94.3 0.51s 0.65s 0.65s 10/10
13 vercel 94.0 0.43s 0.85s 0.85s 10/10
14 runloop 93.9 0.54s 0.71s 0.71s 10/10
15 tensorlake 91.2 0.82s 0.98s 0.98s 10/10
16 lightning 87.9 0.22s 0.24s 0.24s 9/10
17 cloudflare 78.3 1.77s 2.77s 2.77s 10/10
18 modal 76.7 0.53s 5.03s 5.03s 10/10
19 codesandbox 72.1 2.58s 3.09s 3.09s 10/10
20 hopx 0.0 10.81s 12.26s 12.26s 6/10

Burst

# Provider Score Median TTI P95 P99 Status
1 isorun 99.8 0.02s 0.02s 0.02s 10/10
2 declaw 98.8 0.08s 0.17s 0.17s 10/10
3 northflank 98.7 0.12s 0.15s 0.15s 10/10
4 archil 98.3 0.15s 0.19s 0.19s 10/10
5 daytona 98.1 0.14s 0.26s 0.26s 10/10
6 lightning 97.9 0.20s 0.23s 0.23s 10/10
7 blaxel 97.6 0.22s 0.27s 0.27s 10/10
8 createos 96.8 0.29s 0.36s 0.36s 10/10
9 upstash 95.6 0.40s 0.50s 0.50s 10/10
10 e2b 95.5 0.42s 0.50s 0.50s 10/10
11 superserve 95.2 0.38s 0.62s 0.62s 10/10
12 beam 94.3 0.37s 0.88s 0.88s 10/10
13 cloud-run 94.3 0.50s 0.68s 0.68s 10/10
14 vercel 93.8 0.36s 1.01s 1.01s 10/10
15 modal 93.6 0.56s 0.77s 0.77s 10/10
16 runloop 93.5 0.62s 0.69s 0.69s 10/10
17 tensorlake 90.5 0.93s 1.00s 1.00s 10/10
18 codesandbox 68.4 3.03s 3.36s 3.36s 10/10
19 cloudflare 55.4 3.36s 6.11s 6.11s 10/10
20 hopx 0.0 10.96s 12.54s 12.54s 5/10

Sandbox Dax

Provider Metric Status
archil 1/7 phases · total 8.60s · prepare 8.53s · clone 0.00s · install 0.00s · typecheck 0.00s 1/7 phases
beam 0/7 phases · total 0.00s · prepare 0.00s · clone 0.00s · install 0.00s · typecheck 0.00s 0/7 phases
blaxel 0/7 phases · total 0.00s · prepare 0.00s · clone 0.00s · install 0.00s · typecheck 0.00s 0/7 phases
cloud-run 0/7 phases · total 0.00s · prepare 0.00s · clone 0.00s · install 0.00s · typecheck 0.00s 0/7 phases
cloudflare 0/7 phases · total 0.00s · prepare 0.00s · clone 0.00s · install 0.00s · typecheck 0.00s 0/7 phases
codesandbox 1/7 phases · total 13.51s · prepare 13.13s · clone 0.00s · install 0.00s · typecheck 0.00s 1/7 phases
createos 1/7 phases · total 15.99s · prepare 15.81s · clone 0.00s · install 0.00s · typecheck 0.00s 1/7 phases
daytona 1/7 phases · total 16.56s · prepare 16.44s · clone 0.00s · install 0.00s · typecheck 0.00s 1/7 phases
declaw -- phases · total 0.00s · prepare 0.00s · clone 0.00s · install 0.00s · typecheck 0.00s 0/1 OK
e2b 7/7 phases · total 19.12s · prepare 11.88s · clone 3.15s · install 2.07s · typecheck 0.02s 7/7 phases
hopx -- phases · total 0.00s · prepare 0.00s · clone 0.00s · install 0.00s · typecheck 0.00s 0/1 OK
isorun 0/7 phases · total 0.00s · prepare 0.00s · clone 0.00s · install 0.00s · typecheck 0.00s 0/7 phases
modal 7/7 phases · total 55.76s · prepare 7.42s · clone 2.61s · install 19.05s · typecheck 18.72s 7/7 phases
northflank 0/7 phases · total 0.00s · prepare 0.00s · clone 0.00s · install 0.00s · typecheck 0.00s 0/7 phases
runloop 7/7 phases · total 79.96s · prepare 22.98s · clone 2.84s · install 29.18s · typecheck 11.04s 7/7 phases
superserve -- phases · total 0.00s · prepare 0.00s · clone 0.00s · install 0.00s · typecheck 0.00s 0/1 OK
tensorlake 7/7 phases · total 17.94s · prepare 11.79s · clone 1.96s · install 3.03s · typecheck 0.03s 7/7 phases
upstash 1/7 phases · total 6.03s · prepare 5.98s · clone 0.00s · install 0.00s · typecheck 0.00s 1/7 phases
vercel 1/7 phases · total 0.09s · prepare 0.00s · clone 0.00s · install 0.00s · typecheck 0.00s 1/7 phases

View full run · SVGs available as build artifacts

@HeyGarrison
HeyGarrison merged commit bf92baf into master Jul 17, 2026
70 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant