From 723f156d12b5dc9e0f22378bc62944606197aa2d Mon Sep 17 00:00:00 2001 From: Martin Sonnberger Date: Tue, 8 Sep 2026 15:13:14 +0200 Subject: [PATCH] feat(loader): Make JS v11 loader available in backend --- src/sentry/loader/browsersdkversion.py | 4 ++-- src/sentry/projectoptions/defaults.py | 4 ++-- tests/sentry/loader/test_browsersdkversion.py | 7 ++++++- tests/sentry/projectoptions/test_basic.py | 14 +++++++++++++- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/sentry/loader/browsersdkversion.py b/src/sentry/loader/browsersdkversion.py index ffb758deea7e..52facfb57f40 100644 --- a/src/sentry/loader/browsersdkversion.py +++ b/src/sentry/loader/browsersdkversion.py @@ -37,7 +37,7 @@ def get_highest_browser_sdk_version(versions): def get_all_browser_sdk_version_versions(): - return ["latest", "10.x", "9.x", "8.x", "7.x", "6.x", "5.x", "4.x"] + return ["latest", "11.x", "10.x", "9.x", "8.x", "7.x", "6.x", "5.x", "4.x"] def get_all_browser_sdk_version_choices(): @@ -72,7 +72,7 @@ def match_selected_version_to_browser_sdk_version(selected_version): return get_highest_browser_sdk_version([x for x in versions if Version(x) < Version("8")]) return get_highest_browser_sdk_version( # Filter for all versions that match the selected versions major - [x for x in versions if x.startswith(selected_version[0])] + [x for x in versions if x.split(".")[0] == selected_version.split(".")[0]] ) diff --git a/src/sentry/projectoptions/defaults.py b/src/sentry/projectoptions/defaults.py index d3cf03b83861..021396c6f44e 100644 --- a/src/sentry/projectoptions/defaults.py +++ b/src/sentry/projectoptions/defaults.py @@ -182,8 +182,8 @@ register( key="sentry:loader_available_sdk_versions", epoch_defaults={ - 1: ["10.x", "9.x", "8.x", "7.x", "6.x", "5.x", "4.x"], - 11: ["10.x", "9.x", "8.x", "7.x"], + 1: ["11.x", "10.x", "9.x", "8.x", "7.x", "6.x", "5.x", "4.x"], + 11: ["11.x", "10.x", "9.x", "8.x", "7.x"], }, ) diff --git a/tests/sentry/loader/test_browsersdkversion.py b/tests/sentry/loader/test_browsersdkversion.py index 463288ff32a5..00b9c60bf9a7 100644 --- a/tests/sentry/loader/test_browsersdkversion.py +++ b/tests/sentry/loader/test_browsersdkversion.py @@ -20,6 +20,9 @@ "8.0.1-beta2", "8.1.1", "10.2.3", + "11.0.0", + "11.1.0", + "11.2.0-beta.0", ] @@ -27,6 +30,7 @@ class BrowserSdkVersionTestCase(TestCase): def test_get_all_browser_sdk_version_versions(self) -> None: assert "latest" in get_all_browser_sdk_version_versions() assert "4.x" in get_all_browser_sdk_version_versions() + assert "11.x" in get_all_browser_sdk_version_versions() @mock.patch( "sentry.loader.browsersdkversion.load_version_from_file", return_value=MOCK_VERSIONS @@ -34,7 +38,7 @@ def test_get_all_browser_sdk_version_versions(self) -> None: def test_get_highest_browser_sdk_version_from_versions( self, load_version_from_file: mock.MagicMock ) -> None: - assert str(get_highest_browser_sdk_version(load_version_from_file())) == "10.2.3" + assert str(get_highest_browser_sdk_version(load_version_from_file())) == "11.1.0" @mock.patch( "sentry.loader.browsersdkversion.load_version_from_file", return_value=MOCK_VERSIONS @@ -43,6 +47,7 @@ def test_get_highest_selected_version(self, load_version_from_file: mock.MagicMo assert str(match_selected_version_to_browser_sdk_version("4.x")) == "4.6.4" assert str(match_selected_version_to_browser_sdk_version("5.x")) == "5.10.1" assert str(match_selected_version_to_browser_sdk_version("10.x")) == "10.2.3" + assert str(match_selected_version_to_browser_sdk_version("11.x")) == "11.1.0" assert ( str(match_selected_version_to_browser_sdk_version("latest")) == "5.10.1" ) # Should not select version 8, since v8 is the first version that doesn't support latest diff --git a/tests/sentry/projectoptions/test_basic.py b/tests/sentry/projectoptions/test_basic.py index fd171d8a5ed2..b5c79870b6a7 100644 --- a/tests/sentry/projectoptions/test_basic.py +++ b/tests/sentry/projectoptions/test_basic.py @@ -1,7 +1,7 @@ from unittest import mock from sentry.models.options.project_option import ProjectOption -from sentry.projectoptions import default_manager, defaults +from sentry.projectoptions import default_manager, defaults, get_well_known_default from sentry.projectoptions.manager import WellKnownProjectOption from sentry.testutils.pytest.fixtures import django_db_all @@ -49,6 +49,18 @@ def test_epoch_defaults() -> None: assert option.get_default(epoch=100) == "latest-value" +def test_loader_version_defaults() -> None: + assert get_well_known_default("sentry:default_loader_version", epoch=14) == "9.x" + assert ( + get_well_known_default("sentry:default_loader_version", epoch=defaults.LATEST_EPOCH) + == "10.x" + ) + assert "11.x" in get_well_known_default("sentry:loader_available_sdk_versions", epoch=1) + assert "11.x" in get_well_known_default( + "sentry:loader_available_sdk_versions", epoch=defaults.LATEST_EPOCH + ) + + @django_db_all def test_isset_simple(default_project) -> None: default_manager.register("best_dogs", default="all dogs")