
https://github.com/flutter/engine/pull/46829 changed event handling sequence on web so that KeyboardBinding/RawKeyboard handles the text event first before it reaches IME. That means when dispatching synthetised events to IME every keydown event must have a corresponding keyup, otherwise consistency assertions in `KeyboardBindings` are triggered. ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/wiki/Tree-hygiene#overview [Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene [test-exempt]: https://github.com/flutter/flutter/wiki/Tree-hygiene#tests [Flutter Style Guide]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo [Features we expect every widget to implement]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/wiki/Chat
Flutter Web integration tests
To run the tests in this package download the chromedriver matching the version of Chrome. To find out the version of your Chrome installation visit chrome://version.
Start chromedriver
using the following command:
chromedriver --port=4444
An integration test is run using the flutter drive
command. Some tests are
written for a specific web renderer and/or specific build mode.
Before running a test, check the _runWebLongRunningTests
function defined in
dev/bots/test.dart, and determine the right web renderer and the build
mode you'd like to run the test in.
Here's an example of running an integration test:
flutter drive --target=test_driver/text_editing_integration.dart \
-d web-server \
--browser-name=chrome \
--profile \
--web-renderer=html
This example runs the test in profile mode (--profile
) using the HTML
renderer (--web-renderer=html
).
More resources:
- chromedriver: https://chromedriver.chromium.org/getting-started
- FlutterDriver: https://github.com/flutter/flutter/wiki/Running-Flutter-Driver-tests-with-Web
package:integration_test
: https://pub.dev/packages/integration_test