summaryrefslogtreecommitdiff
path: root/danger/karma/Dangerfile
diff options
context:
space:
mode:
Diffstat (limited to 'danger/karma/Dangerfile')
-rw-r--r--danger/karma/Dangerfile50
1 files changed, 50 insertions, 0 deletions
diff --git a/danger/karma/Dangerfile b/danger/karma/Dangerfile
new file mode 100644
index 00000000000..6d692a89e13
--- /dev/null
+++ b/danger/karma/Dangerfile
@@ -0,0 +1,50 @@
+# frozen_string_literal: true
+# rubocop:disable Style/SignalException
+
+def get_karma_files(files)
+ files.select do |file|
+ file.start_with?('ee/spec/javascripts', 'spec/javascripts') &&
+ !file.end_with?('browser_spec.js')
+ end
+end
+
+new_karma_files = get_karma_files(git.added_files.to_a)
+
+unless new_karma_files.empty?
+
+ if GitlabDanger.new(helper.gitlab_helper).ci?
+ markdown(<<~MARKDOWN)
+ ## New karma spec file
+
+ New frontend specs ([except `browser_specs`](https://gitlab.com/gitlab-org/gitlab/blob/3b6fe2f1077eedb0b8aff02a7350234f0b7dc4f9/spec/javascripts/lib/utils/browser_spec.js#L2)) should be
+ [written in jest](https://docs.gitlab.com/ee/development/testing_guide/frontend_testing.html#jest).
+
+ You have created the following tests, please migrate them over to jest:
+
+ * #{new_karma_files.map { |path| "`#{path}`" }.join("\n* ")}
+ MARKDOWN
+ end
+
+ fail "You have created a new karma spec file"
+
+end
+
+changed_karma_files = get_karma_files(helper.all_changed_files) - new_karma_files
+
+return if changed_karma_files.empty?
+
+warn 'You have edited karma spec files. Please consider migrating them to jest.'
+
+if GitlabDanger.new(helper.gitlab_helper).ci?
+ markdown(<<~MARKDOWN)
+ ## Edited karma files
+
+ You have edited the following karma spec files. Please consider migrating them to jest:
+
+ * #{changed_karma_files.map { |path| "`#{path}`" }.join("\n* ")}
+
+ In order to align with our Iteration value, migration can also be done as a follow-up.
+
+ For more information: [Jestodus epic](https://gitlab.com/groups/gitlab-org/-/epics/895)
+ MARKDOWN
+end