Skip to content

test_webbrowser failing on MacOS #149496

@smontanaro

Description

@smontanaro

Bug report

Bug description:

After updating today, test_webbrowser is failing on my Mac (M1 MBP, up-to-date MacOS 26.4.1). Here's the failure in isolation:

% ./python.exe -m test -v test_webbrowser
== CPython 3.15.0a8+ free-threading build (heads/main:299cf3c4974, May 7 2026, 11:09:40) [Clang 22.1.4 ]
== macOS-26.4.1-arm64-arm-64bit-Mach-O little-endian
== Python build: free_threading release
== cwd: /Users/skip/src/python/cpython/build/test_python_worker_29041æ
== CPU count: 8
== encodings: locale=UTF-8 FS=utf-8
== resources: all test resources are disabled, use -u option to unskip tests

Using random seed: 2341159228
0:00:00 load avg: 2.05 Run 1 test sequentially in a single process
0:00:00 load avg: 2.05 [1/1] test_webbrowser
test_open (test.test_webbrowser.BackgroundBrowserCommandTest.test_open) ... ok
test_reject_dash_prefixes (test.test_webbrowser.BackgroundBrowserCommandTest.test_reject_dash_prefixes) ... ok
test_no_xdg_settings_on_macOS (test.test_webbrowser.BrowserRegistrationTest.test_no_xdg_settings_on_macOS) ... ok
test_register (test.test_webbrowser.BrowserRegistrationTest.test_register) ... ok
test_register_default (test.test_webbrowser.BrowserRegistrationTest.test_register_default) ... ok
test_register_preferred (test.test_webbrowser.BrowserRegistrationTest.test_register_preferred) ... ok
test_open (test.test_webbrowser.ChromeCommandTest.test_open) ... ok
test_open_bad_new_parameter (test.test_webbrowser.ChromeCommandTest.test_open_bad_new_parameter) ... ok
test_open_new (test.test_webbrowser.ChromeCommandTest.test_open_new) ... ok
test_open_new_tab (test.test_webbrowser.ChromeCommandTest.test_open_new_tab) ... ok
test_open_with_autoraise_false (test.test_webbrowser.ChromeCommandTest.test_open_with_autoraise_false) ... ok
test_reject_action_dash_prefixes (test.test_webbrowser.ChromeCommandTest.test_reject_action_dash_prefixes) ... ok
test_reject_dash_prefixes (test.test_webbrowser.ChromeCommandTest.test_reject_dash_prefixes) ... ok
test_main (test.test_webbrowser.CliTest.test_main) ... ok
test_parse_args (test.test_webbrowser.CliTest.test_parse_args) ... ok
test_parse_args_error (test.test_webbrowser.CliTest.test_parse_args_error) ... ok
test_open (test.test_webbrowser.ELinksCommandTest.test_open) ... ok
test_open_new (test.test_webbrowser.ELinksCommandTest.test_open_new) ... ok
test_open_new_tab (test.test_webbrowser.ELinksCommandTest.test_open_new_tab) ... ok
test_open_with_autoraise_false (test.test_webbrowser.ELinksCommandTest.test_open_with_autoraise_false) ... ok
test_reject_dash_prefixes (test.test_webbrowser.ELinksCommandTest.test_reject_dash_prefixes) ... ok
test_open (test.test_webbrowser.EdgeCommandTest.test_open) ... ok
test_open_new (test.test_webbrowser.EdgeCommandTest.test_open_new) ... ok
test_open_new_tab (test.test_webbrowser.EdgeCommandTest.test_open_new_tab) ... ok
test_open_with_autoraise_false (test.test_webbrowser.EdgeCommandTest.test_open_with_autoraise_false) ... ok
test_reject_dash_prefixes (test.test_webbrowser.EdgeCommandTest.test_reject_dash_prefixes) ... ok
test_open (test.test_webbrowser.EpiphanyCommandTest.test_open) ... ok
test_open_new (test.test_webbrowser.EpiphanyCommandTest.test_open_new) ... ok
test_open_new_tab (test.test_webbrowser.EpiphanyCommandTest.test_open_new_tab) ... ok
test_open_with_autoraise_false (test.test_webbrowser.EpiphanyCommandTest.test_open_with_autoraise_false) ... ok
test_reject_dash_prefixes (test.test_webbrowser.EpiphanyCommandTest.test_reject_dash_prefixes) ... ok
test_open (test.test_webbrowser.GenericBrowserCommandTest.test_open) ... ok
test_reject_dash_prefixes (test.test_webbrowser.GenericBrowserCommandTest.test_reject_dash_prefixes) ... ok
test_open (test.test_webbrowser.IOSBrowserTest.test_open) ... skipped 'Test only applicable to iOS'
test_open_new (test.test_webbrowser.IOSBrowserTest.test_open_new) ... skipped 'Test only applicable to iOS'
test_open_new_tab (test.test_webbrowser.IOSBrowserTest.test_open_new_tab) ... skipped 'Test only applicable to iOS'
test_open_with_autoraise_false (test.test_webbrowser.IOSBrowserTest.test_open_with_autoraise_false) ... skipped 'Test only applicable to iOS'
test_environment (test.test_webbrowser.ImportTest.test_environment) ... ok
test_environment_preferred (test.test_webbrowser.ImportTest.test_environment_preferred) ... ok
test_get (test.test_webbrowser.ImportTest.test_get) ... ok
test_register (test.test_webbrowser.ImportTest.test_register) ... ok
test_synthesize (test.test_webbrowser.ImportTest.test_synthesize) ... ok
test_default (test.test_webbrowser.MacOSTest.test_default) ... FAIL
test_default_http_open (test.test_webbrowser.MacOSTest.test_default_http_open) ... ok
test_default_non_http_uses_bundle_id (test.test_webbrowser.MacOSTest.test_default_non_http_uses_bundle_id) ... ok
test_named_known_browser_uses_bundle_id (test.test_webbrowser.MacOSTest.test_named_known_browser_uses_bundle_id) ... ok
test_named_unknown_browser_falls_back_to_dash_a (test.test_webbrowser.MacOSTest.test_named_unknown_browser_falls_back_to_dash_a) ... ok
test_open_failure (test.test_webbrowser.MacOSTest.test_open_failure) ... ok
test_deprecation_warning (test.test_webbrowser.MacOSXOSAScriptDeprecationTest.test_deprecation_warning) ... ok
test_default_browser_lookup (test.test_webbrowser.MacOSXOSAScriptTest.test_default_browser_lookup) ... ok
test_default_open (test.test_webbrowser.MacOSXOSAScriptTest.test_default_open) ... ok
test_explicit_browser (test.test_webbrowser.MacOSXOSAScriptTest.test_explicit_browser) ... ok
test_reject_dash_prefixes (test.test_webbrowser.MacOSXOSAScriptTest.test_reject_dash_prefixes) ... ok
test_url_quote (test.test_webbrowser.MacOSXOSAScriptTest.test_url_quote) ... ok
test_open (test.test_webbrowser.MozillaCommandTest.test_open) ... ok
test_open_new (test.test_webbrowser.MozillaCommandTest.test_open_new) ... ok
test_open_new_tab (test.test_webbrowser.MozillaCommandTest.test_open_new_tab) ... ok
test_open_with_autoraise_false (test.test_webbrowser.MozillaCommandTest.test_open_with_autoraise_false) ... ok
test_reject_dash_prefixes (test.test_webbrowser.MozillaCommandTest.test_reject_dash_prefixes) ... ok
test_open (test.test_webbrowser.OperaCommandTest.test_open) ... ok
test_open_new (test.test_webbrowser.OperaCommandTest.test_open_new) ... ok
test_open_new_tab (test.test_webbrowser.OperaCommandTest.test_open_new_tab) ... ok
test_open_with_autoraise_false (test.test_webbrowser.OperaCommandTest.test_open_with_autoraise_false) ... ok
test_reject_dash_prefixes (test.test_webbrowser.OperaCommandTest.test_reject_dash_prefixes) ... ok

======================================================================
FAIL: test_default (test.test_webbrowser.MacOSTest.test_default)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/skip/src/python/cpython/Lib/test/test_webbrowser.py", line 345, in test_default
    self.assertIsInstance(browser, webbrowser.MacOS)
    ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: <webbrowser.GenericBrowser object at 0x3e9fdbe80d0> is not an instance of <class 'webbrowser.MacOS'>

----------------------------------------------------------------------
Ran 64 tests in 0.028s

FAILED (failures=1, skipped=4)
test test_webbrowser failed
0:00:00 load avg: 2.05 [1/1/1] test_webbrowser failed (1 failure)

== Tests result: FAILURE ==

1 test failed:
    test_webbrowser

Total duration: 90 ms
Total tests: run=64 failures=1 skipped=4
Total test files: run=1/1 failed=1
Result: FAILURE

My BROWSER environment variable is set to open, pretty typical I would think for a Mac:

% env | grep BROWSER
BROWSER=open

Unsetting it allows the test to pass...

CPython versions tested on:

CPython main branch

Operating systems tested on:

macOS

Metadata

Metadata

Assignees

No one assigned

    Labels

    testsTests in the Lib/test dirtype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions