def test_4_account_lists_columns(self): print( colored('Running: test_4_account_lists_columns - estimate: 48s', 'yellow')) list_headers = get_table_headers() account_lists = browser.find_elements_by_xpath( '//tbody[@class="MuiTableBody-root"]') for account_list in account_lists: for i in range(2): print(colored('\trandom account ' + str(i + 1), 'magenta')) account_cols = get_random_account_data(account_list) for col in list_headers: col_data = account_cols[list_headers.index( col)].get_attribute('innerHTML') has_data = (col == 'Full Name' or col == 'Username' or col == 'Email') and \ len(col_data) > 0 or len(col_data) >= 0 print( colored( '\ttest_4_account_lists_columns: ' + (i == 0 and 'active' or 'inactive') + ' accounts data - asserting...', 'blue')) self.assertTrue(has_data) print(colored('\ttest_4_account_lists_columns: passed.', 'cyan'))
def test_3_device_model(self): print(colored('Running: test_3_device_model - estimate: 57s', 'yellow')) for i in range(3): print(colored('\trandom gateway ' + str(i + 1), 'magenta')) updated_imei = get_random_gateway() gateway_detail_form = browser.find_element_by_xpath( '//div[@class="MuiFormControl-root"]') device_model_dropdown = gateway_detail_form.find_element_by_id( 'device-model') device_model_dropdown.send_keys(Keys.ENTER) sleep(SLEEP_INTERVAL) device_model_items = browser.find_elements_by_xpath( '//ul[@class="MuiList-root MuiMenu-list ' 'MuiList-padding"]/li') random_device_model = get_random_dropdown_item(device_model_items) random_device_model.click() click_update_button() print( colored('\ttest_3_device_model: confirm update - asserting...', 'blue')) assert "The selected gateway with IMEI " + updated_imei + " has been updated successfully." in browser.page_source get_back_previously_updated_gateway(updated_imei) close_modal() print(colored('\ttest_3_device_model: passed.', 'cyan'))
def test_3_account_lists_display(self): print( colored('Running: test_3_account_lists_display - estimate: 2s', 'yellow')) pagination_labels = browser.find_elements_by_xpath( '//tfoot[@class="MuiTableFooter-root"]/tr/td/div/div/span[' '@class="MuiTypography-root MuiTypography-caption"]') active_accounts_count = int( pagination_labels[0].get_attribute('innerHTML').split(' ')[2]) print( colored( '\ttest_3_account_lists_display: active accounts count - asserting...', 'blue')) self.assertGreater(active_accounts_count, 0) if len(pagination_labels) > 1: inactive_accounts_count = int( pagination_labels[1].get_attribute('innerHTML').split(' ')[2]) print( colored( '\ttest_3_account_lists_display: inactive accounts count - asserting...', 'blue')) self.assertGreater(inactive_accounts_count, 0) print(colored('\ttest_3_account_lists_display: passed.', 'cyan'))
def test_3_delete_confirm_success(self): print(colored('Running: test_3_delete_confirm_success - estimate: 15s', 'yellow')) for i in range(3): print(colored('\trandom meter ' + str(i + 1), 'magenta')) deleted_serial = get_random_meter_and_delete() browser.switch_to_alert().accept() sleep(2*SLEEP_INTERVAL) print(colored('\ttest_3_delete_confirm_success: confirm delete - asserting...', 'blue')) assert "The Meter with Serial No. " + deleted_serial + " has been deleted successfully." in browser.page_source print(colored('\ttest_3_delete_confirm_success: check modal - asserting...', 'blue')) self.assertFalse(check_existence('//div[@class="MuiFormControl-root"]', is_id=False)) meter_table_headers = get_table_headers() rows = browser.find_elements_by_xpath('//tbody[@class="MuiTableBody-root"]/tr') serials = [] for row in rows: serials.append(row.find_elements_by_tag_name('td')[meter_table_headers.index('Serial No.')] .get_attribute('innerHTML')) print(colored('\ttest_3_delete_confirm_success: check deleted serial - asserting...', 'blue')) assert deleted_serial not in serials print(colored('\ttest_3_delete_confirm_success: passed.', 'cyan'))
def get_back_previously_updated_command(cmd): command_table_headers = get_table_headers() rows = browser.find_elements_by_xpath( '//tbody[@class="MuiTableBody-root"]/tr') for row in rows: cols = row.find_elements_by_tag_name('td') if len(cols) > 0 and cmd == cols[command_table_headers.index( 'Command')].get_attribute('innerHTML'): click_action_button(cols) break
def get_back_previously_updated_node(hex): node_table_headers = get_table_headers() rows = browser.find_elements_by_xpath( '//tbody[@class="MuiTableBody-root"]/tr') for row in rows: cols = row.find_elements_by_tag_name('td') if hex == cols[node_table_headers.index('Hex. Address')].get_attribute( 'innerHTML'): click_action_button(cols) break
def get_back_previously_updated_meter(serial): meter_table_headers = get_table_headers() rows = browser.find_elements_by_xpath( '//tbody[@class="MuiTableBody-root"]/tr') for row in rows: cols = row.find_elements_by_tag_name('td') if serial == cols[meter_table_headers.index( 'Serial No.')].get_attribute('innerHTML'): click_action_button(cols) break
def get_back_previously_updated_gateway(imei): gateway_table_headers = get_table_headers() rows = browser.find_elements_by_xpath( '//tbody[@class="MuiTableBody-root"]/tr') for row in rows: cols = row.find_elements_by_tag_name('td') if imei == cols[gateway_table_headers.index('Imei')].get_attribute( 'innerHTML'): click_action_button(cols) break
def get_random_row_in_account_table(active=True): user_tables = browser.find_elements_by_xpath( '//tbody[@class="MuiTableBody-root"]') rows = user_tables[0].find_elements_by_tag_name('tr') if not active: rows = user_tables[1].find_elements_by_tag_name('tr') users = [ row for row in rows if len(row.find_elements_by_tag_name('td')) > 0 ] return random.choice(users)
def test_3_delete_confirm_success(self): print( colored('Running: test_3_delete_confirm_success - estimate: 15s', 'yellow')) for i in range(3): print(colored('\trandom gateway ' + str(i + 1), 'magenta')) deleted_imei = get_random_gateway() click_delete_button() browser.switch_to_alert().accept() sleep(2 * SLEEP_INTERVAL) print( colored( '\ttest_3_delete_confirm_success: confirm delete - asserting...', 'blue')) assert "The selected gateway with IMEI " + deleted_imei + " has been deleted successfully." in browser.page_source print( colored( '\ttest_3_delete_confirm_success: check modal - asserting...', 'blue')) self.assertFalse( check_existence('//div[@class="MuiFormControl-root"]', is_id=False)) gateway_table_headers = get_table_headers() rows = browser.find_elements_by_xpath( '//tbody[@class="MuiTableBody-root"]/tr') imeis = [] for row in rows: imeis.append( row.find_elements_by_tag_name('td')[ gateway_table_headers.index('Imei')].get_attribute( 'innerHTML')) print( colored( '\ttest_3_delete_confirm_success: check deleted imei - asserting...', 'blue')) assert deleted_imei not in imeis print(colored('\ttest_3_delete_confirm_success: passed.', 'cyan'))
def test_4_create_success(): print( colored('Running: test_4_create_success - estimate: 27s', 'yellow')) for i in range(3): print(colored('\tnew gateway ' + str(i + 1), 'magenta')) click_fab_button() imei = str(int(datetime.now().timestamp())) + "-" + str(i + 1) browser.find_element_by_id('gateway-imei').send_keys(imei) browser.find_element_by_id('gateway-name').send_keys('test name') browser.find_element_by_id('phone-number').send_keys('test phone') browser.find_element_by_id('hex-address').send_keys('hex address') browser.find_element_by_id('dec-address').send_keys('dec address') browser.find_element_by_id('ip-address').send_keys('ip address') browser.find_element_by_id('software-version').send_keys( 'sw version') browser.find_element_by_id('firmware-version').send_keys( 'fw version') browser.find_element_by_id('sim-serial').send_keys('sim serial') browser.find_element_by_id('sim-puk').send_keys('sim puk') gateway_detail_form = browser.find_element_by_xpath( '//div[@class="MuiFormControl-root"]') device_model_dropdown = gateway_detail_form.find_element_by_id( 'device-model') device_model_dropdown.send_keys(Keys.ENTER) sleep(SLEEP_INTERVAL) device_model_items = browser.find_elements_by_xpath( '//ul[@class="MuiList-root MuiMenu-list ' 'MuiList-padding"]/li') random_device_model = get_random_dropdown_item(device_model_items) random_device_model.click() click_save_button() print( colored( '\ttest_4_create_success: alert message - asserting...', 'blue')) assert "New gateway has been created successfully with IMEI " + imei in browser.page_source print(colored('\ttest_4_create_success: passed.', 'cyan'))
def test_3_device_model_dropdown(self): print( colored('Running: test_3_device_model_dropdown - estimate: 39s', 'yellow')) for i in range(3): print(colored('\trandom meter ' + str(i + 1), 'magenta')) meter_row = get_random_table_row() meter_cols = meter_row.find_elements_by_tag_name('td') click_action_button(meter_cols) meter_detail_form = browser.find_element_by_xpath( '//div[@class="MuiFormControl-root"]') device_model_dropdown = meter_detail_form.find_element_by_id( 'device-model') device_model_dropdown.send_keys(Keys.ENTER) sleep(SLEEP_INTERVAL) device_model_items = browser.find_elements_by_xpath( '//ul[@class="MuiList-root MuiMenu-list ' 'MuiList-padding"]/div') print( colored( '\ttest_3_device_model_dropdown: device models count - asserting...', 'blue')) self.assertGreaterEqual(len(device_model_items), 1) random_device_model = get_random_dropdown_item(device_model_items) random_model_value = random_device_model.find_element_by_xpath( '//span/div/div').get_attribute('innerHTML') random_device_model.click() sleep(SLEEP_INTERVAL) random_model_selected = random_model_value # browser.find_element_by_id('device-model').get_attribute('innerHTML') print( colored( '\ttest_3_device_model_dropdown: device models selected - asserting...', 'blue')) self.assertEqual(random_model_value, random_model_selected) close_modal() print(colored('\ttest_3_device_model_dropdown: passed.', 'cyan'))
def test_5_clashed_primary_key(): print( colored('Running: test_5_clashed_primary_key - estimate: 27s', 'yellow')) imei = get_random_table_data('Imei') click_fab_button() browser.find_element_by_id('gateway-imei').send_keys(imei) browser.find_element_by_id('gateway-name').send_keys('test name') browser.find_element_by_id('phone-number').send_keys('test phone') browser.find_element_by_id('hex-address').send_keys('hex address') browser.find_element_by_id('dec-address').send_keys('dec address') browser.find_element_by_id('ip-address').send_keys('ip address') browser.find_element_by_id('software-version').send_keys('sw version') browser.find_element_by_id('firmware-version').send_keys('fw version') browser.find_element_by_id('sim-serial').send_keys('sim serial') browser.find_element_by_id('sim-puk').send_keys('sim puk') gateway_detail_form = browser.find_element_by_xpath( '//div[@class="MuiFormControl-root"]') device_model_dropdown = gateway_detail_form.find_element_by_id( 'device-model') device_model_dropdown.send_keys(Keys.ENTER) sleep(SLEEP_INTERVAL) device_model_items = browser.find_elements_by_xpath( '//ul[@class="MuiList-root MuiMenu-list ' 'MuiList-padding"]/li') random_device_model = get_random_dropdown_item(device_model_items) random_device_model.click() click_save_button() confirmation = browser.switch_to_alert() print( colored( '\ttest_5_clashed_serial: confirmation dialog - asserting...', 'blue')) assert "Error occurred while saving gateway" in confirmation.text confirmation.accept() close_modal() sleep(2 * SLEEP_INTERVAL)
def test_3_form_dropdown(self): print(colored('Running: test_3_form_dropdown - estimate: 5s', 'yellow')) org_dropdown = browser.find_element_by_id('organization') org_dropdown.send_keys(Keys.ENTER) sleep(SLEEP_INTERVAL) org_items = browser.find_elements_by_xpath('//ul[@class="MuiList-root MuiMenu-list ' 'MuiList-padding"]/div') print(colored('\ttest_3_form_dropdown: org dropdown count - asserting...', 'blue')) self.assertGreaterEqual(len(org_items), 1) random_org = get_random_dropdown_item(org_items) selected_item = random_org.find_element_by_xpath('//span/div/div').get_attribute('innerHTML') random_org.click() sleep(SLEEP_INTERVAL) selected_org = selected_item # browser.find_element_by_id('organization').get_attribute('innerHTML') print(colored('\ttest_3_form_dropdown: selected org - asserting...', 'blue')) self.assertEqual(selected_org, selected_item) print(colored('\ttest_3_form_dropdown: passed.', 'cyan'))
def test_3_search_success(self): print( colored('Running: test_3_search_success - estimate: 13s', 'yellow')) search_form = SearchForm() search_form.form_clear_button.send_keys(Keys.ENTER) gateway_table_headers = get_table_headers() keyword = '' for i in range(5): random_row = get_random_table_row() cols = random_row.find_elements_by_tag_name('td') keyword += (cols[gateway_table_headers.index( 'Imei')].get_attribute('innerHTML') + ",") keyword = keyword[:-1] search_form.keyword_input.send_keys(keyword) browser.execute_script('arguments[0].click()', search_form.search_fields[0]) search_form.search_button.send_keys(Keys.ENTER) sleep(2 * SLEEP_INTERVAL) results = browser.find_elements_by_xpath( '//tbody[@class="MuiTableBody-root"]/tr') result_imeis = [] for result in results: cols = result.find_elements_by_tag_name('td') if len(cols) != 0: result_imeis.append(cols[gateway_table_headers.index( 'Imei')].get_attribute('innerHTML')) keyword_imeis = keyword.split(',') print( colored('\ttest_3_search_success: matching results - asserting...', 'blue')) self.assertEqual(keyword_imeis.sort(), result_imeis.sort()) print(colored('\ttest_3_search_success: passed.', 'cyan'))
def test_3_confirm_success(): print( colored('Running: test_2_confirm_no_network - estimate: 20s', 'yellow')) account_table_headers = get_table_headers() for i in range(2): print(colored('\trandom account ' + str(i + 1), 'magenta')) active_user_row = get_random_row_in_account_table() active_user_cols = active_user_row.find_elements_by_tag_name('td') click_action_button(active_user_cols) browser.find_element_by_id('delete-button').send_keys(Keys.ENTER) sleep(SLEEP_INTERVAL) browser.switch_to_alert().accept() sleep(2 * SLEEP_INTERVAL) active_users_table = browser.find_element_by_xpath( '//tbody[@class="MuiTableBody-root"]') active_users_rows = active_users_table.find_elements_by_tag_name( 'tr') active_users = [ row for row in active_users_rows if len(row.find_elements_by_tag_name('td')) > 0 ] user_names = [] for user in active_users: user_names.append( user.find_elements_by_tag_name('td') [account_table_headers.index('Full Name')].get_attribute( 'innerHTML')) print( colored('\ttest_1_unconfirmed: active users - asserting...', 'blue')) assert active_user_cols[account_table_headers.index( 'Full Name')] not in user_names if len( browser.find_elements_by_xpath( '//tbody[@class="MuiTableBody-root"]')) > 1: inactive_users_table = browser.find_elements_by_xpath( '//tbody[@class="MuiTableBody-root"]')[1] inactive_users_rows = inactive_users_table.find_elements_by_tag_name( 'tr') inactive_users = [ row for row in inactive_users_rows if len(row.find_elements_by_tag_name('td')) > 0 ] in_user_names = [] for user in inactive_users: in_user_names.append( user.find_elements_by_tag_name('td')[ account_table_headers.index( 'Full Name')].get_attribute('innerHTML')) print( colored( '\ttest_1_unconfirmed: inactive users - asserting...', 'blue')) assert active_user_cols[account_table_headers.index( 'Full Name')] in in_user_names print(colored('\ttest_1_unconfirmed: passed.', 'cyan'))
def test_1_unconfirmed(self): print(colored('Running: test_1_unconfirmed - estimate: 3s', 'yellow')) account_table_headers = get_table_headers() active_user_row = get_random_row_in_account_table() active_user_cols = active_user_row.find_elements_by_tag_name('td') click_action_button(active_user_cols) browser.find_element_by_id('delete-button').send_keys(Keys.ENTER) sleep(SLEEP_INTERVAL) confirmation = browser.switch_to_alert() print( colored('\ttest_1_unconfirmed: cancel deletion - asserting...', 'blue')) self.assertEqual( confirmation.text, 'Delete the account ' + active_user_cols[account_table_headers.index('Full Name')] + '. Continue?') active_users_table = browser.find_element_by_xpath( '//tbody[@class="MuiTableBody-root"]') active_users_rows = active_users_table.find_elements_by_tag_name('tr') active_users = [ row for row in active_users_rows if len(row.find_elements_by_tag_name('td')) > 0 ] user_names = [] for user in active_users: user_names.append( user.find_elements_by_tag_name('td')[ account_table_headers.index('Full Name')].get_attribute( 'innerHTML')) print( colored('\ttest_1_unconfirmed: active users - asserting...', 'blue')) assert active_user_cols[account_table_headers.index( 'Full Name')] in user_names if len( browser.find_elements_by_xpath( '//tbody[@class="MuiTableBody-root"]')) > 1: inactive_users_table = browser.find_elements_by_xpath( '//tbody[@class="MuiTableBody-root"]')[1] inactive_users_rows = inactive_users_table.find_elements_by_tag_name( 'tr') inactive_users = [ row for row in inactive_users_rows if len(row.find_elements_by_tag_name('td')) > 0 ] in_user_names = [] for user in inactive_users: in_user_names.append( user.find_elements_by_tag_name('td') [account_table_headers.index('Full Name')].get_attribute( 'innerHTML')) print( colored('\ttest_1_unconfirmed: inactive users - asserting...', 'blue')) assert active_user_cols[account_table_headers.index( 'Full Name')] not in in_user_names print(colored('\ttest_1_unconfirmed: passed.', 'cyan'))