diff --git a/appium/webdriver/extensions/activities.py b/appium/webdriver/extensions/activities.py index 9cc8b0ac..df673285 100644 --- a/appium/webdriver/extensions/activities.py +++ b/appium/webdriver/extensions/activities.py @@ -67,7 +67,7 @@ def wait_activity(self, activity, timeout, interval=1): This is an Android-only method. - :Agrs: + :Args: - activity - target activity - timeout - max wait time, in seconds - interval - sleep interval between retries, in seconds diff --git a/ci-requirements.txt b/ci-requirements.txt index d4f3007b..fd948176 100644 --- a/ci-requirements.txt +++ b/ci-requirements.txt @@ -4,6 +4,7 @@ isort==4.3.4 pylint==1.9.3 autopep8==1.4.3 httpretty==0.9.6 +pytest==4.0.2 pytest-cov==2.6.0 tox==3.6.0 tox-travis==0.11 diff --git a/test/unit/webdriver/device/activities_test.py b/test/unit/webdriver/device/activities_test.py new file mode 100644 index 00000000..e20b8446 --- /dev/null +++ b/test/unit/webdriver/device/activities_test.py @@ -0,0 +1,86 @@ +#!/usr/bin/env python + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from test.unit.helper.test_helper import appium_command, android_w3c_driver + +import json +import httpretty + + +class TestWebDriverDeviceActivities(object): + + @httpretty.activate + def test_start_activity(self): + driver = android_w3c_driver() + httpretty.register_uri( + httpretty.POST, + appium_command('/session/1234567890/appium/device/start_activity'), + body='{"value": ""}' + ) + driver.start_activity('com.example.myapp', '.ExampleActivity') + + d = json.loads(httpretty.last_request().body.decode('utf-8')) + assert d['sessionId'] == '1234567890' + assert d['appPackage'] == 'com.example.myapp' + assert d['appActivity'] == '.ExampleActivity' + + @httpretty.activate + def test_start_activity_with_opts(self): + driver = android_w3c_driver() + httpretty.register_uri( + httpretty.POST, + appium_command('/session/1234567890/appium/device/start_activity'), + body='{"value": ""}' + ) + driver.start_activity( + app_package='com.example.myapp', + app_activity='.ExampleActivity', + app_wait_package='com.example.waitapp', + intent_action='android.intent.action.MAIN', + intent_category='android.intent.category.LAUNCHER', + intent_flags='0x10200000', + optional_intent_arguments='--es "activity" ".ExampleActivity"', + dont_stop_app_on_reset=True + ) + + d = json.loads(httpretty.last_request().body.decode('utf-8')) + assert d['sessionId'] == '1234567890' + assert d['appPackage'] == 'com.example.myapp' + assert d['appActivity'] == '.ExampleActivity' + assert d['appWaitPackage'] == 'com.example.waitapp' + assert d['intentAction'] == 'android.intent.action.MAIN' + assert d['intentCategory'] == 'android.intent.category.LAUNCHER' + assert d['intentFlags'] == '0x10200000' + assert d['optionalIntentArguments'] == '--es "activity" ".ExampleActivity"' + assert d['dontStopAppOnReset'] is True + + @httpretty.activate + def test_current_activity(self): + driver = android_w3c_driver() + httpretty.register_uri( + httpretty.GET, + appium_command('/session/1234567890/appium/device/current_activity'), + body='{"value": ".ExampleActivity"}' + ) + assert driver.current_activity == '.ExampleActivity' + + @httpretty.activate + def test_wait_activity(self): + driver = android_w3c_driver() + httpretty.register_uri( + httpretty.GET, + appium_command('/session/1234567890/appium/device/current_activity'), + body='{"value": ".ExampleActivity"}' + ) + assert driver.wait_activity('.ExampleActivity', 1) is True