Skip to content

Commit 727631d

Browse files
authored
test: use timeout in client_config instead of the global var (#1120)
1 parent c37352a commit 727631d

File tree

8 files changed

+40
-16
lines changed

8 files changed

+40
-16
lines changed

.github/workflows/functional-test.yml

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,12 @@ jobs:
2929
XCODE_VERSION: 15.3
3030
IOS_VERSION: 17.4
3131
IPHONE_MODEL: iPhone 15 Plus
32-
GLOBAL_DEFAULT_TIMEOUT: 600
3332

3433
steps:
35-
- uses: actions/checkout@v3
34+
- uses: actions/checkout@v4
3635

3736
- name: Install Node.js
38-
uses: actions/setup-node@v3
37+
uses: actions/setup-node@v4
3938
with:
4039
node-version: 'lts/*'
4140

@@ -99,15 +98,15 @@ jobs:
9998
ARCH: x86
10099

101100
steps:
102-
- uses: actions/checkout@v3
101+
- uses: actions/checkout@v4
103102

104-
- uses: actions/setup-java@v3
103+
- uses: actions/setup-java@v4
105104
with:
106105
distribution: 'temurin'
107106
java-version: '17'
108107

109108
- name: Install Node.js
110-
uses: actions/setup-node@v3
109+
uses: actions/setup-node@v4
111110
with:
112111
node-version: 'lts/*'
113112

@@ -146,7 +145,7 @@ jobs:
146145
script: echo "Generated AVD snapshot for caching."
147146

148147
- name: Set up Python 3.12
149-
uses: actions/setup-python@v3
148+
uses: actions/setup-python@v5
150149
with:
151150
python-version: 3.12
152151

@@ -221,7 +220,7 @@ jobs:
221220
sudo udevadm trigger --name-match=kvm
222221
223222
- name: Set up Python 3.12
224-
uses: actions/setup-python@v3
223+
uses: actions/setup-python@v5
225224
with:
226225
python-version: 3.12
227226

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -426,10 +426,11 @@ Appium Python Client has `120` seconds read timeout on each HTTP request since t
426426
the corresponding selenium binding version.
427427
You have two methods to extend the read timeout.
428428
429-
1. Set `GLOBAL_DEFAULT_TIMEOUT` environment variable
430-
2. Configure timeout via `selenium.webdriver.remote.client_config.ClientConfig`
429+
1. **Recommend** Configure timeout via `appium.webdriver.client_config.AppiumClientConfig` or `selenium.webdriver.remote.client_config.ClientConfig`
431430
- `timeout` argument, or
432431
- `init_args_for_pool_manager` argument for `urllib3.PoolManager`
432+
2. Set `GLOBAL_DEFAULT_TIMEOUT` environment variable
433+
- This env var will be removed from the selenium binding ([issue](https://github.com/SeleniumHQ/selenium/issues/15604))
433434
434435
## Documentation
435436

test/functional/android/chrome_tests.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
from appium import webdriver
1616
from appium.options.common import AppiumOptions
17+
from appium.webdriver.client_config import AppiumClientConfig
1718
from appium.webdriver.common.appiumby import AppiumBy
1819
from test.helpers.constants import SERVER_URL_BASE
1920

@@ -22,9 +23,13 @@
2223

2324
class TestChrome(object):
2425
def setup_method(self) -> None:
26+
client_config = AppiumClientConfig(remote_server_addr=SERVER_URL_BASE)
27+
client_config.timeout = 600
2528
caps = get_desired_capabilities()
2629
caps['browserName'] = 'Chrome'
27-
self.driver = webdriver.Remote(SERVER_URL_BASE, options=AppiumOptions().load_capabilities(caps))
30+
self.driver = webdriver.Remote(
31+
SERVER_URL_BASE, options=AppiumOptions().load_capabilities(caps), client_config=client_config
32+
)
2833

2934
def teardown_method(self) -> None:
3035
self.driver.quit()

test/functional/android/helper/test_helper.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
from appium import webdriver
2020
from appium.options.android import UiAutomator2Options
21+
from appium.webdriver.client_config import AppiumClientConfig
2122
from test.functional.test_helper import is_ci
2223
from test.helpers.constants import SERVER_URL_BASE
2324

@@ -33,7 +34,9 @@
3334
class BaseTestCase:
3435
def setup_method(self, method) -> None: # type: ignore
3536
caps = desired_capabilities.get_desired_capabilities('ApiDemos-debug.apk.zip')
36-
self.driver = webdriver.Remote(SERVER_URL_BASE, options=UiAutomator2Options().load_capabilities(caps))
37+
client_config = AppiumClientConfig(remote_server_addr=SERVER_URL_BASE)
38+
client_config.timeout = 600
39+
self.driver = webdriver.Remote(options=UiAutomator2Options().load_capabilities(caps), client_config=client_config)
3740
if is_ci():
3841
self.driver.start_recording_screen()
3942

test/functional/flutter_integration/helper/test_helper.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
from appium import webdriver
1818
from appium.options.flutter_integration.base import FlutterOptions
19+
from appium.webdriver.client_config import AppiumClientConfig
1920
from appium.webdriver.extensions.flutter_integration.flutter_commands import FlutterCommand
2021
from test.helpers.constants import SERVER_URL_BASE
2122

@@ -34,7 +35,11 @@ def setup_method(self) -> None:
3435
flutterOptions.flutter_server_launch_timeout = 120000
3536

3637
desired_caps = desired_capabilities.get_desired_capabilities(platform_name)
37-
self.driver = webdriver.Remote(SERVER_URL_BASE, options=flutterOptions.load_capabilities(desired_caps))
38+
39+
client_config = AppiumClientConfig(remote_server_addr=SERVER_URL_BASE)
40+
client_config.timeout = 600
41+
42+
self.driver = webdriver.Remote(options=flutterOptions.load_capabilities(desired_caps), client_config=client_config)
3843
self.flutter_command = FlutterCommand(self.driver)
3944

4045
def teardown_method(self) -> None: # type: ignore

test/functional/ios/helper/test_helper.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
from appium import webdriver
1919
from appium.options.ios import XCUITestOptions
20+
from appium.webdriver.client_config import AppiumClientConfig
2021
from test.functional.test_helper import is_ci
2122
from test.helpers.constants import SERVER_URL_BASE
2223

@@ -28,7 +29,9 @@ class BaseTestCase(object):
2829

2930
def setup_method(self) -> None:
3031
desired_caps = desired_capabilities.get_desired_capabilities('UICatalog.app.zip')
31-
self.driver = webdriver.Remote(SERVER_URL_BASE, options=XCUITestOptions().load_capabilities(desired_caps))
32+
client_config = AppiumClientConfig(remote_server_addr=SERVER_URL_BASE)
33+
client_config.timeout = 600
34+
self.driver = webdriver.Remote(options=XCUITestOptions().load_capabilities(desired_caps), client_config=client_config)
3235
if is_ci():
3336
self.driver.start_recording_screen()
3437

test/functional/ios/safari_tests.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
from appium import webdriver
1818
from appium.options.common import AppiumOptions
19+
from appium.webdriver.client_config import AppiumClientConfig
1920
from test.helpers.constants import SERVER_URL_BASE
2021

2122
from .helper.desired_capabilities import get_desired_capabilities
@@ -32,7 +33,9 @@ def setup_method(self) -> None:
3233
'webviewConnectTimeout': 100000,
3334
}
3435
)
35-
self.driver = webdriver.Remote(SERVER_URL_BASE, options=AppiumOptions().load_capabilities(caps))
36+
client_config = AppiumClientConfig(remote_server_addr=SERVER_URL_BASE)
37+
client_config.timeout = 600
38+
self.driver = webdriver.Remote(options=AppiumOptions().load_capabilities(caps), client_config=client_config)
3639

3740
# Fresh iOS 17.4 simulator may not show up the webview context with "safari"
3841
# after a fresh simlator instance creation.

test/functional/mac/helper/test_helper.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,19 @@
1414

1515
from appium import webdriver
1616
from appium.options.mac import Mac2Options
17+
from appium.webdriver.client_config import AppiumClientConfig
1718
from test.helpers.constants import SERVER_URL_BASE
1819

1920
from .desired_capabilities import get_desired_capabilities
2021

2122

2223
class BaseTestCase(object):
2324
def setup_method(self) -> None:
24-
self.driver = webdriver.Remote(SERVER_URL_BASE, options=Mac2Options().load_capabilities(get_desired_capabilities()))
25+
client_config = AppiumClientConfig(remote_server_addr=SERVER_URL_BASE)
26+
client_config.timeout = 600
27+
self.driver = webdriver.Remote(
28+
SERVER_URL_BASE, options=Mac2Options().load_capabilities(get_desired_capabilities()), client_config=client_config
29+
)
2530

2631
def teardown_method(self, method) -> None: # type: ignore
2732
if not hasattr(self, 'driver'):

0 commit comments

Comments
 (0)