Skip to content

[🐛 Bug]: [Mobile XCUITest-driver] Key Down action must have a closing Key Up successor #12039

@wswebcreation

Description

@wswebcreation

Have you read the Contributing Guidelines on issues?

WebdriverIO Version

latest

Node.js Version

18+

Mode

Standalone Mode

Which capabilities are you using?

- Operating system: MacOS 14.2
- Appium server version (output of `appium --version`): `v2.4.1 (REV bab86d5de571015b63fd8fc30b47bbe072a1290e)`
- Appium driver(s) and their version(s): `xcuitest@5.13.2 (automationName 'XCUITest')`
- Appium plugin(s) and their version(s): -
- Node.js version (output of `node --version`): `v18.19.0`
- `npm` version (output of `npm --version`): `10.2.3`
- Last component(s) version which did _not_ exhibit the problem: not
- Platform and version under test: iOS 17.2
- Real device or emulator/simulator: Sims

What happened?

Sending key actions according to the W3C (simple) spec with a pause is breaking the implementation for iOS, but not for Android

I've filed an issue on the Appium project, but the XCTest API only allows to send keypresses (e.g. keydown+keyup). There is no way to "split" them

What is your expected behavior?

Key can be send on iOS

How to reproduce the bug.

Failing

            await driver.performActions(
                [
                    {
                        'id': 'action1',
                        'type': 'key',
                        'actions': [
                            {
                                'type': 'keyDown',
                                'value': '3'
                            },
                            {
                                'type': 'pause',
                                'duration': 10
                            },
                            {
                                'type': 'keyUp',
                                'value': '3'
                            }
                        ]
                    }
                ]
            )

Works

            await driver.performActions(
                [
                    {
                        'id': 'action1',
                        'type': 'key',
                        'actions': [
                            {
                                'type': 'keyDown',
                                'value': '3'
                            },
                            {
                                'type': 'keyUp',
                                'value': '3'
                            }
                        ]
                    }
                ]
            )

Relevant log output

appium.failing.log
appium.succeeds.log

Code of Conduct

  • I agree to follow this project's Code of Conduct

Is there an existing issue for this?

  • I have searched the existing issues

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions