SeleniumHQ / SeleniumHQ/selenium

[🚀 Feature]: Rewrite Atoms in TypeScript

Open
#15,596 4 comments 0 reactions 0 assignees View on GitHub
B-atoms I-enhancement
Dominant language
Java
Stars
34.5k
Forks
8.7k
Avg merge
2d 1h
Merged PRs (30d)
92

Description

## 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)

- [x] `get-attribute` — #17370
- [x] `is-displayed` — #17316
- [x] `find-elements` — #17458

## 🔄 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)
- [ ] `get-location` / geolocation (`bot.geolocation`) + `html5/location.js`
- [ ] `get-appcache-status` + `html5/appcache.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`

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.