diff --git a/erpnext/hr/doctype/branch/test_branch.js b/erpnext/hr/doctype/branch/test_branch.js
new file mode 100644
index 0000000..25ea2fc
--- /dev/null
+++ b/erpnext/hr/doctype/branch/test_branch.js
@@ -0,0 +1,22 @@
+QUnit.module('hr');
+
+QUnit.test("Test: Branch [HR]", function (assert) {
+	assert.expect(1);
+	let done = assert.async();
+
+	frappe.run_serially([
+		// test branch creation
+		() => frappe.set_route("List", "Branch", "List"),
+		() => frappe.new_doc("Branch"),
+		() => frappe.timeout(1),
+		() => frappe.click_link('Edit in full page'),
+		() => cur_frm.set_value("branch", "Branch test"),
+
+		// save form
+		() => cur_frm.save(),
+		() => frappe.timeout(1),
+		() => assert.equal("Branch test", cur_frm.doc.branch,
+			'name of branch correctly saved'),
+		() => done()
+	]);
+});
\ No newline at end of file
diff --git a/erpnext/hr/doctype/holiday_list/test_holiday_list.js b/erpnext/hr/doctype/holiday_list/test_holiday_list.js
new file mode 100644
index 0000000..ed75285
--- /dev/null
+++ b/erpnext/hr/doctype/holiday_list/test_holiday_list.js
@@ -0,0 +1,42 @@
+QUnit.module('hr');
+
+QUnit.test("Test: Holiday list [HR]", function (assert) {
+	assert.expect(3);
+	let done = assert.async();
+	let date = frappe.datetime.add_months(frappe.datetime.nowdate(), -2);		// date 2 months from now
+
+	frappe.run_serially([
+		// test holiday list creation
+		() => frappe.set_route("List", "Holiday List", "List"),
+		() => frappe.new_doc("Holiday List"),
+		() => frappe.timeout(1),
+		() => cur_frm.set_value("holiday_list_name", "Holiday list test"),
+		() => cur_frm.set_value("from_date", date),
+		() => cur_frm.set_value("weekly_off", "Sunday"),		// holiday list for sundays
+		() => frappe.click_button('Get Weekly Off Dates'),
+
+		// save form
+		() => cur_frm.save(),
+		() => frappe.timeout(1),
+		() => assert.equal("Holiday list test", cur_frm.doc.holiday_list_name,
+			'name of holiday list correctly saved'),
+
+		// check if holiday list contains correct days
+		() => {
+			var list = cur_frm.doc.holidays;
+			var list_length = list.length;
+			var i = 0;
+			for ( ; i < list_length; i++)
+				if (list[i].description != 'Sunday') break;
+			assert.equal(list_length, i, "all holidays are sundays in holiday list");
+		},
+
+		// check if to_date is set one year from from_date
+		() => {
+			var date_year_later = frappe.datetime.add_days(frappe.datetime.add_months(date, 12), -1);		// date after one year
+			assert.equal(date_year_later, cur_frm.doc.to_date,
+				"to date set correctly");
+		},
+		() => done()
+	]);
+});
\ No newline at end of file
diff --git a/erpnext/tests/ui/tests.txt b/erpnext/tests/ui/tests.txt
index 98f8399..c149226 100644
--- a/erpnext/tests/ui/tests.txt
+++ b/erpnext/tests/ui/tests.txt
@@ -3,4 +3,6 @@
 erpnext/crm/doctype/lead/test_lead.js
 erpnext/crm/doctype/opportunity/test_opportunity.js
 erpnext/selling/doctype/quotation/test_quotation.js
-erpnext/crm/doctype/item/test_item.js
\ No newline at end of file
+erpnext/crm/doctype/item/test_item.js
+erpnext/hr/doctype/holiday_list/test_holiday_list.js
+erpnext/hr/doctype/branch/test_branch.js
\ No newline at end of file
