4
4
from autopilot.introspection import get_proxy_object_for_existing_process
5
5
from autopilot.input import Mouse, Pointer
11
10
class DiskUsageAnalyzerTests(AutopilotTestCase):
14
super(DiskUsageAnalyzerTests,self).setUp()
15
self.app = self.launch_test_application('baobab')
16
self.mainWindowTitle = self.app.select_single('BaobabWindow')
17
self.pointing_device = Pointer(Mouse.create())
18
self.scan_folder_index = 0 #u'Scan Folder\u2026'
19
self.scan_remote_folder_index = 1 #u'Scan Remote Folder\u2026'
13
""" Set up DiskUsage Analyzer """
14
super(DiskUsageAnalyzerTests,self).setUp()
15
self.app = self.launch_test_application('baobab')
16
self.mainWindowTitle = self.app.select_single('BaobabWindow')
17
self.pointing_device = Pointer(Mouse.create())
19
self.scan_folder_index = 0 #u'Scan Folder\u2026'
20
self.scan_remote_folder_index = 1 #u'Scan Remote Folder\u2026'
21
22
def test_window_title(self):
22
# Verify the Disk Usage Analyzer application Title
23
self.assertThat(self.mainWindowTitle.title,Eventually(Contains('Disk Usage')))
23
""" Verify the Disk Usage Analyzer application Title """
24
self.assertThat(self.mainWindowTitle.title,Eventually(Contains('Disk Usage')))
25
26
def test_scan_local_folder(self):
27
""" Open Scan Folder from menu and Run local scan folder test """
26
28
self.open_scan_folder_dialog(self.scan_folder_index)
27
self.assertThat(lambda: self.app.select_single('GtkFileChooserDialog').visible,Eventually(Equals(True)))
29
fileChooserDlgWindow = self.get_file_chooser_dlg_window()
30
self.assertThat(fileChooserDlgWindow.visible,Eventually(Equals(True)))
28
32
self.open_file_chooser_dialog('/home')
29
self.assertThat(lambda:self.app.select_single('GdHeaderBar',BuilderName='result-header-bar').title,Eventually(Contains('home')))
33
headerBar = self.app.select_single('GdHeaderBar',BuilderName='result-header-bar')
34
self.assertThat(headerBar.title,Eventually(Contains('home')))
31
36
def test_scan_remote_folder(self):
32
#Scan remote folder--check only the UI components
37
""" Open scan remote folder from menu and run test. It validates only the UI Elements """
33
38
self.open_scan_folder_dialog(self.scan_remote_folder_index)
34
39
self.pointing_device.move_to_object(self.gear_menu_option_button)
35
40
self.pointing_device.click()
36
42
encoding = locale.getdefaultlocale()[1] #To resolve Type str doesn't support the buffer API
37
43
cmd_output = subprocess.Popen("ps -ef | pgrep nautilus-connect*",stdout=subprocess.PIPE, shell=True)
38
44
self.connect_server_dlg_pid,error = cmd_output.communicate()
39
45
self.connect_server_dlg_pid = int(self.connect_server_dlg_pid.decode(encoding).rstrip('\n'))
40
46
self.assertNotEqual(self.connect_server_dlg_pid,None)
41
self.connect_server_dlg_proxy_object = get_proxy_object_for_existing_process(pid=self.connect_server_dlg_pid)
47
self.connect_server_dlg_proxy_object = get_proxy_object_for_existing_process(pid=self.connect_server_dlg_pid)
42
48
input_server_name = self.connect_server_dlg_proxy_object.select_single('GtkEntry')
43
50
with self.keyboard.focused_type(input_server_name) as kb:
44
51
self.assertThat(input_server_name.is_focus,Equals(True))
45
52
kb.type('smb://foo.example.org')
46
53
kb.press_and_release('Delete')
47
54
self.assertThat(input_server_name.text,Equals('smb://foo.example.org'))
48
56
self.btn_connect = self.connect_server_dlg_proxy_object.select_single('GtkButton',label='C_onnect')
49
57
self.btn_cancel = self.connect_server_dlg_proxy_object.select_single('GtkButton',label='_Cancel')
50
58
self.assertThat(self.btn_connect.sensitive,Equals(True))
51
59
self.assertThat(self.btn_cancel.sensitive,Equals(True))
52
60
self.pointing_device.move_to_object(self.btn_cancel)
53
61
self.pointing_device.click()
55
63
def test_home_list(self):
56
#scan home folder listed in the applocations start page
64
""" Select Home folder listed in application start page and run the test """
57
66
self.create_button_scan_home_folder = self.app.select_single('GtkLabel',label=u'<b>Home folder</b>')
58
67
self.pointing_device.move_to_object(self.create_button_scan_home_folder)
59
self.pointing_device.click()
60
self.assertThat(lambda: self.app.select_single('GtkSpinner',BuilderName='spinner').sensitive,Eventually(Equals(True)))
68
self.pointing_device.click()
70
spinnerButton = self.get_spinner_button_control()
71
self.assertThat(spinnerButton.sensitive,Eventually(Equals(True)))
61
73
self.show_tree_map()
62
self.assertThat(lambda: self.app.select_single('BaobabTreemap',BuilderName='treemap-chart').visible,Eventually(Equals(True)))
74
treeMap = self.get_tree_map_control()
75
self.assertThat(treeMap.visible,Eventually(Equals(True)))
63
77
self.show_ring_chart()
64
self.assertThat(lambda: self.app.select_single('BaobabRingschart',BuilderName='rings-chart').visible,Eventually(Equals(True)))
78
ringsChart = self.get_rings_chart_control()
79
self.assertThat(ringsChart.visible,Eventually(Equals(True)))
66
81
def test_scan_folder_tree_map(self):
67
self.open_scan_folder_dialog(self.scan_folder_index)
68
self.assertThat(lambda: self.app.select_single('GtkFileChooserDialog').visible,Eventually(Equals(True)))
69
self.open_file_chooser_dialog('/home')
70
self.assertThat(lambda:self.app.select_single('GdHeaderBar',BuilderName='result-header-bar').title,Eventually(Contains('home')))
82
""" Open scan folder dialog, select 'home' and validate the Treemap control """
83
self.open_scan_folder_dialog(self.scan_folder_index)
84
fileChooserDlgWindow = self.get_file_chooser_dlg_window()
85
self.assertThat(fileChooserDlgWindow.visible,Eventually(Equals(True)))
87
self.open_file_chooser_dialog('/home')
88
headerBar = self.app.select_single('GdHeaderBar',BuilderName='result-header-bar')
89
self.assertThat(headerBar.title,Eventually(Contains('home')))
71
91
self.show_tree_map()
72
self.assertThat(lambda: self.app.select_single('BaobabTreemap',BuilderName='treemap-chart').visible,Eventually(Equals(True)))
92
treeMap = self.get_tree_map_control()
93
self.assertThat(treeMap.visible,Eventually(Equals(True)))
74
95
def test_scan_folder_ring_chart(self):
96
""" Open scan folder dialog, select 'home' and validate the Rings chart control """
75
97
self.open_scan_folder_dialog(self.scan_folder_index)
76
self.assertThat(lambda: self.app.select_single('GtkFileChooserDialog').visible,Eventually(Equals(1)))
98
fileChooserDlgWindow = self.get_file_chooser_dlg_window()
99
self.assertThat(fileChooserDlgWindow.visible,Eventually(Equals(True)))
77
101
self.open_file_chooser_dialog('/home')
78
self.assertThat(lambda:self.app.select_single('GdHeaderBar',BuilderName='result-header-bar').title,Eventually(Contains('home')))
102
headerBar = self.app.select_single('GdHeaderBar',BuilderName='result-header-bar')
103
self.assertThat(headerBar.title,Eventually(Contains('home')))
79
105
self.show_ring_chart()
80
self.assertThat(lambda: self.app.select_single('BaobabRingschart',BuilderName='rings-chart').visible,Eventually(Equals(True)))
106
ringsChart = self.get_rings_chart_control()
107
self.assertThat(ringsChart.visible,Eventually(Equals(True)))
82
109
def show_tree_map(self):
83
#Toggle treemap and ring chart
84
self.assertThat(lambda: self.app.select_single('GtkSpinner',BuilderName='spinner').sensitive,Eventually(Equals(True)))
85
self.assertThat(lambda: self.app.select_single('GtkRadioButtonAccessible',accessible_description='Treemap Chart').showing,Eventually(Equals(True)))
110
""" Show and Validate Treemap Control """
111
spinnerButton = self.get_spinner_button_control()
112
self.assertThat(spinnerButton.sensitive,Eventually(Equals(True)))
113
treeMapAccessible = self.app.select_single('GtkRadioButtonAccessible',accessible_description='Treemap Chart')
114
self.assertThat(treeMapAccessible.showing,Eventually(Equals(True)))
86
116
self.tree_map_button = self.app.select_single('GtkRadioButton',BuilderName='treemap-button')
87
117
self.assertThat(self.tree_map_button.sensitive,Eventually(Equals(True)))
88
118
self.pointing_device.move_to_object(self.tree_map_button)
89
119
self.pointing_device.click()
91
def show_ring_chart(self):
92
self.assertThat(lambda: self.app.select_single('GtkSpinner',BuilderName='spinner').sensitive,Eventually(Equals(True)))
93
self.assertThat(lambda: self.app.select_single('GtkRadioButtonAccessible',accessible_description='Rings Chart').showing,Eventually(Equals(True)))
121
def show_ring_chart(self):
122
""" Show and Validate Rings Chart Control """
123
spinnerButton = self.get_spinner_button_control()
124
self.assertThat(spinnerButton.sensitive,Eventually(Equals(True)))
125
ringsChartAccessible = self.app.select_single('GtkRadioButtonAccessible',accessible_description='Rings Chart')
126
self.assertThat(ringsChartAccessible.showing,Eventually(Equals(True)))
94
128
self.ring_button = self.app.select_single('GtkRadioButton',BuilderName='rings-button')
95
129
self.assertThat(self.ring_button.sensitive,Eventually(Equals(True)))
96
130
self.pointing_device.move_to_object(self.ring_button)
97
131
self.pointing_device.click()
99
133
def open_scan_folder_dialog(self,menu_item_index):
100
134
self.gear_menu_option_button = self.app.select_single(BuilderName='menu-button')
101
135
self.pointing_device.move_to_object(self.gear_menu_option_button)
102
136
self.pointing_device.click()
103
137
window = self.app.select_many('GtkWindowAccessible')[1]
105
140
#Following code is not working in autopilot3 and as a workaround used select_many for accessing menu item
106
141
#self.create_scan_folder_sub_menu_item = window.select_single('GtkCheckMenuItemAccessible', accessible_name=menu_item_name)