diff --git a/frontend/src/components/InstanceActions.vue b/frontend/src/components/InstanceActions.vue index f80f89900df25afd53b548bc484d05e20021c895..694e557b536270a613bf32dae055e3d0ddd2b30d 100644 --- a/frontend/src/components/InstanceActions.vue +++ b/frontend/src/components/InstanceActions.vue @@ -4,12 +4,12 @@ <template v-for="(a, i) in actions"> <v-tooltip v-if="a.condition()" - :id="a.id" :key="i" bottom > <template #activator="{ on }"> <v-btn + :id="a.id" text icon @click="a.action" @@ -48,14 +48,14 @@ export default { text: 'Import exam data', action: () => { this.displayComponent = ImportDialog }, condition: () => Authentication.isReviewer, - id: 'import-data-list-tile' + id: 'import-data-list-item' }, { icon: 'settings', text: 'Instance settings', action: () => { this.displayComponent = ConfigDialog }, condition: () => Authentication.isReviewer, - id: 'configure-instance-tile', + id: 'configure-instance-item', }, ] } diff --git a/frontend/src/components/submission_type/SubmissionType.vue b/frontend/src/components/submission_type/SubmissionType.vue index 8c53b8dc2dfa7ce82da8a63812406d3c7136b856..b4427ec76589874be691578869997458244bc6e5 100644 --- a/frontend/src/components/submission_type/SubmissionType.vue +++ b/frontend/src/components/submission_type/SubmissionType.vue @@ -33,6 +33,7 @@ </v-expansion-panel-header> <v-expansion-panel-content v-if="item.title === 'Description'" + class="type-description" > <!-- eslint-disable-next-line --> <div class="description-content" v-html="item.text"/> diff --git a/functional_tests/test_export_modal.py b/functional_tests/test_export_modal.py index 85e2f601f94dcd96d1d022d783e609361326e647..6ca3a02b0a761bbf76d83bc96199c8957b114ec7 100644 --- a/functional_tests/test_export_modal.py +++ b/functional_tests/test_export_modal.py @@ -2,6 +2,7 @@ import json import os from pathlib import Path from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.common.action_chains import ActionChains from core.models import UserAccount from functional_tests.util import GradyTestCase, login, reset_browser_after_test @@ -60,6 +61,9 @@ class ExportTestModal(GradyTestCase): def test_export_warning_tooltip_uncorrected_submissions(self): fact.SubmissionFactory() self._login() + self.browser.execute_script( + "document.getElementById('export-btn').dispatchEvent(new Event('mouseenter'));" + ) tooltip_uncorrected = self.browser.find_element_by_id('uncorrected-tooltip') self.assertNotEqual(None, tooltip_uncorrected) self.assertRaises(Exception, self.browser.find_element_by_id, 'corrected-tooltip') @@ -76,6 +80,9 @@ class ExportTestModal(GradyTestCase): def test_export_all_good_tooltip_all_corrected(self): fact.SubmissionTypeFactory() self._login() + self.browser.execute_script( + "document.getElementById('export-btn').dispatchEvent(new Event('mouseenter'));" + ) tooltip_corrected = self.browser.find_element_by_id('corrected-tooltip') self.assertNotEqual(None, tooltip_corrected) self.assertRaises(Exception, self.browser.find_element_by_id, 'uncorrected-tooltip') diff --git a/functional_tests/test_feedback_label_system.py b/functional_tests/test_feedback_label_system.py index e6b936a9e246909534c12145635ff9a4218eeacc..1bff62cc6d2fa23775be358f8ced3b8e9dd8ff59 100644 --- a/functional_tests/test_feedback_label_system.py +++ b/functional_tests/test_feedback_label_system.py @@ -1,6 +1,7 @@ from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as ec +from selenium.webdriver.common.keys import Keys from core.models import FeedbackLabel from functional_tests.util import (GradyTestCase, login, reset_browser_after_test, @@ -8,7 +9,6 @@ from functional_tests.util import (GradyTestCase, login, reset_browser_after_tes reconstruct_submission_code, wait_until_code_changes) from util import factory_boys as fact - class FeedbackLabelSystemTest(GradyTestCase): username = None password = None @@ -51,18 +51,20 @@ class FeedbackLabelSystemTest(GradyTestCase): WebDriverWait(self.browser, 2).until( ec.element_to_be_clickable((By.ID, 'label-update-autocomplete')) ) - self.browser.find_element_by_id('label-update-autocomplete').send_keys(old_name) - self.browser.find_element_by_link_text(old_name).click() + old_name_input = self.browser.find_element_by_id('label-update-autocomplete') + old_name_input.click() + old_name_input.send_keys(old_name) + self.browser.find_element_by_class_name('label-updater-item').click() self.browser.find_element_by_xpath( - '//div[@class="v-window-item" and @style=""]//input[@id="label-name"]' + '//div[@class="v-window-item--active"]//input[@id="label-name"]' ).send_keys(new_name) self.browser.find_element_by_xpath( - '//div[@class="v-window-item" and @style=""]//textarea[@id="label-description"]' + '//div[@class="v-window-item--active"]//textarea[@id="label-description"]' ).send_keys(description) self.browser.find_elements_by_xpath( - '//div[@class="v-window-item" and @style=""]//li[@class="vc-compact-color-item"]' + '//div[@class="v-window-item--active"]//li[@class="vc-compact-color-item"]' )[colour_num].click() self.browser.find_element_by_id('update-label-btn').click() WebDriverWait(self.browser, 10).until( @@ -70,31 +72,35 @@ class FeedbackLabelSystemTest(GradyTestCase): ) def assign_label_to_feedback(self, name): - self.browser.find_element_by_xpath( + label_input = self.browser.find_element_by_xpath( '//div[@id="feedback-label-selector"]//input[@id="label-add-autocomplete"]' - ).send_keys(name) - self.browser.find_element_by_link_text(name).click() + ) + label_input.click() + label_input.send_keys(name) + self.browser.find_element_by_class_name('label-adder-item').click() def remove_label_from_feedback(self, name): self.browser.find_element_by_xpath( f'//div[@id="feedback-label-selector"]//span[@class="v-chip__content" ' - f'and contains(text(), "{name}")]//div[@class="v-chip__close"]' + f'and contains(text(), "{name}")]//button[@class="v-chip__close"]' ).click() def assign_label_to_comment_line(self, line, name): self.browser.find_element_by_xpath( f'//span[@class="v-btn__content" and contains(text(), "{line}")]' ).click() - self.browser.find_element_by_xpath( + label_input = self.browser.find_element_by_xpath( '//div[@id="comment-label-selector"]//input[@id="label-add-autocomplete"]' - ).send_keys(name) - self.browser.find_element_by_link_text(name).click() + ) + label_input.click() + label_input.send_keys(name) + self.browser.find_element_by_class_name('label-adder-item').click() self.browser.find_element_by_id('submit-comment').click() def remove_label_from_comment_line(self, line, name): self.browser.find_element_by_xpath( f'//tr[@id="sub-line-{line}"]//span[contains(text(), "{name}")]' - '//div[@class="v-chip__close"]' + '//button[@class="v-chip__close"]' ).click() def test_can_create_label(self): @@ -297,6 +303,7 @@ class FeedbackLabelSystemTest(GradyTestCase): go_to_subscription(self, stage='validate') self.browser.find_element_by_id('feedback-visibility-toggle').click() + self.remove_label_from_comment_line(comment_line, 'test') added = self.browser.find_elements_by_xpath( f'//tr[@id="sub-line-{comment_line}"]//div[contains(text(), "WILL BE ADDED")]/..//*' diff --git a/functional_tests/test_import.py b/functional_tests/test_import.py index 44b1c575591ec74eb13dc4a613f970a3f9ef5064..e4c5d341bb5a381fe28a1267a34f0fc4d5cac7d0 100644 --- a/functional_tests/test_import.py +++ b/functional_tests/test_import.py @@ -34,7 +34,6 @@ class TestImport(GradyTestCase): def test_reviewer_can_import_data(self): self._login() - self.browser.find_element_by_id("user-options").click() self.browser.find_element_by_id("import-data-list-item").click() self.browser.execute_script( "document.getElementById('file-input').style.display='block';"