Some karma tests could not be run individually
Background
In the process of big refactoring gitlab-foss!32798 (merged) I've got unrelated karma test failure. The main reason for this one was that test I've refactored from karma to Jest was mutating shared fixture and another test was relying on mutated data
Problem
I've decided to check, how many karma tests are failing if run separately. This was done using script (caution: takes forever to complete):
find spec/javascripts -name "*spec.js" -exec sh -c 'yarn run karma -f $0 2>/dev/null >/dev/null || echo $0' {} \;
and resulted in 28 failed tests for multiple reasons. Some failures were pretty trivial (relying on some our legacy global stuff), but some reveal issues with our fixture generation, require loops (which could produce all kind of tricky behavior, bundle bloating, etc.), tests relying on another test fixtures, etc.
Possible solution
Since running each test individually is very time consuming and we have 500+ karma tests ATM, it might be a good idea add a task for our CI pipeline which runs modified karma tests separated from other suites. This allows us to identify and catch problems with our codebase
Discovered issues
import '~/behaviors/markdown/render_gfm';
in component
missing Merge-request with fix: gitlab-foss!32830 (merged)
spec/javascripts/notes/components/note_body_spec.js
spec/javascripts/vue_shared/components/markdown/field_spec.js
-
spec/javascripts/blob/viewer/index_spec.js
(here error is suppressed by catch, making it really tricky to figure out)
gl.utils.spriteIcon
helper
usage of global Merge-request with fix: !16745 (merged)
spec/javascripts/image_diff/helpers/badge_helper_spec.js
spec/javascripts/image_diff/helpers/comment_indicator_helper_spec.js
import '~/gl_dropdown';
in component
missing Merge-request with fix: !16907 (merged)
spec/javascripts/namespace_select_spec.js
spec/javascripts/search_spec.js
spec/javascripts/ci_variable_list/ci_variable_list_spec.js
spec/javascripts/ci_variable_list/ajax_variable_list_spec.js
spec/javascripts/new_branch_spec.js
spec/javascripts/sidebar/sidebar_move_issue_spec.js
spec/javascripts/issue_show/components/form_spec.js
spec/javascripts/issue_show/components/fields/description_template_spec.js
spec/javascripts/create_item_dropdown_spec.js
spec/javascripts/todos_spec.js
import '~/flash';
in component
missing Merge-request with fix: !16731 (merged)
spec/javascripts/vue_mr_widget/components/states/mr_widget_wip_spec.js
Vue.use(Vuex)
in test
missing Merge-request with fix: gitlab-foss!32837 (merged)
spec/javascripts/reports/components/modal_open_name_spec.js
other
-
spec/javascripts/create_cluster/gke_cluster/components/gke_project_id_dropdown_spec.js
- missing mock of globalgapi
(fix: !16688 (merged)) -
spec/javascripts/diffs/store/actions_spec.js
- corrupted mock data by other spec - (fix: ) -
spec/javascripts/boards/board_card_spec.js
- missing importListIssue
suppressed by empty catch block (fix: gitlab-foss!32850 (merged)) -
spec/javascripts/dropzone_input_spec.js
- invalid usage ofFormData
(fix: gitlab-foss!32865 (merged)) -
spec/javascripts/blob/blob_file_dropzone_spec.js
- invalid usage ofFormData
(fix: gitlab-foss!32865 (merged)) -
spec/javascripts/zen_mode_spec.js
- this one is complex (fix: !16730 (merged)). Reasons:- we are not initializing notes in spec. Component was consuming some weird HTML before
- our fixture generator cuts script with
application/json
lang, which is required for notes initialization
-
spec/javascripts/merge_request_spec.js
- missingsetTimeout
wrap for expect, fixture HTML removed by test runner before test ends (fix: gitlab-foss!32867 (merged))
recursive dependencies
-
image_diff/image_diff_spec.js
(fix: !16689 (merged) )
graph LR;
image_diff/image_diff --> image_diff/helpers/index
image_diff/helpers/index --> image_diff/helpers/utils_helper
image_diff/helpers/utils_helper --> image_diff/replaced_image_diff;
image_diff/replaced_image_diff --> image_diff/image_diff;
spec/javascripts/ide/stores/actions/project_spec.js
spec/javascripts/ide/stores/modules/commit/actions_spec.js
spec/javascripts/ide/stores/actions_spec.js
Merge-request with fix: gitlab-foss!32872 (closed)
graph LR;
ide/stores/actions --> ide/ide_router;
ide/stores/actions --> ide/stores/actions/project;
ide/stores/actions --> ide/stores/actions/file;
ide/ide_router --> ide/stores/index;
ide/stores/index --> ide/stores/actions;
ide/stores/actions/project --> ide/ide_router;
ide/stores/actions/file --> ide/ide_router;
ide/stores/modules/commit/actions --> ide/ide_router;
ide/stores/index --> ide/stores/modules/commit;
ide/stores/modules/commit --> ide/stores/modules/commit/actions;