def test_candidate_card_update(driver): LoginPage.login_recruiter(driver, '/c/p/candidates/assessments/557226/video/1238494/') driver.wait_until_element_visible( Candidates.evaluators_checkboxes, delay=120) evaluators = driver.return_elements( Candidates.evaluators_checkboxes) index = 0 while index < 3: evaluators[index].click() index += 1 driver.click(Candidates.apply_assigned_evaluator) driver.click(Candidates.exit_button) driver.click(Candidates.interviews_tab) driver.wait_until_element_visible( Candidates.status_column) time.sleep(6) # Interviews page needs more time to load properly driver.type_keys( Candidates.candidate_search_field, 'Automation user\n') driver.wait_until_element_visible( Candidates.three_evaluators) driver.click(Candidates.three_evaluators) evaluators = driver.return_elements( Candidates.evaluators_checkboxes) index = 0 while index < 3: evaluators[index].click() index += 1 driver.click(Candidates.apply_assigned_evaluator) driver.wait_until_element_visible( Candidates.apply_assigned_evaluator)
def test_filters_position(driver): LoginPage.login_recruiter(driver, '/c/p/candidates') driver.wait_until_element_visible(Filters.status, delay=120) driver.click(Filters.filters_dropdown) checkboxes = driver.find_elements( By.CSS_SELECTOR, Filters.filters_position_check['selector']) checkboxes_text = driver.find_elements( By.CSS_SELECTOR, Filters.position_check_text['selector']) index = 0 while index < len(checkboxes): needed_text = checkboxes_text[index].get_attribute('data-for') checkboxes[index].click() driver.click(Filters.apply_filters_button) time.sleep(2) position_text = driver.find_elements(By.XPATH, Filters.position_text['selector']) if len(position_text) > 0: for position in position_text: assert position.text == needed_text driver.click(Filters.filters_dropdown) checkboxes = driver.find_elements( By.CSS_SELECTOR, Filters.filters_position_check['selector']) checkboxes_text = driver.find_elements( By.CSS_SELECTOR, Filters.position_check_text['selector']) checkboxes[index].click() index += 1
def test_interview_filters_positions(driver): LoginPage.login_recruiter(driver, '/c/p/candidates') driver.wait_until_element_visible(Filters.status, delay=120) driver.click(Candidates.interviews_tab) driver.wait_until_element_visible(Candidates.interviews_status) driver.click(Filters.filters_dropdown) time.sleep(3) # Need some more time to load checkboxes = driver.find_elements( By.CSS_SELECTOR, Filters.interview_position_check['selector']) checkboxes_text = driver.find_elements( By.CSS_SELECTOR, Filters.interview_position['selector']) index = 0 while index < len(checkboxes): needed_text = checkboxes_text[index].get_attribute('data-for') checkboxes[index].click() driver.click(Filters.apply_filters_button) try: driver.wait_until_element_visible(Candidates.empty, delay=5) except Exception: position_text = driver.find_elements( By.XPATH, Candidates.interview_position_text['selector']) for position in position_text: assert position.text == needed_text \ or position.text == "Demo Project test org" # One of the games names doesn't match driver.click(Filters.filters_dropdown) checkboxes = driver.find_elements( By.CSS_SELECTOR, Filters.interview_position_check['selector']) checkboxes_text = driver.find_elements( By.CSS_SELECTOR, Filters.interview_position['selector']) checkboxes[index].click() index += 1
def test_interview_filters_status(driver): LoginPage.login_recruiter(driver, '/c/p/candidates') driver.wait_until_element_visible(Filters.status, delay=120) driver.click(Candidates.interviews_tab) driver.wait_until_element_visible(Candidates.interviews_status) driver.click(Filters.filters_dropdown) time.sleep(3) # Need some more time to load checkboxes = driver.find_elements( By.CSS_SELECTOR, Filters.filters_status_checkboxes['selector']) checkboxes_text = driver.find_elements( By.CSS_SELECTOR, Filters.status_checkboxes_text['selector']) index = 0 while index < len(checkboxes): checkbox_text = checkboxes_text[index].get_attribute('data-for') checkboxes[index].click() driver.click(Filters.apply_filters_button) driver.wait_until_element_visible(Candidates.interviews_status) status_text = driver.find_elements( By.CSS_SELECTOR, Candidates.interviews_status['selector']) if len(status_text) > 0: for element in status_text: assert element.text == checkbox_text driver.click(Filters.filters_dropdown) checkboxes = driver.find_elements( By.CSS_SELECTOR, Filters.filters_status_checkboxes['selector']) checkboxes_text = driver.find_elements( By.CSS_SELECTOR, Filters.status_checkboxes_text['selector']) checkboxes[index].click() index += 1
def test_scored_assignment(driver): LoginPage.login_recruiter(driver, '/c/p') driver.wait_until_element_visible(Dashboard.high_chart, delay=120) time.sleep(3) driver.navigate_to(configs.url + '/c/p/candidates/assessments/521746/video/1209126/') driver.wait_until_element_visible(Candidates.unavailable_checkbox, delay=120)
def test_video_styles_settings(driver): LoginPage.login_recruiter(driver, '/c/p') driver.wait_until_element_visible(Dashboard.high_chart) driver.navigate_to(configs.url + '/c/p/administration/memberships') driver.wait_until_element_visible(Admin.styles_and_branding_settings) driver.click(Admin.styles_and_branding_settings) driver.wait_until_element_visible(Admin.login_preview_button)
def test_workforce(driver): LoginPage.login_recruiter(driver, '/c/p/insights/WO/workforce-dna') driver.wait_until_element_visible(WorkforceInsights.iframe, delay=120) driver.switch_frame(WorkforceInsights.iframe) time.sleep(5) driver.wait_until_element_visible(WorkforceInsights.attributes, delay=30) driver.wait_until_element_visible(WorkforceInsights.clusters, delay=30)
def test_prospects_filter_location(driver): LoginPage.login_recruiter(driver, '/c/p/prospective-candidates') driver.wait_until_element_visible(Prospects.empty, delay=120) time.sleep(7) driver.click(Prospects.prospects_filter) driver.click(Filters.invited_7d) search_line = driver.find_element(By.CSS_SELECTOR, Prospects.search_city['selector']) search_line.clear() search_line.send_keys('New York City') driver.click(Prospects.ny_city_location) driver.click(Filters.apply_filters_button) time.sleep(2) prospects = driver.find_elements(By.CSS_SELECTOR, Prospects.prospects_list['selector']) index = 0 while index < 25: prospects[index].click() driver.wait_until_element_visible(Prospects.position_location, delay=30) location = driver.find_element(By.CSS_SELECTOR, Prospects.position_location['selector']) assert location.text == "New York City, NY" \ or location.text == "Multiple locations" index += 1
def test_bulk_valid(driver): LoginPage.login_recruiter(driver, '/c/p/candidates') driver.click(Candidates.interviews_tab) driver.wait_until_element_visible(Candidates.interviews_status, delay=120) time.sleep(6) # Interviews page needs more time to load properly driver.click(Filters.filters_dropdown) driver.click(Filters.registered_interview) driver.click(Filters.test_act_position) driver.click(Filters.unassigned_evaluator) driver.click(Filters.apply_filters_button) driver.wait_until_element_visible(Candidates.interview_position_text, delay=120) time.sleep(5) candidate = Candidates(driver) driver.click(candidate.checkbox('5')) driver.click(candidate.checkbox('6')) driver.click(candidate.checkbox('7')) driver.click(Candidates.bulk_assign_3_candidates) time.sleep(6) evaluators = driver.find_elements(By.CSS_SELECTOR, Candidates.evaluators_bulk['selector']) evaluators[11].click() assign = driver.find_elements(By.XPATH, Candidates.assign_bulk['selector']) assign[25].click() time.sleep(1) alert = driver.switch_to.alert alert.accept() driver.wait_until_element_visible(Candidates.interview_position_text)
def test_prospects_filter_position(driver): LoginPage.login_recruiter(driver, '/c/p/prospective-candidates') driver.wait_until_element_visible(Prospects.empty, delay=120) time.sleep(6) driver.click(Prospects.prospects_filter) driver.click(Filters.invited_7d) checkboxes = driver.find_elements(By.CSS_SELECTOR, Prospects.positions_check['selector']) checkboxes_text = driver.find_elements(By.CSS_SELECTOR, Prospects.positions['selector']) index = 1 while index < len(checkboxes): needed_text = checkboxes_text[index].get_attribute('data-for') checkboxes[index].click() driver.click(Filters.apply_filters_button) time.sleep(2) position_text = driver.find_elements(By.XPATH, Filters.position_text['selector']) if len(position_text) > 0: for position in position_text: assert position.text == needed_text driver.click(Prospects.prospects_filter) checkboxes = driver.find_elements( By.CSS_SELECTOR, Prospects.positions_check['selector']) checkboxes_text = driver.find_elements(By.CSS_SELECTOR, Prospects.positions['selector']) checkboxes[index].click() index += 1
def test_prospects_filter(driver): LoginPage.login_recruiter(driver, '/c/p/prospective-candidates') driver.wait_until_element_visible(Prospects.empty, delay=120) time.sleep(5) driver.click(Prospects.prospects_filter) driver.click(Filters.clear_filters) driver.wait_until_element_visible(Prospects.prospects_list, delay=120)
def test_interviews_settings(driver): LoginPage.login_recruiter(driver, '/c/p') driver.wait_until_element_visible(Dashboard.high_chart) driver.navigate_to(configs.url + '/c/p/administration/memberships') driver.click(Admin.interviews_settings) add_interview = driver.return_text(Admin.add_interview_button) assert add_interview == 'Add Interview'
def test_filters_completed_date_custom_valid(driver): LoginPage.login_recruiter(driver, '/c/p/candidates') driver.wait_until_element_visible(Filters.status, delay=120) driver.click(Filters.filters_dropdown) driver.wait_until_element_visible(Filters.recommendation_text) time.sleep(3) # Need some more time to load driver.click(Filters.completed_custom) dates_input = driver.find_elements(By.CSS_SELECTOR, Filters.dates_input_field['selector']) dates_input[0].send_keys(Keys.BACKSPACE * 10) dates_input[0].send_keys("05/01/2020") dates_input[1].click() dates_input[1].clear() dates_input[1].send_keys(Keys.BACKSPACE * 10) dates_input[1].send_keys("05/02/2020") dates_input[1].send_keys(Keys.RETURN) driver.click(Filters.apply_filters_button) driver.wait_until_element_visible(Candidates.completed) completed = driver.find_elements(By.XPATH, Candidates.completed['selector']) index = 0 if len(completed) > 0: while index < len(completed): get_date = completed[index] assert get_date.text == "05/01/2020" \ or get_date.text == "05/02/2020" index += 1
def test_positions_filter_by_status(driver): LoginPage.login_recruiter(driver, '/c/p/positions') driver.wait_until_element_visible(Positions.positions_statuses, delay=120) time.sleep(15) # This page has an extra loading icon driver.click(Positions.position_more_filters) filters_checkboxes = driver.find_elements( By.CSS_SELECTOR, Positions.positions_filters_checkboxes['selector']) filters_checkboxes[0].click() driver.click(Positions.position_apply_filters) time.sleep(12) position_status = driver.find_elements(By.XPATH, Positions.single_status['selector']) for status in position_status: assert status.text == "Published" driver.click(Positions.position_more_filters) filters_checkboxes = driver.find_elements( By.CSS_SELECTOR, Positions.positions_filters_checkboxes['selector']) filters_checkboxes[0].click() filters_checkboxes[1].click() driver.click(Positions.position_apply_filters) time.sleep(12) position_status = driver.find_elements(By.XPATH, Positions.single_status['selector']) for status in position_status: assert status.text == "Unpublished"
def test_download_selected_rows_icon(driver): LoginPage.login_recruiter(driver, '/c/p') driver.wait_until_element_visible(Dashboard.high_chart) driver.navigate_to(configs.url + '/c/p/candidates') candidate = Candidates(driver) driver.click(candidate.checkbox('1')) driver.click(Candidates.download_selected_rows_icon)
def test_incumbents_whitelist(driver): random_num = random.randint(1, 9**11) email = 'test_automation+test' + str(random_num) + '@example.com' LoginPage.login_recruiter(driver, '/c/p/incumbents') driver.wait_until_element_visible(Candidates.testorg_logo, delay=120) driver.wait_until_element_visible(Incumbent.label_text, delay=120) driver.click(Incumbent.whitelist_button) driver.click(Incumbent.position_dropdown) driver.wait_until_element_visible(Incumbent.active_position, delay=60) driver.click(Incumbent.active_position) driver.type_keys(Incumbent.email_textbox, email) driver.click(Incumbent.submit_button) link = driver.return_text(Incumbent.invite_link) driver.navigate_to(link) driver.type_keys(CreateAccountPage.first_name, 'testthirtycharacterstestthirtycharacters') # noqa driver.type_keys(CreateAccountPage.last_name, 'testthirtycharacterstestthirtycharacters') # noqa driver.type_keys(CreateAccountPage.email, email) driver.type_keys(CreateAccountPage.password, 't3st!ngg') driver.type_keys(CreateAccountPage.confirm_password, 't3st!ngg') driver.click(CreateAccountPage.language_dropdown) driver.click(CreateAccountPage.language_dropdown_english) driver.click(CreateAccountPage.submit_button) privacy_page = PrivacyPage(driver) time.sleep(5) privacy_page.click_consent_all() privacy_page.submit_consent() driver.wait_until_element_visible( GamesApplicationPage.action_items_complete_games_button)
def test_position_filter(driver): LoginPage.login_recruiter(driver, '/c/p/incumbents') driver.wait_until_element_visible(Filters.status, delay=120) time.sleep(5) # This page needs more time driver.click(Incumbent.filters_dropdown) checkboxes = driver.find_elements( By.CSS_SELECTOR, Incumbent.filters_position_check['selector']) checkboxes_text = driver.find_elements( By.CSS_SELECTOR, Incumbent.position_check_text['selector']) index = 0 while index < len(checkboxes): checkbox_text = checkboxes_text[index].get_attribute('data-for') checkboxes[index].click() driver.click(Filters.apply_filters_button) try: driver.wait_until_element_visible(Filters.status, delay=3) except Exception: position_text = driver.find_elements( By.XPATH, Filters.position_text['selector']) for element in position_text: assert element.text == checkbox_text driver.click(Incumbent.filters_dropdown) checkboxes = driver.find_elements( By.CSS_SELECTOR, Incumbent.filters_position_check['selector']) checkboxes_text = driver.find_elements( By.CSS_SELECTOR, Incumbent.position_check_text['selector']) checkboxes[index].click() index += 1
def test_incumbents_status_filter(driver): LoginPage.login_recruiter(driver, '/c/p/incumbents') driver.wait_until_element_visible(Filters.status, delay=120) driver.click(Incumbent.filters_dropdown) checkboxes = driver.find_elements( By.CSS_SELECTOR, Incumbent.filters_status_checkboxes['selector']) checkboxes_text = driver.find_elements( By.CSS_SELECTOR, Incumbent.status_checkboxes_text['selector']) index = 0 while index < len(checkboxes): checkbox_text = checkboxes_text[index].get_attribute('data-for') checkboxes[index].click() driver.click(Filters.apply_filters_button) driver.wait_until_element_visible(Filters.status) status_text = driver.find_elements(By.XPATH, Filters.status['selector']) if len(status_text) > 0: for element in status_text: assert element.text == checkbox_text driver.click(Incumbent.filters_dropdown) checkboxes = driver.find_elements( By.CSS_SELECTOR, Incumbent.filters_status_checkboxes['selector']) checkboxes_text = driver.find_elements( By.CSS_SELECTOR, Incumbent.status_checkboxes_text['selector']) checkboxes[index].click() index += 1
def test_items_per_page_video(driver): LoginPage.login_recruiter(driver, '/c/p/candidates') driver.click(Candidates.interviews_tab) driver.wait_until_element_visible(Candidates.interviews_status, delay=120) time.sleep(6) # Interviews page needs more time to load properly driver.click(Candidates.items_per_page_dropdown) time.sleep(1) driver.click(Candidates.ten_items_per_page) driver.wait_until_element_visible(Candidates.interviews_status) time.sleep(5) # Interviews page needs more time to load properly number_of_candidates = driver.find_elements( By.CSS_SELECTOR, Candidates.interviews_status['selector']) assert len(number_of_candidates) <= 10 driver.click(Candidates.items_per_page_dropdown) driver.click(Candidates.fifty_items_per_page) driver.wait_until_element_visible(Candidates.interviews_status) time.sleep(5) # Interviews page needs more time to load properly number_of_candidates = driver.find_elements( By.CSS_SELECTOR, Candidates.interviews_status['selector']) assert 25 < len(number_of_candidates) <= 50 driver.click(Candidates.items_per_page_dropdown) driver.click(Candidates.hundred_items_dropdown) driver.wait_until_element_visible(Candidates.interviews_status) time.sleep(5) # Interviews page needs more time to load properly number_of_candidates = driver.find_elements( By.CSS_SELECTOR, Candidates.interviews_status['selector']) assert 50 < len(number_of_candidates) <= 100
def test_filters_completed_date_12m(driver): LoginPage.login_recruiter(driver, '/c/p/candidates') driver.wait_until_element_visible(Filters.status, delay=120) driver.click(Filters.filters_dropdown) driver.wait_until_element_visible(Filters.recommendation_text) time.sleep(3) # Need some more time to load driver.click(Filters.completed_12m) driver.click(Filters.apply_filters_button) time.sleep(2) # Need some more time to load completed = driver.find_elements(By.XPATH, Candidates.completed['selector']) index = 0 while index < len(completed): get_date = completed[index] date_parsed = datetime.strptime(get_date.text, "%m/%d/%Y") date_difference = datetime.now() - date_parsed assert int(date_difference.days) <= 366 index += 1 pages = driver.find_elements(By.XPATH, Candidates.number_of_pages['selector']) pages[-1].click() time.sleep(2) # Need some more time to load completed = driver.find_elements(By.XPATH, Candidates.completed['selector']) index = 0 while index < len(completed): get_date = completed[index] date_parsed = datetime.strptime(get_date.text, "%m/%d/%Y") date_difference = datetime.now() - date_parsed assert int(date_difference.days) <= 366 index += 1
def test_interview_search_button_email(driver): LoginPage.login_recruiter(driver, '/c/p/candidates') driver.wait_until_element_visible(Candidates.completed, delay=120) driver.click(Candidates.interviews_tab) driver.type_keys(Candidates.candidate_search_field, '[email protected]\n') results = driver.return_elements(Candidates.search_results) assert len(results) <= 1
def test_nothing_ats(driver): LoginPage.login_recruiter(driver, '/c/p') driver.wait_until_element_visible(Candidates.candidates_button) # same interview as above, but ats link url = "/video/evaluation/9/1206998/?current_view=response" driver.navigate_to(configs.url + url) message = driver.return_text(Candidates.center_message) assert message == "Currently there is no content to view"
def test_remove_evaluator(driver): LoginPage.login_recruiter(driver, '/c/p/candidates/assessments/591795/video/1266714/') driver.wait_until_element_visible(Candidates.evaluators_checkboxes, delay=120) evaluators_checkboxes = driver.return_elements( Candidates.evaluators_checkboxes) evaluators_checkboxes[10].click() driver.click(Candidates.apply_assigned_evaluator) driver.wait_until_element_visible(Candidates.cancel_removing, delay=120)
def test_interview_name_search(driver): LoginPage.login_recruiter(driver, '/c/p/candidates') driver.wait_until_element_visible(Candidates.completed, delay=120) driver.click(Candidates.interviews_tab) driver.wait_until_element_visible(Candidates.interviews_status) time.sleep(8) driver.type_keys(Candidates.candidate_search_field, 'batman\n') driver.wait_until_element_visible(Candidates.batman_user, delay=120)
def test_items_per_page_games_filter(driver): LoginPage.login_recruiter(driver, '/c/p/candidates') driver.wait_until_element_visible(Candidates.completed, delay=120) candidate = Candidates(driver) driver.click(candidate.checkbox('3')) driver.click(Candidates.items_per_page_dropdown) driver.click(Candidates.ten_items_per_page) driver.wait_until_element_visible(Candidates.status_row_title)
def test_prospects_filter_flagged(driver): LoginPage.login_recruiter(driver, '/c/p/prospective-candidates') driver.wait_until_element_visible(Prospects.empty, delay=120) time.sleep(6) driver.click(Prospects.prospects_filter) driver.click(Filters.flagged_check) driver.click(Filters.invited_7d) driver.click(Filters.apply_filters_button) driver.wait_until_element_visible(Filters.full_flag, delay=120)
def test_positions_search(driver): LoginPage.login_recruiter(driver, '/c/p/positions') driver.wait_until_element_visible(Positions.positions_statuses, delay=120) time.sleep(15) driver.type_keys(Positions.search_field, 'test position alex\n') time.sleep(3) number_of_positions = driver.find_elements( By.CSS_SELECTOR, Positions.positions_statuses['selector']) assert len(number_of_positions) == 1
def test_candidate_card_interviews(driver): LoginPage.login_recruiter(driver, '/c/p') driver.wait_until_element_visible(Dashboard.high_chart, delay=120) time.sleep(7) driver.navigate_to(configs.url + '/c/p/candidates/assessments/199907/games') driver.click(Candidates.candidate_card_interview_tab) driver.wait_until_element_visible( Candidates.candidate_card_no_interview_text, delay=120)
def test_interviews_tab(driver): LoginPage.login_recruiter(driver, '/c/p') driver.wait_until_element_visible(Dashboard.high_chart) driver.navigate_to(configs.url + '/c/p/candidates') driver.wait_until_element_visible(Candidates.interviews_tab) driver.click(Candidates.interviews_tab) driver.wait_until_element_visible(Candidates.evaluators_column) driver.wait_until_element_visible(Candidates.score_column) driver.wait_until_element_visible(Candidates.interviews_status)
def test_select_all_on_page(driver): LoginPage.login_recruiter(driver, '/c/p/candidates') driver.wait_until_element_visible(Candidates.completed, delay=120) candidate = Candidates(driver) driver.click(candidate.checkbox('1')) driver.click(Candidates.next_page_arrow) driver.wait_until_element_visible(Candidates.completed) driver.click(Candidates.previous_page_arrow) driver.wait_until_element_visible(Candidates.archive_25_rows)