Skip to content

[py][bidi] _bidi layer has no fileDialogOpened coverage or handler helpers, unlike the older bidi package #18009

Description

@AutomatedTester

Feature and motivation

The newer Python _bidi layer has no coverage or ergonomic API for the input.fileDialogOpened event, while the older bidi package has both. Anything migrating from one to the other loses that functionality.

The older suite covers the event in three tests:

  • test_file_dialog_event_handler_multiplepy/test/selenium/webdriver/common/bidi/input_tests.py:370
  • test_file_dialog_event_handler_unsubscribepy/test/selenium/webdriver/common/bidi/input_tests.py:405
  • test_multiple_file_dialog_handlerspy/test/selenium/webdriver/common/bidi/input_tests.py:779

py/test/selenium/webdriver/common/_bidi/input_tests.py has none — a grep for file_dialog in that file returns nothing.

The convenience helpers are in the same position. add_file_dialog_handler / remove_file_dialog_handler are injected by the older generator's enhancement manifest:

https://github.com/SeleniumHQ/selenium/blob/trunk/py/private/bidi_enhancements_manifest.py#L1854-L1872

That manifest is consumed by generate_bidi.py, which emits selenium/webdriver/common/bidi/. The _bidi layer is generated by generate_bidi_protocol.py and is raw protocol only, so it has no equivalent subscribe/unsubscribe ergonomics for this event.

Noticed while reviewing the Python BiDi input code for upload coverage (#18007), which touches the _bidi input suite.

Things to consider

  • Whether _bidi is intended to stay raw protocol with ergonomics layered above it, or whether it should carry the handler helpers itself. That answer decides whether this is "port the manifest enhancement" or "add the helpers at whatever layer replaces it".
  • The FileDialogInfo dataclass and its from_json are also manifest-provided (same file, just above the methods), so the event's deserialisation needs a home too, not just the subscribe helpers.
  • Once there is somewhere to hang them, the three tests above port over fairly mechanically.
  • Worth checking whether any other manifest enhancements are in the same position, so this is fixed as a class rather than one event at a time.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

C-pyPython BindingsI-enhancementSomething could be better

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions