Skip to content

[🚀 Feature]: Rewrite Atoms in TypeScript #15596

Open

Description

@titusfortner

Description

Migrating the atoms off the Closure Library/Compiler to TypeScript. Closure now
builds under Bazel 9, so this is no longer blocking — but we'd rather not keep
maintaining Closure, and TypeScript is a far more widely understood toolchain.

Scope is everything Closure builds, across four directories:
javascript/atoms/fragments, javascript/chrome-driver, javascript/ie-driver,
and javascript/webdriver/atoms (+ /inject). Shared internals (bot, dom,
events, locators/*, …) convert as dependencies, not as separate tasks.

✅ Completed (Closure → TypeScript)

🔄 Convert to TypeScript

  • clear
  • click
  • execute-async-script
  • execute-script
  • get-effective-style
  • get-size
  • get-text
  • is-enabled
  • submit
  • find-element (singular) — verify a live consumer first
  • Chrome-specific: get-location-in-view, get-first-client-rect,
    is-element-clickable, get-page-zoom, is-element-displayed,
    get-location (element offset)

🔀 Convert or delete

Legacy JSON Wire Protocol atoms with no W3C endpoint. Convert if still needed,
otherwise delete (deletion staged on the dead_atoms branch).

  • get-element-from-cache
  • execute-sql + html5/database.js (WebSQL) [js] Remove the WebSQL and AppCache atoms #18137
  • get-appcache-status + html5/appcache.js Same as above
  • get-location / geolocation (bot.geolocation) + html5/location.js
  • storage atoms (webdriver/atoms + /inject) + html5/storage.js
  • html5/html5_browser.js (bot.html5)

🔀 Convert, or retire the IE driver and delete

Used only by the IE driver. Either convert them to TypeScript, or retire the IE
driver and delete them with it.

  • is-editable
  • is-focusable
  • is-interactable
  • IE-local: get-element-rect, is-element-in-parent-overflow,
    is-offset-in-parent-overflow, IE find-element / find-elements

Activity

  1. joerg1985 commented on Apr 9, 2025

    @joerg1985
    Member

    Is this the right time to ask for improvements to the current atoms?

    e.g. a element with width 0px is considered as displayed as soon as there is a text node inside, there is no check for the content of this text node, so a   will make the element "visible".

    I could provide an example html of this if needed.

  2. github-actions commented on Oct 31, 2025

    @github-actions
    Contributor

    This issue is stale because it has been open 180 days with no activity. Remove stale label or comment or this will be closed in 14 days.

  3. added
    J-staleApplied to issues that become stale, and eventually closed.
    on Oct 31, 2025
  4. removed
    J-staleApplied to issues that become stale, and eventually closed.
    on Oct 31, 2025
  5. github-actions commented on Apr 29, 2026

    @github-actions
    Contributor

    This issue is stale because it has been open 180 days with no activity. Remove stale label or comment or this will be closed in 14 days.

  6. added
    J-staleApplied to issues that become stale, and eventually closed.
    on Apr 29, 2026
  7. removed
    J-staleApplied to issues that become stale, and eventually closed.
    on Apr 29, 2026
  8. AutomatedTester commented on Oct 8, 2026

    @AutomatedTester
    Member

    Just landed #18137

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    B-atomsJavaScript chunks generated by Google closureI-enhancementSomething could be better

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions