js-on-sx: runner fix, 8-test smoke 3/7 (was 0/8)

Agent committed before monitor-exit. Full tree still TODO.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-23 20:08:46 +00:00
parent 1613f551ef
commit 8984520f05
3 changed files with 31 additions and 69 deletions

View File

@@ -803,6 +803,8 @@ def main(argv: list[str]) -> int:
ap.add_argument("--per-test-timeout", type=float, default=DEFAULT_PER_TEST_TIMEOUT_S)
ap.add_argument("--restart-every", type=int, default=500,
help="restart server every N tests to keep memory bounded")
ap.add_argument("--max-per-category", type=int, default=0,
help="cap runnable tests per category (0 = no cap)")
ap.add_argument("--output-json", type=str,
default=str(REPO / "lib" / "js" / "test262-scoreboard.json"))
ap.add_argument("--output-md", type=str,
@@ -832,6 +834,7 @@ def main(argv: list[str]) -> int:
tests: list[TestCase] = []
results: list[TestResult] = []
per_cat_count: dict[str, int] = defaultdict(int)
for p in all_paths:
t = load_test(p)
if not t:
@@ -840,6 +843,11 @@ def main(argv: list[str]) -> int:
if skip:
results.append(TestResult(rel=t.rel, category=t.category, status="skip", reason=why))
continue
if args.max_per_category > 0 and per_cat_count[t.category] >= args.max_per_category:
results.append(TestResult(rel=t.rel, category=t.category, status="skip",
reason=f"capped at --max-per-category={args.max_per_category}"))
continue
per_cat_count[t.category] += 1
tests.append(t)
print(f"Will run {len(tests)} tests ({len(results)} skipped up front).", file=sys.stderr)

View File

@@ -1,76 +1,44 @@
{
"totals": {
"pass": 56,
"fail": 230,
"skip": 39,
"timeout": 2,
"total": 327,
"runnable": 288,
"pass_rate": 19.4
"pass": 3,
"fail": 4,
"skip": 1,
"timeout": 0,
"total": 8,
"runnable": 7,
"pass_rate": 42.9
},
"categories": [
{
"category": "built-ins/Math",
"total": 327,
"pass": 56,
"fail": 230,
"skip": 39,
"timeout": 2,
"pass_rate": 19.4,
"total": 8,
"pass": 3,
"fail": 4,
"skip": 1,
"timeout": 0,
"pass_rate": 42.9,
"top_failures": [
[
"Test262Error (assertion failed)",
83
],
[
"ReferenceError (undefined symbol)",
62
2
],
[
"TypeError: not a function",
46
],
[
"SyntaxError (parse/unsupported syntax)",
35
],
[
"Unhandled: Unexpected token: op '++'\\",
3
"Test262Error (assertion failed)",
2
]
]
}
],
"top_failure_modes": [
[
"Test262Error (assertion failed)",
83
],
[
"ReferenceError (undefined symbol)",
62
],
[
"TypeError: not a function",
46
],
[
"SyntaxError (parse/unsupported syntax)",
35
],
[
"Unhandled: Unexpected token: op '++'\\",
3
],
[
"Timeout",
2
],
[
"Unhandled: Not callable: {:random <js-math-random()> :floor <js-math-fl",
1
"Test262Error (assertion failed)",
2
]
],
"pinned_commit": "d5e73fc8d2c663554fb72e2380a8c2bc1a318a33",
"elapsed_seconds": 185.3
"elapsed_seconds": 14.2
}

View File

@@ -1,32 +1,18 @@
# test262 scoreboard
Pinned commit: `d5e73fc8d2c663554fb72e2380a8c2bc1a318a33`
Wall time: 185.3s
Wall time: 14.2s
**Total:** 56/288 runnable passed (19.4%). Raw: pass=56 fail=230 skip=39 timeout=2 total=327.
**Total:** 3/7 runnable passed (42.9%). Raw: pass=3 fail=4 skip=1 timeout=0 total=8.
## Top failure modes
- **83x** Test262Error (assertion failed)
- **62x** ReferenceError (undefined symbol)
- **46x** TypeError: not a function
- **35x** SyntaxError (parse/unsupported syntax)
- **3x** Unhandled: Unexpected token: op '++'\
- **2x** Timeout
- **1x** Unhandled: Not callable: {:random <js-math-random()> :floor <js-math-fl
- **2x** ReferenceError (undefined symbol)
- **2x** Test262Error (assertion failed)
## Categories (worst pass-rate first, min 10 runnable)
| Category | Pass | Fail | Skip | Timeout | Total | Pass % |
|---|---:|---:|---:|---:|---:|---:|
| built-ins/Math | 56 | 230 | 39 | 2 | 327 | 19.4% |
## Per-category top failures (min 10 runnable, worst first)
### built-ins/Math (56/288 — 19.4%)
- **83x** Test262Error (assertion failed)
- **62x** ReferenceError (undefined symbol)
- **46x** TypeError: not a function
- **35x** SyntaxError (parse/unsupported syntax)
- **3x** Unhandled: Unexpected token: op '++'\