Skip to content

Commit 950c706

Browse files
saikrishna321tw-manjeshrahul-kumar-sdetakshathamkanavipurniram
authored
consider elementWaitTimeout from capabilities (#23)
* consider elementWaitTimeout from capabilities Co-authored-by: tw-manjesh <cv.manjesh@thoughtworks.com> Co-authored-by: rahul-kumar-sdet <rahul.kumar.sdet@gmail.com> Co-authored-by: akshathamkanavi <akshatha@thoughtworks.com> Co-authored-by: purniram <purnima.ramkumar@thoughtworks.com> Co-authored-by: dharsanasridharan <dharsana.sridharan@thoughtworks.com> * update release version * fixed comments --------- Co-authored-by: tw-manjesh <cv.manjesh@thoughtworks.com> Co-authored-by: rahul-kumar-sdet <rahul.kumar.sdet@gmail.com> Co-authored-by: akshathamkanavi <akshatha@thoughtworks.com> Co-authored-by: purniram <purnima.ramkumar@thoughtworks.com> Co-authored-by: dharsanasridharan <dharsana.sridharan@thoughtworks.com>
1 parent baf2840 commit 950c706

File tree

7 files changed

+45
-6
lines changed

7 files changed

+45
-6
lines changed

demo-app/pubspec.lock

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ packages:
1515
path: "../server"
1616
relative: true
1717
source: path
18-
version: "0.0.20"
18+
version: "0.0.21"
1919
archive:
2020
dependency: transitive
2121
description:

server/analysis_options.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
include: package:flutter_lints/flutter.yaml
2+
linter:
3+
rules:
4+
- non_constant_identifier_names
25

36
# Additional information about this file can be found at
47
# https://dart.dev/guides/language/analysis-options

server/lib/src/driver.dart

+4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:appium_flutter_server/src/exceptions/no_driver_exception.dart';
22
import 'package:appium_flutter_server/src/models/session.dart';
3+
import 'package:appium_flutter_server/src/utils/flutter_settings.dart';
34
import 'package:appium_flutter_server/src/utils/test_utils.dart';
45
import 'package:flutter_test/flutter_test.dart';
56
import 'package:integration_test/integration_test.dart';
@@ -14,6 +15,7 @@ class FlutterDriver {
1415
bool _isCameraMocked = false;
1516
final Map<String, String> _savedFiles = {};
1617
String? _activeMockImage;
18+
FlutterSettings settings = FlutterSettings();
1719

1820
FlutterDriver._();
1921

@@ -40,6 +42,7 @@ class FlutterDriver {
4042

4143
String initializeSession(Map<String, dynamic> capabilities) {
4244
_session = Session(generateUUID(), capabilities);
45+
settings.updateSetting(capabilities);
4346
return _session!.sessionId;
4447
}
4548

@@ -57,6 +60,7 @@ class FlutterDriver {
5760

5861
void resetSession() {
5962
_session = null;
63+
settings.reset();
6064
}
6165

6266
void setCameraMocked(bool value) {

server/lib/src/runner.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import 'package:package_info_plus/package_info_plus.dart';
1111
const MAX_TEST_DURATION_SECS = 24 * 60 * 60;
1212
// Need a better way to fetch this for automated release, this needs to be updated along with version bump
1313
// Can stay for now as it is not a breaking change
14-
const serverVersion = '0.0.21';
14+
const serverVersion = '0.0.22';
1515

1616

1717
void initializeTest({Widget? app, Function? callback}) async {

server/lib/src/utils/element_helper.dart

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import 'package:appium_flutter_server/src/models/api/drag_drop.dart';
1010
import 'package:appium_flutter_server/src/models/api/gesture.dart';
1111
import 'package:appium_flutter_server/src/models/api/find_element.dart';
1212
import 'package:appium_flutter_server/src/models/session.dart';
13+
import 'package:appium_flutter_server/src/utils/flutter_settings.dart';
1314
import 'package:flutter/gestures.dart';
1415
import 'package:flutter/rendering.dart';
1516
import 'package:flutter/widgets.dart';
@@ -26,7 +27,6 @@ const defaultScrollDelta = 64.0;
2627
/// Default maximum number of drags during scrolling.
2728
const defaultScrollMaxIteration = 15;
2829

29-
const Duration defaultWaitTimeout = Duration(seconds: 5);
3030

3131
class ElementHelper {
3232
static Future<Finder> findElement(Finder by, {String? contextId}) async {
@@ -52,7 +52,7 @@ class ElementHelper {
5252
final FinderResult<Element> elements = finder.evaluate();
5353
if (evaluatePresence) {
5454
await waitForElementExist(FlutterElement.fromBy(finder),
55-
timeout: defaultWaitTimeout);
55+
timeout: Duration(milliseconds: FlutterDriver.instance.settings.getSetting('flutterElementWaitTimeout')));
5656

5757
if (elements.isEmpty) {
5858
throw ElementNotFoundException("Unable to locate element");
@@ -496,7 +496,7 @@ class ElementHelper {
496496
Finder elementToFind = await locateElement(finder, evaluatePresence: false);
497497

498498
await waitForElementExist(FlutterElement.fromBy(scrollViewElement),
499-
timeout: defaultWaitTimeout);
499+
timeout: Duration(milliseconds: FlutterDriver.instance.settings.getSetting('flutterElementWaitTimeout')));
500500
AxisDirection direction;
501501
if (scrollDirection == null) {
502502
if (scrollViewElement.evaluate().first.widget is Scrollable) {
+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
class FlutterSettings {
2+
Map<String, dynamic> _settings = {};
3+
4+
FlutterSettings() {
5+
_setDefaultSetting();
6+
}
7+
8+
_setDefaultSetting() {
9+
_settings = {
10+
'flutterElementWaitTimeout': 5000
11+
};
12+
}
13+
14+
updateSetting(Map<String, dynamic> capabilities) {
15+
// if the capability sent by user is present in the settings, then update it.
16+
// Else the capability is not known to flutter server and ignore
17+
capabilities.forEach((settingName, value) {
18+
if (_settings[settingName] != null) {
19+
_settings[settingName] = value;
20+
}
21+
});
22+
}
23+
24+
dynamic getSetting(String settingName) {
25+
return _settings[settingName];
26+
}
27+
28+
// Called at the end of session
29+
reset() {
30+
_setDefaultSetting();
31+
}
32+
}

server/pubspec.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: appium_flutter_server
22
description: "Appium Flutter server using Integration Test package for testing Flutter apps with Appium"
3-
version: 0.0.21
3+
version: 0.0.22
44
homepage: "https://github.com/AppiumTestDistribution/appium-flutter-server"
55

66
environment:

0 commit comments

Comments
 (0)