diff --git a/app/javascript/article-form/elements/__tests__/__snapshots__/errors.test.jsx.snap b/app/javascript/article-form/elements/__tests__/__snapshots__/errors.test.jsx.snap
new file mode 100644
index 000000000..e55fd7f58
--- /dev/null
+++ b/app/javascript/article-form/elements/__tests__/__snapshots__/errors.test.jsx.snap
@@ -0,0 +1,25 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[` renders properly 1`] = `
+
+
+
+ đŸ˜±
+
+ Heads up:
+
+
+ -
+ 0: Â Error 1
+
+ -
+ 1: Â Error 2
+
+
+
+`;
diff --git a/app/javascript/article-form/elements/__tests__/__snapshots__/mainImage.test.jsx.snap b/app/javascript/article-form/elements/__tests__/__snapshots__/mainImage.test.jsx.snap
new file mode 100644
index 000000000..c8cb41f2d
--- /dev/null
+++ b/app/javascript/article-form/elements/__tests__/__snapshots__/mainImage.test.jsx.snap
@@ -0,0 +1,12 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[` renders properly 1`] = `
+
+

+
+`;
diff --git a/app/javascript/article-form/elements/__tests__/__snapshots__/notice.test.jsx.snap b/app/javascript/article-form/elements/__tests__/__snapshots__/notice.test.jsx.snap
new file mode 100644
index 000000000..b213db9fe
--- /dev/null
+++ b/app/javascript/article-form/elements/__tests__/__snapshots__/notice.test.jsx.snap
@@ -0,0 +1,33 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[` renders properly when published with a first version 1`] = `
+
+ Saving ...
+
+`;
+
+exports[` renders properly when published with a second version 1`] = `
+
+ Publishing...
+
+`;
+
+exports[` renders properly when unpublished with a version 1`] = `
+
+ Saving Draft...
+
+`;
+
+exports[` renders properly when unpublished without a version 1`] = `
+
+ Saving ...
+
+`;
diff --git a/app/javascript/article-form/elements/__tests__/errors.test.jsx b/app/javascript/article-form/elements/__tests__/errors.test.jsx
new file mode 100644
index 000000000..1989216e1
--- /dev/null
+++ b/app/javascript/article-form/elements/__tests__/errors.test.jsx
@@ -0,0 +1,15 @@
+import { h } from 'preact';
+import render from 'preact-render-to-json';
+import Errors from '../errors';
+
+const errorsList = [
+ 'Error 1',
+ 'Error 2'
+];
+
+describe('', () => {
+ it('renders properly', () => {
+ const tree = render();
+ expect(tree).toMatchSnapshot();
+ });
+});
diff --git a/app/javascript/article-form/elements/__tests__/mainImage.test.jsx b/app/javascript/article-form/elements/__tests__/mainImage.test.jsx
new file mode 100644
index 000000000..d06b83da8
--- /dev/null
+++ b/app/javascript/article-form/elements/__tests__/mainImage.test.jsx
@@ -0,0 +1,19 @@
+import { h } from 'preact';
+import render from 'preact-render-to-json';
+import { shallow } from 'preact-render-spy';
+import MainImage from '../mainImage';
+
+describe('', () => {
+ const editHandler = jest.fn();
+
+ it('renders properly', () => {
+ const tree = render();
+ expect(tree).toMatchSnapshot();
+ });
+
+ it('fires onEdit when clicked', () => {
+ const container = shallow();
+ container.find('.articleform__mainimage').simulate('click');
+ expect(editHandler).toHaveBeenCalled();
+ });
+});
diff --git a/app/javascript/article-form/elements/__tests__/notice.test.jsx b/app/javascript/article-form/elements/__tests__/notice.test.jsx
new file mode 100644
index 000000000..edaf2757e
--- /dev/null
+++ b/app/javascript/article-form/elements/__tests__/notice.test.jsx
@@ -0,0 +1,25 @@
+import { h } from 'preact';
+import render from 'preact-render-to-json';
+import Notice from '../notice';
+
+describe('', () => {
+ it('renders properly when published with a first version', () => {
+ const tree = render();
+ expect(tree).toMatchSnapshot();
+ });
+
+ it('renders properly when published with a second version', () => {
+ const tree = render();
+ expect(tree).toMatchSnapshot();
+ });
+
+ it('renders properly when unpublished without a version', () => {
+ const tree = render();
+ expect(tree).toMatchSnapshot();
+ });
+
+ it('renders properly when unpublished with a version', () => {
+ const tree = render();
+ expect(tree).toMatchSnapshot();
+ });
+});