Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • j.michal/grady
1 result
Show changes
Commits on Source (2)
...@@ -63,7 +63,12 @@ const submissionGetter = mb.read(function submission (state, getters) { ...@@ -63,7 +63,12 @@ const submissionGetter = mb.read(function submission (state, getters) {
? getters.submissionType.programmingLanguage ? getters.submissionType.programmingLanguage
: 'c' : 'c'
const highlighted = hljs.highlight(language, state.submission.text || '', true).value const highlighted = hljs.highlight(language, state.submission.text || '', true).value
let commentFlag = false
return highlighted.split('\n').reduce((acc: {[k: number]: string}, cur, index) => { return highlighted.split('\n').reduce((acc: {[k: number]: string}, cur, index) => {
if (cur.includes("/*")) commentFlag = true
cur = commentFlag ? '<span class="hljs-comment">' + cur + '</span>' : cur
if (cur.includes("*/")) commentFlag = false // so that the ending line will also be greyed out
acc[index + 1] = cur acc[index + 1] = cur
return acc return acc
}, {}) }, {})
......
import datetime import datetime
import time
import logging import logging
from django.test import LiveServerTestCase from django.test import LiveServerTestCase
from selenium import webdriver from selenium import webdriver
...@@ -45,7 +44,7 @@ class TestAutoLogout(LiveServerTestCase): ...@@ -45,7 +44,7 @@ class TestAutoLogout(LiveServerTestCase):
def test_auto_logout_can_continue(self): def test_auto_logout_can_continue(self):
with self.settings(JWT_AUTH={ with self.settings(JWT_AUTH={
'JWT_EXPIRATION_DELTA': datetime.timedelta(seconds=5), 'JWT_EXPIRATION_DELTA': datetime.timedelta(seconds=15),
'JWT_ALLOW_REFRESH': True, 'JWT_ALLOW_REFRESH': True,
} }
): ):
...@@ -54,12 +53,11 @@ class TestAutoLogout(LiveServerTestCase): ...@@ -54,12 +53,11 @@ class TestAutoLogout(LiveServerTestCase):
'return sessionStorage["token"]' 'return sessionStorage["token"]'
) )
logout_dialog = self.browser.find_element_by_id('logout-dialog') logout_dialog = self.browser.find_element_by_id('logout-dialog')
WebDriverWait(self.browser, 5).until( WebDriverWait(self.browser, 15).until(
ec.visibility_of_element_located((By.ID, 'logout-dialog'))) ec.visibility_of_element_located((By.ID, 'logout-dialog')))
logout_dialog.find_element_by_id('continue-btn').click() logout_dialog.find_element_by_id('continue-btn').click()
# explicit sleep is unfortunately necessary here, since we need to wait WebDriverWait(self.browser, 10).until(
# for the initial token to expire and the site to be the same ec.invisibility_of_element_located((By.ID, 'logout-dialog')))
time.sleep(2)
self.assertNotIn('login', self.browser.current_url) self.assertNotIn('login', self.browser.current_url)
new_token = self.browser.execute_script( new_token = self.browser.execute_script(
'return sessionStorage["token"]' 'return sessionStorage["token"]'
......
...@@ -47,7 +47,7 @@ class ExportTestModal(LiveServerTestCase): ...@@ -47,7 +47,7 @@ class ExportTestModal(LiveServerTestCase):
fact.SubmissionFactory() fact.SubmissionFactory()
self._login() self._login()
WebDriverWait(self.browser, 3).until(export_btn_is_red) WebDriverWait(self.browser, 10).until(export_btn_is_red)
def test_export_warning_tooltip_uncorrected_submissions(self): def test_export_warning_tooltip_uncorrected_submissions(self):
fact.SubmissionFactory() fact.SubmissionFactory()
......
...@@ -55,20 +55,20 @@ class UntestedParent: ...@@ -55,20 +55,20 @@ class UntestedParent:
# stage can be 'initial', 'validate', or 'conflict' # stage can be 'initial', 'validate', or 'conflict'
def _go_to_subscription(self, stage='initial', sub_type=None): def _go_to_subscription(self, stage='initial', sub_type=None):
tasks = self.browser.find_element_by_name('subscription-list') tasks = self.browser.find_element_by_name('subscription-list')
WebDriverWait(self.browser, 3).until(subscriptions_loaded_cond(tasks)) WebDriverWait(self.browser, 10).until(subscriptions_loaded_cond(tasks))
tab = tasks.find_element_by_xpath(f'//*[contains(text(), "{stage}")]') tab = tasks.find_element_by_xpath(f'//*[contains(text(), "{stage}")]')
tab.click() tab.click()
sub_type = sub_type if sub_type is not None else self.sub_type sub_type = sub_type if sub_type is not None else self.sub_type
sub_type_xpath = f'//*[contains(text(), "{sub_type.name}") ' \ sub_type_xpath = f'//*[contains(text(), "{sub_type.name}") ' \
f'and not(contains(@class, "inactive"))]' f'and not(contains(@class, "inactive"))]'
WebDriverWait(self.browser, 3).until( WebDriverWait(self.browser, 10).until(
ec.element_to_be_clickable((By.XPATH, sub_type_xpath)), ec.element_to_be_clickable((By.XPATH, sub_type_xpath)),
message="SubmissionType not clickable" message="SubmissionType not clickable"
) )
sub_type_el = tasks.find_element_by_xpath(sub_type_xpath) sub_type_el = tasks.find_element_by_xpath(sub_type_xpath)
sub_type_el.click() sub_type_el.click()
WebDriverWait(self.browser, 3).until(ec.url_contains('subscription')) WebDriverWait(self.browser, 10).until(ec.url_contains('subscription'))
def write_comments_on_lines(self, line_comment_tuples): def write_comments_on_lines(self, line_comment_tuples):
""" line_comment_tuples is an iterable containing tuples of """ line_comment_tuples is an iterable containing tuples of
...@@ -120,7 +120,7 @@ class UntestedParent: ...@@ -120,7 +120,7 @@ class UntestedParent:
self.assertIn(test.name, name_label.text) self.assertIn(test.name, name_label.text)
self.assertIn(test.label, name_label.text) self.assertIn(test.label, name_label.text)
test_output = tests.find_element_by_name('test-output') test_output = tests.find_element_by_name('test-output')
WebDriverWait(self.browser, 3).until(ec.visibility_of(test_output)) WebDriverWait(self.browser, 10).until(ec.visibility_of(test_output))
self.assertEqual(test.annotation, test_output.text) self.assertEqual(test.annotation, test_output.text)
def wait_until_code_changes(self, code): def wait_until_code_changes(self, code):
...@@ -140,7 +140,7 @@ class UntestedParent: ...@@ -140,7 +140,7 @@ class UntestedParent:
self.browser.find_element_by_id('score-full').click() self.browser.find_element_by_id('score-full').click()
submit_btn = self.browser.find_element_by_id('submit-feedback') submit_btn = self.browser.find_element_by_id('submit-feedback')
submit_btn.click() submit_btn.click()
WebDriverWait(self.browser, 3).until( WebDriverWait(self.browser, 10).until(
self.wait_until_code_changes(code) self.wait_until_code_changes(code)
) )
submission_for_code = Submission.objects.get(text=code) submission_for_code = Submission.objects.get(text=code)
...@@ -162,7 +162,7 @@ class UntestedParent: ...@@ -162,7 +162,7 @@ class UntestedParent:
self.browser.find_element_by_id('score-zero').click() self.browser.find_element_by_id('score-zero').click()
self.write_comments_on_lines([(0, 'A comment')]) self.write_comments_on_lines([(0, 'A comment')])
self.browser.find_element_by_id('submit-feedback').click() self.browser.find_element_by_id('submit-feedback').click()
WebDriverWait(self.browser, 3).until(self.wait_until_code_changes(code)) WebDriverWait(self.browser, 10).until(self.wait_until_code_changes(code))
submission_for_code = Submission.objects.get(text=code) submission_for_code = Submission.objects.get(text=code)
self.assertEqual(0, submission_for_code.feedback.score) self.assertEqual(0, submission_for_code.feedback.score)
...@@ -183,7 +183,7 @@ class UntestedParent: ...@@ -183,7 +183,7 @@ class UntestedParent:
submit_btn = self.browser.find_element_by_id('submit-feedback') submit_btn = self.browser.find_element_by_id('submit-feedback')
submit_btn.click() submit_btn.click()
WebDriverWait(self.browser, 3).until( WebDriverWait(self.browser, 10).until(
self.wait_until_code_changes(code) self.wait_until_code_changes(code)
) )
submission_for_code = Submission.objects.get(text=code) submission_for_code = Submission.objects.get(text=code)
...@@ -206,7 +206,7 @@ class UntestedParent: ...@@ -206,7 +206,7 @@ class UntestedParent:
self._go_to_subscription() self._go_to_subscription()
code = self._reconstruct_submission_code() code = self._reconstruct_submission_code()
self.browser.find_element_by_id('skip-submission').click() self.browser.find_element_by_id('skip-submission').click()
WebDriverWait(self.browser, 3).until(self.wait_until_code_changes(code)) WebDriverWait(self.browser, 10).until(self.wait_until_code_changes(code))
def test_can_validate_submission(self): def test_can_validate_submission(self):
self._login() self._login()
...@@ -215,7 +215,7 @@ class UntestedParent: ...@@ -215,7 +215,7 @@ class UntestedParent:
self.write_comments_on_lines([(0, 'A comment by me')]) self.write_comments_on_lines([(0, 'A comment by me')])
self.browser.find_element_by_id('score-zero').click() self.browser.find_element_by_id('score-zero').click()
self.browser.find_element_by_id('submit-feedback').click() self.browser.find_element_by_id('submit-feedback').click()
WebDriverWait(self.browser, 3).until(self.wait_until_code_changes(code)) WebDriverWait(self.browser, 10).until(self.wait_until_code_changes(code))
reset_browser_after_test(self.browser, self.live_server_url) # logs out user reset_browser_after_test(self.browser, self.live_server_url) # logs out user
user_snd = 'tutor_snd' user_snd = 'tutor_snd'
...@@ -227,7 +227,7 @@ class UntestedParent: ...@@ -227,7 +227,7 @@ class UntestedParent:
self.write_comments_on_lines([(0, 'I disagree'), (1, 'Full points!')]) self.write_comments_on_lines([(0, 'I disagree'), (1, 'Full points!')])
self.browser.find_element_by_id('score-full').click() self.browser.find_element_by_id('score-full').click()
self.browser.find_element_by_id('submit-feedback').click() self.browser.find_element_by_id('submit-feedback').click()
WebDriverWait(self.browser, 5).until(ec.url_contains('subscription/ended')) WebDriverWait(self.browser, 10).until(ec.url_contains('subscription/ended'))
submission_for_code = Submission.objects.get(text=code) submission_for_code = Submission.objects.get(text=code)
self.assertEqual(self.sub_type.full_score, submission_for_code.feedback.score) self.assertEqual(self.sub_type.full_score, submission_for_code.feedback.score)
self.assertEqual(3, submission_for_code.feedback.feedback_lines.count()) self.assertEqual(3, submission_for_code.feedback.feedback_lines.count())
......
...@@ -50,7 +50,7 @@ class UntestedParent: ...@@ -50,7 +50,7 @@ class UntestedParent:
tasks = self.browser.find_element_by_name('subscription-list') tasks = self.browser.find_element_by_name('subscription-list')
title = tasks.find_element_by_class_name('v-toolbar__title') title = tasks.find_element_by_class_name('v-toolbar__title')
self.assertEqual('Tasks', title.text) self.assertEqual('Tasks', title.text)
WebDriverWait(self.browser, 6).until(subscriptions_loaded_cond(tasks)) WebDriverWait(self.browser, 10).until(subscriptions_loaded_cond(tasks))
subscription_links = extract_hrefs_hashes( subscription_links = extract_hrefs_hashes(
tasks.find_elements_by_tag_name('a') tasks.find_elements_by_tag_name('a')
) )
......
...@@ -102,7 +102,7 @@ class LoginPageTest(LiveServerTestCase): ...@@ -102,7 +102,7 @@ class LoginPageTest(LiveServerTestCase):
password_input = self.browser.find_element_by_xpath('//input[@aria-label="Password"]') password_input = self.browser.find_element_by_xpath('//input[@aria-label="Password"]')
password_input.send_keys('p') password_input.send_keys('p')
self.browser.find_element_by_xpath('//button[@type="submit"]').send_keys(Keys.ENTER) self.browser.find_element_by_xpath('//button[@type="submit"]').send_keys(Keys.ENTER)
WebDriverWait(self.browser, 3).until(ec.url_contains('/home')) WebDriverWait(self.browser, 10).until(ec.url_contains('/home'))
def test_tutor_can_login(self): def test_tutor_can_login(self):
tutor = self.test_data['tutors'][0] tutor = self.test_data['tutors'][0]
...@@ -132,7 +132,7 @@ class LoginPageTest(LiveServerTestCase): ...@@ -132,7 +132,7 @@ class LoginPageTest(LiveServerTestCase):
password_input.send_keys(password) password_input.send_keys(password)
register_submit_el = self.browser.find_element_by_id('register-submit') register_submit_el = self.browser.find_element_by_id('register-submit')
register_submit_el.click() register_submit_el.click()
WebDriverWait(self.browser, 3).until_not(ec.visibility_of(register_submit_el)) WebDriverWait(self.browser, 10).until_not(ec.visibility_of(register_submit_el))
tutor = UserAccount.objects.get(username=username) tutor = UserAccount.objects.get(username=username)
self.assertEqual(UserAccount.TUTOR, tutor.role) self.assertEqual(UserAccount.TUTOR, tutor.role)
self.assertFalse(tutor.is_active, "Tutors should be inactive after registered") self.assertFalse(tutor.is_active, "Tutors should be inactive after registered")
...@@ -26,7 +26,7 @@ def login(browser, live_server_url, username, password='p'): ...@@ -26,7 +26,7 @@ def login(browser, live_server_url, username, password='p'):
password_input = browser.find_element_by_xpath('//input[@aria-label="Password"]') password_input = browser.find_element_by_xpath('//input[@aria-label="Password"]')
password_input.send_keys(password) password_input.send_keys(password)
browser.find_element_by_xpath('//button[@type="submit"]').send_keys(Keys.ENTER) browser.find_element_by_xpath('//button[@type="submit"]').send_keys(Keys.ENTER)
WebDriverWait(browser, 3).until(ec.url_contains('/home')) WebDriverWait(browser, 10).until(ec.url_contains('/home'))
def reset_browser_after_test(browser: webdriver.Firefox, live_server_url): def reset_browser_after_test(browser: webdriver.Firefox, live_server_url):
......