SeleniumHQ / SeleniumHQ/selenium
[🚀 Feature]: Rewrite Atoms in TypeScript
- 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
Assessment
This issue has not been assessed yet.