-
Notifications
You must be signed in to change notification settings - Fork 129
feat: add Linux desktop automation support via AT-SPI2 #356
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
0d880e0
e6c2e31
a3f3992
ca22e32
cb1a368
4f1ec98
bb049ce
c97a806
e51f5f9
4b2a0e3
1dc9637
484614d
1ba6d20
885bd65
8df648b
e993073
90753b5
fea873c
34c6e63
f82feb0
8b02cbf
b4e89bf
86ecc89
6cb62f8
0dbe11f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -134,6 +134,67 @@ export function getInteractor(device: DeviceInfo, runnerContext: RunnerContext): | |
| setSetting: (setting, state, appId, options) => | ||
| setAndroidSetting(device, setting, state, appId, options), | ||
| }; | ||
| case 'linux': | ||
| return { | ||
| open: () => { | ||
| throw new AppError('UNSUPPORTED_OPERATION', 'open not yet supported on Linux'); | ||
| }, | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
The Linux interactor path is mostly stubbed with Useful? React with 👍 / 👎. |
||
| openDevice: () => Promise.resolve(), | ||
| close: () => { | ||
| throw new AppError('UNSUPPORTED_OPERATION', 'close not yet supported on Linux'); | ||
| }, | ||
| tap: () => { | ||
| throw new AppError('UNSUPPORTED_OPERATION', 'tap not yet supported on Linux'); | ||
| }, | ||
| doubleTap: () => { | ||
| throw new AppError('UNSUPPORTED_OPERATION', 'doubleTap not yet supported on Linux'); | ||
| }, | ||
| swipe: () => { | ||
| throw new AppError('UNSUPPORTED_OPERATION', 'swipe not yet supported on Linux'); | ||
| }, | ||
| longPress: () => { | ||
| throw new AppError('UNSUPPORTED_OPERATION', 'longPress not yet supported on Linux'); | ||
| }, | ||
| focus: () => { | ||
| throw new AppError('UNSUPPORTED_OPERATION', 'focus not yet supported on Linux'); | ||
| }, | ||
| type: () => { | ||
| throw new AppError('UNSUPPORTED_OPERATION', 'type not yet supported on Linux'); | ||
| }, | ||
| fill: () => { | ||
| throw new AppError('UNSUPPORTED_OPERATION', 'fill not yet supported on Linux'); | ||
| }, | ||
| scroll: () => { | ||
| throw new AppError('UNSUPPORTED_OPERATION', 'scroll not yet supported on Linux'); | ||
| }, | ||
| scrollIntoView: () => { | ||
| throw new AppError('UNSUPPORTED_OPERATION', 'scrollIntoView not yet supported on Linux'); | ||
| }, | ||
| screenshot: () => { | ||
| throw new AppError('UNSUPPORTED_OPERATION', 'screenshot not yet supported on Linux'); | ||
| }, | ||
| back: () => { | ||
| throw new AppError('UNSUPPORTED_OPERATION', 'back not yet supported on Linux'); | ||
| }, | ||
| home: () => { | ||
| throw new AppError('UNSUPPORTED_OPERATION', 'home not yet supported on Linux'); | ||
| }, | ||
| rotate: () => { | ||
| throw new AppError('UNSUPPORTED_OPERATION', 'rotate not supported on Linux'); | ||
| }, | ||
| appSwitcher: () => { | ||
| throw new AppError('UNSUPPORTED_OPERATION', 'appSwitcher not yet supported on Linux'); | ||
| }, | ||
| readClipboard: () => { | ||
| throw new AppError('UNSUPPORTED_OPERATION', 'readClipboard not yet supported on Linux'); | ||
| }, | ||
| writeClipboard: () => { | ||
| throw new AppError('UNSUPPORTED_OPERATION', 'writeClipboard not yet supported on Linux'); | ||
| }, | ||
| setSetting: () => { | ||
| throw new AppError('UNSUPPORTED_OPERATION', 'setSetting not supported on Linux'); | ||
| }, | ||
| }; | ||
| case 'ios': | ||
| case 'macos': { | ||
| const { overrides, runnerOpts } = iosRunnerOverrides(device, runnerContext); | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This new discovery order prepends the synthetic local Linux device ahead of Android candidates in the no-
--platformpath, which changes default targeting on Linux hosts. BecauseresolveDevicekeeps discovery order when multiple booted physical devices are equally valid, a connected Android phone (kind: device) is now commonly displaced by the Linux host entry, so existing commands that relied on implicit Android selection start resolving to Linux instead.Useful? React with 👍 / 👎.