Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
S2-group
GitHub Repository: S2-group/android-runner
Path: blob/master/tests/unit/test_browsers.py
908 views
1
import pytest
2
from mock import Mock, patch
3
4
from AndroidRunner.BrowserFactory import BrowserFactory
5
from AndroidRunner.Browsers import Browser, Chrome, Firefox, Opera
6
7
8
class TestBrowsers(object):
9
@pytest.fixture()
10
def browser(self):
11
return Browser.Browser('com.example', 'MainActivity')
12
13
def test_get_browser_chrome(self):
14
assert isinstance(BrowserFactory.get_browser('chrome'), Chrome.Chrome.__class__)
15
16
def test_get_browser_opera(self):
17
assert isinstance(BrowserFactory.get_browser('opera'), Opera.Opera.__class__)
18
19
def test_get_browser_firefox(self):
20
assert isinstance(BrowserFactory.get_browser('firefox'), Firefox.Firefox.__class__)
21
22
def test_get_browser_fake(self):
23
with pytest.raises(Exception) as except_result:
24
BrowserFactory.get_browser("fake_browser")
25
assert "No Browser found" in str(except_result.value)
26
27
def test_browsers_to_string_browser(self, browser):
28
assert browser.to_string() == 'com.example'
29
30
def test_browsers_to_string_opera(self, browser):
31
assert BrowserFactory.get_browser('opera')().to_string() == 'com.opera.browser'
32
33
def test_browsers_to_string_chrome(self, browser):
34
assert BrowserFactory.get_browser('chrome')().to_string() == 'com.android.chrome'
35
36
def test_browsers_to_string_firefox(self, browser):
37
assert BrowserFactory.get_browser('firefox')().to_string() == 'org.mozilla.firefox'
38
39
def test_chrome_init(self):
40
chrome_browser = Chrome.Chrome()
41
42
assert chrome_browser.package_name == 'com.android.chrome'
43
assert chrome_browser.main_activity =='com.google.android.apps.chrome.Main'
44
45
def test_firefox_init(self):
46
firefox_browser = Firefox.Firefox()
47
48
assert firefox_browser.package_name == 'org.mozilla.firefox'
49
assert firefox_browser.main_activity == 'org.mozilla.gecko.BrowserApp'
50
51
def test_opera_init(self):
52
opera_browser = Opera.Opera()
53
54
assert opera_browser.package_name == 'com.opera.browser'
55
assert opera_browser.main_activity == 'com.opera.Opera'
56
57
@patch('logging.Logger.info')
58
def test_start(self, mock_log, browser):
59
mock_package_name = Mock()
60
browser.package_name = mock_package_name
61
mock_main_activity = Mock()
62
browser.main_activity = mock_main_activity
63
mock_device = Mock()
64
mock_device.id = "fake_device"
65
mock_device.get_version.return_value = "10"
66
browser.start(mock_device)
67
mock_log.assert_called_once_with('fake_device: Start')
68
mock_device.launch_activity.assert_called_once_with(mock_package_name, mock_main_activity, from_scratch=True,
69
force_stop=True,
70
action='android.intent.action.VIEW')
71
72
@patch('logging.Logger.info')
73
def test_load_url(self, mock_log, browser):
74
mock_package_name = Mock()
75
browser.package_name = mock_package_name
76
mock_main_activity = Mock()
77
browser.main_activity = mock_main_activity
78
mock_device = Mock()
79
mock_device.id = "fake_device"
80
browser.load_url(mock_device, 'test.url')
81
mock_log.assert_called_once_with('fake_device: Load URL: test.url')
82
mock_device.launch_activity.assert_called_once_with(mock_package_name, mock_main_activity, data_uri='test.url',
83
action='android.intent.action.VIEW')
84
85
@patch('logging.Logger.info')
86
def test_stop_clear_data(self, mock, browser):
87
mock_device = Mock()
88
mock_device.id = "fake_device"
89
browser.stop(mock_device, True)
90
mock.assert_called_once_with('fake_device: Stop')
91
mock_device.force_stop.assert_called_once_with(browser.package_name)
92
mock_device.clear_app_data.assert_called_once_with(browser.package_name)
93
assert mock_device.clear_app_data.call_count == 1
94
95
@patch('logging.Logger.info')
96
def test_stop(self, mock, browser):
97
mock_device = Mock()
98
mock_device.id = "fake_device"
99
browser.stop(mock_device, False)
100
101
mock_device.force_stop.assert_called_once_with(browser.package_name)
102
mock.assert_called_with('fake_device: Stop')
103
assert mock_device.clear_app_data.call_count == 0
104
105