diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d302ff0a128d57a68124d2cb0cf9c90212063e97..37c9e1ded60d636729fe151333a1557219cb0a5b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -58,17 +58,18 @@ test_flake8: # ----------------------------- Frontend subsection -------------------------- # .test_template_frontend: &test_definition_frontend - image: node:carbon + image: crbanman/nightwatch + when: manual before_script: - cd frontend/ test_frontend: <<: *test_definition_frontend - when: manual +# when: manual stage: test script: - yarn install - - yarn test --single-run + - yarn test:e2e cache: key: "$CI_JOB_NAME" paths: diff --git a/frontend/nightwatch.json b/frontend/nightwatch.json index 261fbe74a916b532b1294fb209f0009d5a4789c3..333b96e583a946f42104f107337df4cee4546a3b 100644 --- a/frontend/nightwatch.json +++ b/frontend/nightwatch.json @@ -1,10 +1,5 @@ { "globals_path": "nightwatch_globals", - "selenium": { - "cli_args": { - "webdriver.gecko.driver": "/usr/bin/geckodriver" - } - }, "test_settings": { "chrome": { "desiredCapabilities": { diff --git a/frontend/src/components/feedback_list/FeedbackSearchOptions.vue b/frontend/src/components/feedback_list/FeedbackSearchOptions.vue index 439e9bae7a99fe27b4c338cc8f7bbfaffdb6ac38..e93d3d7b0bc2e9eed3199bf6cfcbec4a81c58466 100644 --- a/frontend/src/components/feedback_list/FeedbackSearchOptions.vue +++ b/frontend/src/components/feedback_list/FeedbackSearchOptions.vue @@ -67,7 +67,7 @@ import {FeedbackSearchOptions as SearchOptions} from '@/store/modules/feedback_l import {mapStateToComputedGetterSetter} from '@/util/helpers' import {Authentication} from '@/store/modules/authentication' import { actions } from '@/store/actions' -import { getters } from '@/store/getters'; +import { getters } from '@/store/getters' @Component export default class FeedbackSearchOptions extends Vue { @@ -80,12 +80,12 @@ export default class FeedbackSearchOptions extends Vue { return this.tutors.map(tutor => tutor.username) } - get showFinal () { return SearchOptions.state.showFinal} - get searchOtherUserComments () { return SearchOptions.state.searchOtherUserComments} - get caseSensitive () { return SearchOptions.state.caseSensitive} - get useRegex () { return SearchOptions.state.useRegex} - get filterByTutors () { return SearchOptions.state.filterByTutors} - get filterByStage () { return SearchOptions.state.filterByStage} + get showFinal () { return SearchOptions.state.showFinal } + get searchOtherUserComments () { return SearchOptions.state.searchOtherUserComments } + get caseSensitive () { return SearchOptions.state.caseSensitive } + get useRegex () { return SearchOptions.state.useRegex } + get filterByTutors () { return SearchOptions.state.filterByTutors } + get filterByStage () { return SearchOptions.state.filterByStage } set showFinal (val) { SearchOptions.SET_SHOW_FINAL(val) diff --git a/frontend/src/components/student/ExamInformation.vue b/frontend/src/components/student/ExamInformation.vue index a2656442904a862395c6a903f533d33d7859c982..ac0e01485d6c27a006ba323a9a8b0ab2530a2d3b 100644 --- a/frontend/src/components/student/ExamInformation.vue +++ b/frontend/src/components/student/ExamInformation.vue @@ -22,7 +22,7 @@ <script lang="ts"> import {Vue, Component, Prop} from 'vue-property-decorator' -import { Exam } from '@/models'; +import { Exam } from '@/models' @Component export default class ExamInformation extends Vue { diff --git a/frontend/src/components/student_list/StudentList.vue b/frontend/src/components/student_list/StudentList.vue index 3ef8a6ef7a48383fbbc54565f0e2205a7713f84a..bf14a68425e228a3df4a25bfd90644d898a9b29d 100644 --- a/frontend/src/components/student_list/StudentList.vue +++ b/frontend/src/components/student_list/StudentList.vue @@ -109,7 +109,7 @@ import {mapActions, mapState} from 'vuex' import StudentListMenu from '@/components/student_list/StudentListMenu' import StudentListReverseMapper from '@/components/student_list/StudentListReverseMapper' import { changeActiveForUser } from '@/api' -import { getters } from '@/store/getters'; +import { getters } from '@/store/getters' export default { components: { diff --git a/frontend/src/pages/student/StudentLayout.vue b/frontend/src/pages/student/StudentLayout.vue index b3c5d83aec100b5f0c2781451fdd049396768f6b..6c8ff0d49dc8b4fd2cc62d6328e21d3c20b67b32 100644 --- a/frontend/src/pages/student/StudentLayout.vue +++ b/frontend/src/pages/student/StudentLayout.vue @@ -44,7 +44,7 @@ import {UI} from '@/store/modules/ui' import BaseLayout from '@/components/BaseLayout' import ExamInformation from '@/components/student/ExamInformation' -import { StudentPage } from '@/store/modules/student-page'; +import { StudentPage } from '@/store/modules/student-page' export default { components: {BaseLayout, ExamInformation}, name: 'student-layout', @@ -60,10 +60,10 @@ export default { } }, computed: { - moduleReference () { return StudentPage.state.exam.moduleReference}, - submissions () { return StudentPage.state.submissionsForList}, - exam () { return StudentPage.state.exam}, - visited () { return StudentPage.state.visited}, + moduleReference () { return StudentPage.state.exam.moduleReference }, + submissions () { return StudentPage.state.submissionsForList }, + exam () { return StudentPage.state.exam }, + visited () { return StudentPage.state.visited }, mini () { return UI.state.mini }, diff --git a/frontend/src/pages/student/StudentPage.vue b/frontend/src/pages/student/StudentPage.vue index ea4cbbb7f62084fb47f4597e46b04f9b17c01c76..13729b0a7a62770471369d39d11ccd533f860b2c 100644 --- a/frontend/src/pages/student/StudentPage.vue +++ b/frontend/src/pages/student/StudentPage.vue @@ -16,7 +16,7 @@ import {mapState} from 'vuex' import StudentLayout from './StudentLayout.vue' import SubmissionList from '@/components/student/SubmissionList.vue' import ExamInformation from '@/components/student/ExamInformation.vue' -import { StudentPage } from '@/store/modules/student-page'; +import { StudentPage } from '@/store/modules/student-page' export default { components: { @@ -32,10 +32,10 @@ export default { } }, computed: { - studentName () { return StudentPage.state.studentName}, - exam () { return StudentPage.state.exam}, - submissions () { return StudentPage.state.submissionsForList}, - loaded () { return StudentPage.state.loaded} + studentName () { return StudentPage.state.studentName }, + exam () { return StudentPage.state.exam }, + submissions () { return StudentPage.state.submissionsForList }, + loaded () { return StudentPage.state.loaded } } } </script> diff --git a/frontend/src/pages/student/StudentSubmissionPage.vue b/frontend/src/pages/student/StudentSubmissionPage.vue index 5cfc681b9577fa1ac19a349e45698ef44bba2a4b..a15579dbab33f8e4402724ab13a0675e900cfcb3 100644 --- a/frontend/src/pages/student/StudentSubmissionPage.vue +++ b/frontend/src/pages/student/StudentSubmissionPage.vue @@ -82,8 +82,8 @@ export default { }, submission () { return SubmissionNotes.submission }, showFeedback: function (state) { return SubmissionNotes.state.ui.showFeedback }, - submissionType () { return StudentPage.state.submissionData[this.id].type}, - feedback () { return StudentPage.state.submissionData[this.$route.params.id].feedback} + submissionType () { return StudentPage.state.submissionData[this.id].type }, + feedback () { return StudentPage.state.submissionData[this.$route.params.id].feedback } }, methods: { onRouteMountOrUpdate (routeId) { diff --git a/frontend/src/store/modules/feedback_list/feedback-search-options.ts b/frontend/src/store/modules/feedback_list/feedback-search-options.ts index b93895a5d4d55fb5b3fdc57c70e9f8feae5607cf..57389646659d149110947f0beff26e1cb5db871e 100644 --- a/frontend/src/store/modules/feedback_list/feedback-search-options.ts +++ b/frontend/src/store/modules/feedback_list/feedback-search-options.ts @@ -1,7 +1,7 @@ import {Module} from 'vuex' import {RootState} from '@/store/store' import { getStoreBuilder } from 'vuex-typex' -import { Subscription } from '@/models'; +import { Subscription } from '@/models' export const namespace = 'feedbackSearchOptions' diff --git a/frontend/src/store/modules/student-page.ts b/frontend/src/store/modules/student-page.ts index cfe030b33d2871a9568791f4f960ea0c8d2647b7..3dfc6294b605d8766eb43544fda42ab7cb54324a 100644 --- a/frontend/src/store/modules/student-page.ts +++ b/frontend/src/store/modules/student-page.ts @@ -2,7 +2,7 @@ import {fetchStudentSelfData, fetchStudentSubmissions} from '@/api' import {Exam, Submission, SubmissionList} from '@/models' import {RootState} from '@/store/store' import {Module} from 'vuex' -import { getStoreBuilder } from 'vuex-typex'; +import { getStoreBuilder } from 'vuex-typex' export interface StudentPageState { studentName: string diff --git a/frontend/vue.config.js b/frontend/vue.config.js index d321253997a1fc75cc8b2ed0b9aabd624ded3303..b6e65a96dbd66e91658033eb70dff4a20bc94650 100644 --- a/frontend/vue.config.js +++ b/frontend/vue.config.js @@ -8,11 +8,9 @@ module.exports = { allowedHosts: ['localhost'], host: 'localhost' }, - configureWebpack: { - resolve: { - alias: { - '@': `${projectRoot}/src` - } - } + configureWebpack: config => { + config.resolve.alias['@'] = `${projectRoot}/src` + // keep_fnames ist set to true because vuex-typex is dependant on the function names + config.optimization.minimizer[0].options.uglifyOptions.keep_fnames = true } }