-
-
Notifications
You must be signed in to change notification settings - Fork 195
Open
Labels
enhancementNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is needed
Description
The flutter allows us add new custom command extension CommandExtension
But the appium flutter driver just allows the basic command execute
I tried to use @appium/execute-driver-plugin to reach to driver.executeElementCommand but can not. Could I implement more code for custom commands?
Example for flutter code
import 'package:flutter/material.dart';
import 'package:flutter_driver/src/common/find.dart';
import 'package:flutter_driver/src/common/message.dart';
import 'package:flutter_test/src/controller.dart';
import 'package:flutter_test/src/finders.dart';
import 'package:flutter_driver/driver_extension.dart';
import './main.dart' as app;
/// Custom command
class CustomCommandResult extends Result {
final Finder finder;
const CustomCommandResult(this.finder);
@override
Map<String, dynamic> toJson() {
return <String, dynamic>{
"hasFound": finder.hasFound,
// "foundMany": finder.found.toList().length,
};
}
}
class CustomCommand extends CommandWithTarget {
CustomCommand(super.finder);
@override
String get kind => 'checkVisible';
CustomCommand.deserialize(super.json, super.finderFactory)
: super.deserialize();
}
class CustomCommandExtension extends CommandExtension {
@override
Future<Result> call(Command command, WidgetController prober,
CreateFinderFactory finderFactory, CommandHandlerFactory handlerFactory) {
FlutterDriverExtension flutterDriverExtension =
handlerFactory as FlutterDriverExtension;
final CustomCommand customCommand = command as CustomCommand;
Finder finder = flutterDriverExtension.createFinder(customCommand.finder);
return Future.value(CustomCommandResult(finder));
}
@override
String get commandKind => "checkVisible";
@override
Command deserialize(
Map<String, String> params,
DeserializeFinderFactory finderFactory,
DeserializeCommandFactory commandFactory) {
return CustomCommand.deserialize(params, finderFactory);
}
}
void main() {
enableFlutterDriverExtension(
commands: [CustomCommandExtension()]);
app.main();
}
Example for client script
driver.execute("flutter:commandExtension", "checkVisible", finder);
duyhuynh258, Time2HackJS and Kiruel
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is needed