+`;
diff --git a/gsa/src/web/components/powerfilter/__tests__/severitylevelsgroup.js b/gsa/src/web/components/powerfilter/__tests__/severitylevelsgroup.js
new file mode 100644
index 0000000000..f7b053b243
--- /dev/null
+++ b/gsa/src/web/components/powerfilter/__tests__/severitylevelsgroup.js
@@ -0,0 +1,101 @@
+/* Copyright (C) 2019 Greenbone Networks GmbH
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+import React from 'react';
+
+import {render, fireEvent} from 'web/utils/testing';
+
+import SeverityLevelsFilterGroup from '../severitylevelsgroup';
+
+import Filter from 'gmp/models/filter';
+
+describe('SeverityLevelsFilterGroup tests', () => {
+ test('should render', () => {
+ const filter = Filter.fromString('levels=h');
+ const handleChange = jest.fn();
+ const {element} = render(
+ ,
+ );
+
+ expect(element).toMatchSnapshot();
+ });
+
+ test('should call change handler', () => {
+ const filter = Filter.fromString('levels=');
+ const handleChange = jest.fn();
+ const {element} = render(
+ ,
+ );
+
+ const checkbox = element.querySelectorAll('input');
+ fireEvent.click(checkbox[0]);
+
+ expect(handleChange).toHaveBeenCalled();
+ expect(handleChange).toHaveBeenCalledWith('h', 'levels');
+ });
+
+ test('should check checkbox', () => {
+ const filter = Filter.fromString('levels=hm');
+ const handleChange = jest.fn();
+ const {element} = render(
+ ,
+ );
+
+ const checkbox = element.querySelectorAll('input');
+
+ expect(checkbox[0].checked).toEqual(true);
+ expect(checkbox[1].checked).toEqual(true);
+ });
+
+ test('should uncheck checkbox', () => {
+ const filter1 = Filter.fromString('levels=hm');
+ const filter2 = Filter.fromString('levels=m');
+ const handleChange = jest.fn();
+ const {element, rerender} = render(
+ ,
+ );
+
+ const checkbox = element.querySelectorAll('input');
+
+ expect(checkbox[0].checked).toEqual(true);
+ expect(checkbox[1].checked).toEqual(true);
+
+ rerender(
+ ,
+ );
+
+ expect(checkbox[0].checked).toEqual(false);
+ expect(checkbox[1].checked).toEqual(true);
+ });
+
+ test('should be unchecked by default', () => {
+ const filter = Filter.fromString();
+ const handleChange = jest.fn();
+ const {element} = render(
+ ,
+ );
+
+ const checkbox = element.querySelectorAll('input');
+
+ expect(checkbox[0].checked).toEqual(false);
+ expect(checkbox[1].checked).toEqual(false);
+ expect(checkbox[2].checked).toEqual(false);
+ expect(checkbox[3].checked).toEqual(false);
+ expect(checkbox[4].checked).toEqual(false);
+ });
+});
diff --git a/gsa/src/web/pages/tasks/__tests__/__snapshots__/trend.js.snap b/gsa/src/web/pages/tasks/__tests__/__snapshots__/trend.js.snap
new file mode 100644
index 0000000000..7c48a60923
--- /dev/null
+++ b/gsa/src/web/pages/tasks/__tests__/__snapshots__/trend.js.snap
@@ -0,0 +1,24 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Task Trend tests should render 1`] = `
+.c0 {
+ height: 16px;
+ width: 16px;
+ line-height: 16px;
+}
+
+.c0 * {
+ height: inherit;
+ width: inherit;
+}
+
+
+
+
+`;
diff --git a/gsa/src/web/pages/tasks/__tests__/trend.js b/gsa/src/web/pages/tasks/__tests__/trend.js
new file mode 100644
index 0000000000..4edea6d1ab
--- /dev/null
+++ b/gsa/src/web/pages/tasks/__tests__/trend.js
@@ -0,0 +1,71 @@
+/* Copyright (C) 2019 Greenbone Networks GmbH
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+import React from 'react';
+
+import {render} from 'web/utils/testing';
+
+import Trend from '../trend';
+
+import {setLocale} from 'gmp/locale/lang';
+
+setLocale('en');
+
+describe('Task Trend tests', () => {
+ test('should render', () => {
+ const {element} = render();
+
+ expect(element).toMatchSnapshot();
+ });
+
+ test('should render trend up icon', () => {
+ const {element} = render();
+
+ expect(element).toHaveAttribute('title', 'Severity increased');
+ expect(element).toHaveTextContent('trend_up.svg');
+ });
+
+ test('should render trend down icon', () => {
+ const {element} = render();
+
+ expect(element).toHaveAttribute('title', 'Severity decreased');
+ expect(element).toHaveTextContent('trend_down.svg');
+ });
+
+ test('should render trend less icon', () => {
+ const {element} = render();
+
+ expect(element).toHaveAttribute('title', 'Vulnerability count decreased');
+ expect(element).toHaveTextContent('trend_less.svg');
+ });
+
+ test('should render trend more icon', () => {
+ const {element} = render();
+
+ expect(element).toHaveAttribute('title', 'Vulnerability count increased');
+ expect(element).toHaveTextContent('trend_more.svg');
+ });
+
+ test('should render trend no change icon', () => {
+ const {element} = render();
+
+ expect(element).toHaveAttribute('title', 'Vulnerabilities did not change');
+ expect(element).toHaveTextContent('trend_nochange.svg');
+ });
+});