FlutterDriver: deprecate enableAccessibility; redirect it to setSemantics; add setSemantics tests (#82939)
* deprecate enableAccessibility; redirect it to setSemantics Co-authored-by: David Iglesias <ditman@gmail.com>
This commit is contained in:
parent
843083c93a
commit
2f3f5f09eb
@ -31,7 +31,7 @@ void main() {
|
||||
});
|
||||
|
||||
test('enable accessibility', () async {
|
||||
await driver.enableAccessibility();
|
||||
await driver.setSemantics(true);
|
||||
|
||||
await Future<void>.delayed(const Duration(seconds: 2));
|
||||
|
||||
|
@ -174,8 +174,12 @@ abstract class FlutterDriver {
|
||||
async_io.WebDriver get webDriver => throw UnimplementedError();
|
||||
|
||||
/// Enables accessibility feature.
|
||||
@Deprecated(
|
||||
'Call setSemantics(true) instead. '
|
||||
'This feature was deprecated after v2.3.0-12.1.pre.'
|
||||
)
|
||||
Future<void> enableAccessibility() async {
|
||||
throw UnimplementedError();
|
||||
await setSemantics(true);
|
||||
}
|
||||
|
||||
/// Sends [command] to the Flutter Driver extensions.
|
||||
@ -522,6 +526,13 @@ abstract class FlutterDriver {
|
||||
///
|
||||
/// Returns true when the call actually changed the state from on to off or
|
||||
/// vice versa.
|
||||
///
|
||||
/// Does not enable or disable the assistive technology installed on the
|
||||
/// device. For example, this does not enable VoiceOver on iOS, TalkBack on
|
||||
/// Android, or NVDA on Windows.
|
||||
///
|
||||
/// Enabling semantics on the web causes the engine to render ARIA-annotated
|
||||
/// HTML.
|
||||
Future<bool> setSemantics(bool enabled, { Duration? timeout }) async {
|
||||
final SetSemanticsResult result = SetSemanticsResult.fromJson(await sendCommand(SetSemantics(enabled, timeout: timeout)));
|
||||
return result.changedState;
|
||||
|
@ -287,10 +287,6 @@ class VMServiceFlutterDriver extends FlutterDriver {
|
||||
/// Whether to log communication between host and app to `flutter_driver_commands.log`.
|
||||
final bool _logCommunicationToFile;
|
||||
|
||||
@override
|
||||
Future<void> enableAccessibility() async {
|
||||
throw UnsupportedError('VMServiceFlutterDriver does not support enableAccessibility');
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Map<String, dynamic>> sendCommand(Command command) async {
|
||||
|
@ -39,7 +39,6 @@ class WebFlutterDriver extends FlutterDriver {
|
||||
|
||||
final FlutterWebConnection _connection;
|
||||
DateTime _startTime;
|
||||
bool _accessibilityEnabled = false;
|
||||
static int _nextDriverId = 0;
|
||||
|
||||
/// The unique ID of this driver instance.
|
||||
@ -96,22 +95,6 @@ class WebFlutterDriver extends FlutterDriver {
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> enableAccessibility() async {
|
||||
if (!_accessibilityEnabled) {
|
||||
// Clicks the button to enable accessibility via Javascript for Desktop Web.
|
||||
//
|
||||
// The tag used in the script is based on
|
||||
// https://github.com/flutter/engine/blob/master/lib/web_ui/lib/src/engine/semantics/semantics_helper.dart#L193
|
||||
//
|
||||
// TODO(angjieli): Support Mobile Web. (https://github.com/flutter/flutter/issues/65192)
|
||||
await webDriver.execute(
|
||||
"document.querySelector('flt-semantics-placeholder').click();",
|
||||
<String>[]);
|
||||
_accessibilityEnabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Map<String, dynamic>> sendCommand(Command command) async {
|
||||
Map<String, dynamic> response;
|
||||
|
@ -630,15 +630,31 @@ void main() {
|
||||
});
|
||||
});
|
||||
|
||||
group('VMServiceFlutterDriver Unsupported error', () {
|
||||
test('enableAccessibility', () async {
|
||||
expect(driver.enableAccessibility(), throwsUnsupportedError);
|
||||
group('setSemantics', () {
|
||||
test('can be enabled', () async {
|
||||
fakeClient.responses['set_semantics'] = makeFakeResponse(<String, Object>{
|
||||
'changedState': true,
|
||||
});
|
||||
await driver.setSemantics(true, timeout: _kTestTimeout);
|
||||
expect(fakeClient.commandLog, <String>[
|
||||
'ext.flutter.driver {command: set_semantics, timeout: $_kSerializedTestTimeout, enabled: true}',
|
||||
]);
|
||||
});
|
||||
|
||||
test('webDriver', () async {
|
||||
expect(() => driver.webDriver, throwsUnsupportedError);
|
||||
test('can be disabled', () async {
|
||||
fakeClient.responses['set_semantics'] = makeFakeResponse(<String, Object>{
|
||||
'changedState': false,
|
||||
});
|
||||
await driver.setSemantics(false, timeout: _kTestTimeout);
|
||||
expect(fakeClient.commandLog, <String>[
|
||||
'ext.flutter.driver {command: set_semantics, timeout: $_kSerializedTestTimeout, enabled: false}',
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
test('VMServiceFlutterDriver does not support webDriver', () async {
|
||||
expect(() => driver.webDriver, throwsUnsupportedError);
|
||||
});
|
||||
});
|
||||
|
||||
group('VMServiceFlutterDriver with custom timeout', () {
|
||||
|
Loading…
x
Reference in New Issue
Block a user