diff --git a/erpnext/hr/doctype/job_applicant/test_job_applicant.js b/erpnext/hr/doctype/job_applicant/test_job_applicant.js
new file mode 100644
index 0000000..b5391c8
--- /dev/null
+++ b/erpnext/hr/doctype/job_applicant/test_job_applicant.js
@@ -0,0 +1,29 @@
+QUnit.module('hr');
+
+QUnit.test("Test: Job Opening [HR]", function (assert) {
+	assert.expect(2);
+	let done = assert.async();
+
+	frappe.run_serially([
+		// Job Applicant creation
+		() => {
+			frappe.tests.make('Job Applicant', [
+				{ applicant_name: 'Utkarsh Goswami'},
+				{ email_id: 'goswamiutkarsh0@gmail.com'},
+				{ job_title: 'software-developer'},
+				{ cover_letter: 'Highly skilled in designing, testing, and developing software.'+
+					' This is just a test.'}
+			]);
+		},
+		() => frappe.timeout(4),
+		() => frappe.set_route('List','Job Applicant'),
+		() => frappe.timeout(3),
+		() => {
+			assert.ok(cur_list.data.length==1, 'Job Applicant created successfully');
+			assert.ok(cur_list.data[0].name=='Utkarsh Goswami - goswamiutkarsh0@gmail.com - software-developer',
+				'Correct job applicant with valid job title');
+		},
+		() => done()
+	]);
+});
+
diff --git a/erpnext/hr/doctype/job_opening/test_job_opening.js b/erpnext/hr/doctype/job_opening/test_job_opening.js
new file mode 100644
index 0000000..b9e6c0a
--- /dev/null
+++ b/erpnext/hr/doctype/job_opening/test_job_opening.js
@@ -0,0 +1,27 @@
+QUnit.module('hr');
+
+QUnit.test("Test: Job Opening [HR]", function (assert) {
+	assert.expect(2);
+	let done = assert.async();
+
+	frappe.run_serially([
+		// Job Opening creation
+		() => {
+			frappe.tests.make('Job Opening', [
+				{ job_title: 'Software Developer'},
+				{ description:
+					'You might be responsible for writing and coding individual'+
+					' programmes or providing an entirely new software resource.'}
+			]);
+		},
+		() => frappe.timeout(4),
+		() => frappe.set_route('List','Job Opening'),
+		() => frappe.timeout(3),
+		() => {
+			assert.ok(cur_list.data.length==1, 'Job Opening created successfully');
+			assert.ok(cur_list.data[0].job_title=='Software Developer', 'Job title Correctly set');
+		},
+		() => done()
+	]);
+});
+
diff --git a/erpnext/hr/doctype/offer_letter/test_offer_letter.js b/erpnext/hr/doctype/offer_letter/test_offer_letter.js
new file mode 100644
index 0000000..2069532
--- /dev/null
+++ b/erpnext/hr/doctype/offer_letter/test_offer_letter.js
@@ -0,0 +1,51 @@
+QUnit.module('hr');
+
+QUnit.test("Test: Offer Letter [HR]", function (assert) {
+	assert.expect(3);
+	let done = assert.async();
+	frappe.run_serially([
+		// Offer Letter Creation
+		() => {
+			frappe.tests.make('Offer Letter', [
+				{ job_applicant: 'Utkarsh Goswami - goswamiutkarsh0@gmail.com - software-developer'},
+				{ applicant_name: 'Utkarsh Goswami'},
+				{ status: 'Accepted'},
+				{ designation: 'Software Developer'},
+				{ offer_terms: [
+					[
+						{offer_term: 'Responsibilities'},
+						{value: 'Design, installation, testing and maintenance of software systems.'}
+					],
+					[
+						{offer_term: 'Department'},
+						{value: 'Research & Development'}
+					],
+					[
+						{offer_term: 'Probationary Period'},
+						{value: 'The Probation period is for 3 months.'}
+					]
+				]},
+			]);
+		},
+		() => frappe.timeout(8),
+		() => frappe.click_button('Submit'),
+		() => frappe.timeout(2),
+		() => frappe.click_button('Yes'),
+		() => frappe.timeout(8),
+		() => {
+			// To check if the fields are correctly set
+			assert.ok(cur_frm.get_field('status').value=='Accepted',
+				'Status of job offer is correct');
+			assert.ok(cur_frm.get_field('designation').value=='Software Developer',
+				'Designation of applicant is correct');
+		},
+		() => frappe.set_route('List','Offer Letter','List'),
+		() => frappe.timeout(2),
+		// Checking the submission of and offer letter
+		() => {
+			assert.ok(cur_list.data[0].docstatus==1,'Offer Letter Submitted successfully');
+		},
+		() => frappe.timeout(4),
+		() => done()
+	]);
+});
\ No newline at end of file
diff --git a/erpnext/tests/ui/tests.txt b/erpnext/tests/ui/tests.txt
index dffbbaf..d34bb4e 100644
--- a/erpnext/tests/ui/tests.txt
+++ b/erpnext/tests/ui/tests.txt
@@ -67,6 +67,9 @@
 erpnext/schools/doctype/program/test_program.js
 erpnext/hr/doctype/salary_structure/test_salary_structure.js
 erpnext/hr/doctype/salary_slip/test_salary_slip.js
+erpnext/hr/doctype/job_opening/test_job_opening.js
+erpnext/hr/doctype/job_applicant/test_job_applicant.js
+erpnext/hr/doctype/offer_letter/test_offer_letter.js
 erpnext/schools/doctype/guardian/test_guardian.js
 erpnext/schools/doctype/student_admission/test_student_admission.js
 erpnext/schools/doctype/student_applicant/tests/test_student_applicant_dummy_data.js
