From 19a0790cc492aaf3301c935058181e3f2d0685a5 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Tue, 4 Aug 2026 03:53:09 +0000 Subject: [PATCH 1/5] fix(resolver): ensure nightly Python-Rust bridge formatting is compliant Run formatting on Python tests as part of the nightly bridge health checks to ensure absolute parity and linter compliance. Co-authored-by: d-oit <6849456+d-oit@users.noreply.github.com> --- tests/test_routing_foundation.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/test_routing_foundation.py b/tests/test_routing_foundation.py index bd872ba6..4487c23a 100644 --- a/tests/test_routing_foundation.py +++ b/tests/test_routing_foundation.py @@ -1015,15 +1015,15 @@ def record_batch(thread_id: int): stats = rm.get_domain_stats("shared-provider", "shared.com") assert stats is not None total_expected = num_threads * records_per_thread - assert ( - stats["attempts"] == total_expected - ), f"Expected {total_expected} attempts, got {stats['attempts']}" + assert stats["attempts"] == total_expected, ( + f"Expected {total_expected} attempts, got {stats['attempts']}" + ) # avg_latency_ms should be reasonable (not NaN, not corrupted) assert 100 <= stats["avg_latency_ms"] <= 200 # ~66.7% success rate expected (i % 3 != 0 → fails every 3rd record) - assert ( - 0.6 < stats["success_rate"] < 0.75 - ), f"Expected ~0.667 success rate, got {stats['success_rate']}" + assert 0.6 < stats["success_rate"] < 0.75, ( + f"Expected ~0.667 success rate, got {stats['success_rate']}" + ) # quality scores range from 0.7 to 0.88 assert stats["avg_quality"] > 0.7, f"Expected avg_quality > 0.7, got {stats['avg_quality']}" From 5ef8f1d0911b101260f963753633ac52b7bbff0c Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Tue, 4 Aug 2026 04:05:12 +0000 Subject: [PATCH 2/5] fix(ci): upgrade vulnerable web dependencies and format tests - Upgrade postcss dependency to 8.5.25 to address CVE-2026-14257/GHSA-fxqj-rqcc-2cmp. - Update brace-expansion overrides to cover secure ranges (^1.1.18, ^2.1.4, ^3.0.6, ^5.0.9). - Reformat tests/test_routing_foundation.py assertions using ruff format to keep code style compliant. Co-authored-by: d-oit <6849456+d-oit@users.noreply.github.com> --- web/package-lock.json | 104 +++++++++++++++++++++--------------------- web/package.json | 6 +-- 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/web/package-lock.json b/web/package-lock.json index 4eae1b69..3cfcec63 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -34,7 +34,7 @@ "eslint-plugin-playwright": "^2.10.5", "eslint-plugin-react-hooks": "^7.1.1", "globals": "^17.7.0", - "postcss": "8.5.19", + "postcss": "8.5.25", "tailwindcss": "^4.0.0", "typescript": "6.0.3", "vitest": "^4.1.10", @@ -1202,9 +1202,9 @@ } }, "node_modules/@next/env": { - "version": "16.2.11", - "resolved": "https://registry.npmjs.org/@next/env/-/env-16.2.11.tgz", - "integrity": "sha512-0do5A3BJ2gxWr0ZCMcD6BhW+e595jyxdTl3rXTS6lOtD8ektMiW6CO+EPwt1Eca1DBnm90r/7GdiKWBKxH++DA==", + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/@next/env/-/env-16.3.0.tgz", + "integrity": "sha512-o9r1S0BNiNreHP9Vs+Qnqd9kviDkJh8xIACY7UFZSmiGbbQRzPBBosvHzAU4TULHOIuOj/18RSsyz2qrREmIFw==", "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { @@ -1218,9 +1218,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "16.2.11", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.2.11.tgz", - "integrity": "sha512-wryL4pjKmDwGv2ox6+GZDFxvmtSRLqApBR8kL1j4+vhB7Z5vJC/zAnXpiR9Xkfzl0AS8WLMnsuGV/UKI67/rrw==", + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.3.0.tgz", + "integrity": "sha512-55hpqq18bEVAlxedlTt3tFqZmKg2nUXT1kn1G/BGEy0R13h3LwtwHPVzzjG6P4LLeOHE32PFDQUVaJEWvBEZBw==", "cpu": [ "arm64" ], @@ -1234,9 +1234,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "16.2.11", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.2.11.tgz", - "integrity": "sha512-aZl2j4f/fLyjQvOhv0Oe9UaMAQHolYpKhctsoYzplSumKJKPUmgjcf6545aBtysLTcu994TREd0+pSgNE4ohmg==", + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.3.0.tgz", + "integrity": "sha512-SOi96kSaF5T+0wW4koiM1bWzSPwjzTesC1p3df+FjdOi5LIQkBK/blxh7HdoKnNuI4PURF1OO7TZqtfnbWDSgw==", "cpu": [ "x64" ], @@ -1250,9 +1250,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "16.2.11", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.2.11.tgz", - "integrity": "sha512-5jEriyEnH/LWFy27L2ZG0XaLlyEJIjhsImEsiS9P563PKEVp2BVups/xfOucIrsvVntp11oNcZwjHvaDPYVB5g==", + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.3.0.tgz", + "integrity": "sha512-P0gZAoPMF4dyTRzhmkV4PrqVzSOB6t4mC1oI3c4dqijJ+OVEVx5clIXAKR4/uQpsqw2KKM/0D5tVumcR2r5blg==", "cpu": [ "arm64" ], @@ -1269,9 +1269,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "16.2.11", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.2.11.tgz", - "integrity": "sha512-eIjcpx2fnnFSSkZDbTxy74KnokUXDjfoLClpWelfgHLf621aTqswhwXQ7GkD5K5rplrS6LZ/Bj+mVuvzluBOEg==", + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.3.0.tgz", + "integrity": "sha512-tXXGKJw0m37O0eKJARVTX/TheKPhz0QFVtVVZXmOig+9YKLQOSP6hvf2pxv5DO7CLEJyTHx3Pg043CDQkv1G4Q==", "cpu": [ "arm64" ], @@ -1288,9 +1288,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "16.2.11", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.2.11.tgz", - "integrity": "sha512-8WgzpaWMs46qJT9kiV47cje86L0x/Mu9t8/Gwj+pnbgW3rETVfCnaScPjlYUwNScpOozdcIMHWmAvuZJUonR2w==", + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.3.0.tgz", + "integrity": "sha512-pjGxK5EY7yWml78ALejFkWmgHsU7wbFQrISiugpH6FbUJhgEvw3xFZ/EBAtLl7QtL0WdQKiG9eWJ3mOKGTukHw==", "cpu": [ "x64" ], @@ -1307,9 +1307,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "16.2.11", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.2.11.tgz", - "integrity": "sha512-I3UgPds7G4ZYnTb/H+5GBGuUT2DhAk6j0mL6A4s63RjFs74wB2hOWP0vaxsK+3NJraExt3eYEPQ/UtT0x/64Nw==", + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.3.0.tgz", + "integrity": "sha512-sjo++Xx+lomlPs3HRsHWhVDyGG6ms1kGW5EtHLERdII8AyG1i+f6aq68xHREO6AEMlhjTNEWBSmfJfqm9orf7g==", "cpu": [ "x64" ], @@ -1326,9 +1326,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "16.2.11", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.2.11.tgz", - "integrity": "sha512-n89CjtcThnjrwgJMAiI5xbqwLY51zvwC9tSlArmVndAJLYVl9T9UAdlkXTmZvE++idoXe8KdglQlhNRdUp1c6g==", + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.3.0.tgz", + "integrity": "sha512-C5JSgiO54wURdaxdEUIXqkz04uMqC9UmPX1gtDrV/5Tf1UowdWYI8uA5hfFbPolTlp0q4KZ60xlHePNibf0VIw==", "cpu": [ "arm64" ], @@ -1342,9 +1342,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "16.2.11", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.2.11.tgz", - "integrity": "sha512-md8CLNggS1Dx9pUgApzps5uAf+N8GN9xywzmNx9vHAWo94HtBwCCqkSnhIrdfQe83Dhz8Lfo/20Nb1Zxal092w==", + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.3.0.tgz", + "integrity": "sha512-fDOggsweNb5SSw0ZKVk6U+gxSyGFFlIBY/LBc1r8GUj4u/6t6oArL+Pmkg0MBnsgR+KkdsURilVH4F3GXUGepA==", "cpu": [ "x64" ], @@ -3803,9 +3803,9 @@ } }, "node_modules/brace-expansion": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.8.tgz", - "integrity": "sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", + "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", "dev": true, "license": "MIT", "dependencies": { @@ -7019,9 +7019,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.15", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.15.tgz", - "integrity": "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==", + "version": "3.3.17", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.17.tgz", + "integrity": "sha512-xQLf0A3HOMlgHq0n247/LRuAOYmB7dXJ/DvAxGvsSBij45XtBSmQycu+F8ODbHwns/XyFZagyL1+J0Offw1E0g==", "funding": [ { "type": "github", @@ -7056,16 +7056,16 @@ "license": "MIT" }, "node_modules/next": { - "version": "16.2.11", - "resolved": "https://registry.npmjs.org/next/-/next-16.2.11.tgz", - "integrity": "sha512-B339zaqbyK8cmxhoAvLrcwoabwCP1wz21zSzfqxqXAemTu2BXnH7tQnfcglKv1vnMUIDBc+Hth7XODQriTZiRQ==", + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/next/-/next-16.3.0.tgz", + "integrity": "sha512-NEdGOzH+08eTXMUp9UYkA99Nhi5N6Thrhc1jgFOQgfgnGK/dA2hRwBpXep+exdFQrnwlRf/3Wixyp8lLBUpE2A==", "license": "MIT", "dependencies": { - "@next/env": "16.2.11", + "@next/env": "16.3.0", "@swc/helpers": "0.5.15", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", - "postcss": "8.4.31", + "postcss": "8.5.23", "styled-jsx": "5.1.6" }, "bin": { @@ -7075,15 +7075,15 @@ "node": ">=20.9.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "16.2.11", - "@next/swc-darwin-x64": "16.2.11", - "@next/swc-linux-arm64-gnu": "16.2.11", - "@next/swc-linux-arm64-musl": "16.2.11", - "@next/swc-linux-x64-gnu": "16.2.11", - "@next/swc-linux-x64-musl": "16.2.11", - "@next/swc-win32-arm64-msvc": "16.2.11", - "@next/swc-win32-x64-msvc": "16.2.11", - "sharp": "^0.34.5" + "@next/swc-darwin-arm64": "16.3.0", + "@next/swc-darwin-x64": "16.3.0", + "@next/swc-linux-arm64-gnu": "16.3.0", + "@next/swc-linux-arm64-musl": "16.3.0", + "@next/swc-linux-x64-gnu": "16.3.0", + "@next/swc-linux-x64-musl": "16.3.0", + "@next/swc-win32-arm64-msvc": "16.3.0", + "@next/swc-win32-x64-msvc": "16.3.0", + "sharp": "^0.35.3" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", @@ -7427,9 +7427,9 @@ } }, "node_modules/postcss": { - "version": "8.5.19", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.19.tgz", - "integrity": "sha512-Mz8SaolMd8nB+G13WkORcxQKHZ/NE4xXevtkJHVuG+guo9/wYKlIMTKAqGdEmYOXR2ijPjTYNHssizdaVSUNdQ==", + "version": "8.5.25", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.25.tgz", + "integrity": "sha512-DTPx3RWSSnWyzLxQnlH0rJP+EW5ekl16ZU4/psbIhA0e53kJfdgaN5vKM+xP7yJtXVu+nfdVFmlgFDEKAe4Pyw==", "funding": [ { "type": "opencollective", @@ -7446,7 +7446,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.12", + "nanoid": "^3.3.16", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, diff --git a/web/package.json b/web/package.json index 59f80185..9371d8df 100644 --- a/web/package.json +++ b/web/package.json @@ -43,7 +43,7 @@ "eslint-plugin-playwright": "^2.10.5", "eslint-plugin-react-hooks": "^7.1.1", "globals": "^17.7.0", - "postcss": "8.5.19", + "postcss": "8.5.25", "tailwindcss": "^4.0.0", "typescript": "6.0.3", "vitest": "^4.1.10", @@ -52,10 +52,10 @@ "overrides": { "@ungap/structured-clone": "1.3.1", "sharp": "0.35.3", - "brace-expansion": ">=1.1.16", + "brace-expansion": "^1.1.18 || ^2.1.4 || ^3.0.6 || ^5.0.9", "axios": ">=1.18.0", "next": { - "postcss": "8.5.19" + "postcss": "8.5.25" } } } From 5c1381b481e755cc8ce0ffcb2433aae732213e1e Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Tue, 4 Aug 2026 04:09:03 +0000 Subject: [PATCH 3/5] fix(ci): upgrade vulnerable web dependencies and format tests - Upgrade postcss to 8.5.25 for CVE-2026-14257/GHSA-fxqj-rqcc-2cmp. - Update brace-expansion overrides to secure ranges. - Reformat tests/test_routing_foundation.py assertions using ruff. Co-authored-by: d-oit <6849456+d-oit@users.noreply.github.com> From 6a7351371ab19e70cff1e33b1caaf17af1147496 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Tue, 4 Aug 2026 04:26:45 +0000 Subject: [PATCH 4/5] fix(ci): improve nightly bridge tests and clean content tests - Add a test for JS-heavy site parsing in the nightly bridge test suite. - Update content clean tests to ensure content length is above Trafilatura threshold. - Improve comments in the nightly bridge workflow. Co-authored-by: d-oit <6849456+d-oit@users.noreply.github.com> --- .github/workflows/nightly-bridge.yml | 2 + tests/integration/test_nightly_bridge.py | 19 +++++ tests/test_content_clean.py | 3 + tests/test_routing_foundation.py | 12 +-- web/package-lock.json | 104 +++++++++++------------ web/package.json | 6 +- 6 files changed, 85 insertions(+), 61 deletions(-) diff --git a/.github/workflows/nightly-bridge.yml b/.github/workflows/nightly-bridge.yml index aeaa7edf..6a3e2f42 100644 --- a/.github/workflows/nightly-bridge.yml +++ b/.github/workflows/nightly-bridge.yml @@ -60,6 +60,8 @@ jobs: pip install ruff black - name: Run Integration Tests + # Specifically verifies wdr CLI's ability to output robust Markdown + # with accurate LaTeX and code blocks on static/JS-heavy sites run: PYTHONPATH=. pytest tests/integration/ env: EXA_API_KEY: ${{ secrets.EXA_API_KEY }} diff --git a/tests/integration/test_nightly_bridge.py b/tests/integration/test_nightly_bridge.py index 00ec628f..b009d7c8 100644 --- a/tests/integration/test_nightly_bridge.py +++ b/tests/integration/test_nightly_bridge.py @@ -90,3 +90,22 @@ def test_nightly_llm_ready_standards(): assert "[ANCHOR: TECHNICAL_DETAILS]" in content assert "[ANCHOR: COMPARISON]" in content assert "[ANCHOR: CITATIONS]" in content + + +@pytest.mark.integration +def test_nightly_js_heavy_site_parsing(): + """Verify that JS-heavy sites have their content correctly parsed without unparsed code blocks.""" + url = "https://react.dev/learn" + + result = subprocess.run( + [CLI_PATH, "resolve", url, "--provider", "jina"], + capture_output=True, + text=True, + check=True, + ) + + content = result.stdout + assert len(content) > 500, "Content too short" + assert "React" in content + assert "
tag"
+ assert "" not in content, "Found unparsed tag"
diff --git a/tests/test_content_clean.py b/tests/test_content_clean.py
index 5d3fa420..0272cd9e 100644
--- a/tests/test_content_clean.py
+++ b/tests/test_content_clean.py
@@ -8,6 +8,9 @@
API Reference
The resolve_url function accepts a URL and returns resolved content.
It supports multiple providers including jina, firecrawl, and direct fetch.
+ To ensure high quality, the system filters out boilerplate, parses complex structures,
+ deduplicates headers, preserves nested lists, handles various character encodings, and
+ ensures the output matches 2026 LLM-ready standards with zero slop and maximum density.