diff --git a/.travis.yml b/.travis.yml
index 9f37374..0d8d2ff 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,12 @@
 language: python
 dist: trusty
-group: deprecated-2017Q2
+
+addons:
+  apt:
+    sources:
+      - google-chrome
+    packages:
+      - google-chrome-stable
 
 python:
   - "2.7"
@@ -8,43 +14,43 @@
 services:
   - mysql
 
-before_install:
-  - "export DISPLAY=:99.0"
-  - "sh -e /etc/init.d/xvfb start"
-
 install:
+  - sudo rm /etc/apt/sources.list.d/docker.list
   - sudo apt-get purge -y mysql-common mysql-server mysql-client
   - nvm install v7.10.0
-  # - wget https://raw.githubusercontent.com/frappe/bench/master/install_scripts/setup_frappe.sh
-  # - sudo bash setup_frappe.sh --skip-setup-bench --mysql-root-password travis --bench-branch develop
   - wget https://raw.githubusercontent.com/frappe/bench/master/playbooks/install.py
   - sudo python install.py --develop --user travis --without-bench-setup
   - sudo pip install -e ~/bench
 
-  # - sudo pip install --upgrade pip
   - rm $TRAVIS_BUILD_DIR/.git/shallow
   - bash $TRAVIS_BUILD_DIR/travis/bench_init.sh
   - cp -r $TRAVIS_BUILD_DIR/test_sites/test_site ~/frappe-bench/sites/
 
-script:
+before_script:
+  - wget http://chromedriver.storage.googleapis.com/2.27/chromedriver_linux64.zip
+  - unzip chromedriver_linux64.zip
+  - sudo apt-get install libnss3
+  - sudo apt-get --only-upgrade install google-chrome-stable
+  - sudo cp chromedriver /usr/local/bin/.
+  - sudo chmod +x /usr/local/bin/chromedriver
+  - export DISPLAY=:99.0
+  - sh -e /etc/init.d/xvfb start
+  - sleep 3
+  - mysql -u root -ptravis -e 'create database test_frappe'
+  - echo "USE mysql;\nCREATE USER 'test_frappe'@'localhost' IDENTIFIED BY 'test_frappe';\nFLUSH PRIVILEGES;\n" | mysql -u root -ptravis
+  - echo "USE mysql;\nGRANT ALL PRIVILEGES ON \`test_frappe\`.* TO 'test_frappe'@'localhost';\n" | mysql -u root -ptravis
+
   - cd ~/frappe-bench
   - bench get-app erpnext $TRAVIS_BUILD_DIR
   - bench use test_site
   - bench reinstall --yes
   - bench build
+  - bench scheduler disable
   - bench start &
   - sleep 10
-  - bench --verbose run-tests --driver Firefox
 
-before_script:
-  - mysql -u root -ptravis -e 'create database test_frappe'
-  - echo "USE mysql;\nCREATE USER 'test_frappe'@'localhost' IDENTIFIED BY 'test_frappe';\nFLUSH PRIVILEGES;\n" | mysql -u root -ptravis
-  - echo "USE mysql;\nGRANT ALL PRIVILEGES ON \`test_frappe\`.* TO 'test_frappe'@'localhost';\n" | mysql -u root -ptravis
-
-notifications:
-  webhooks:
-    urls:
-      - https://webhooks.gitter.im/e/92b3bea86d8c5397beef
-    on_success: always
-    on_failure: always
-    on_start: never
+script:
+  - set -e
+  - bench --verbose run-tests
+  - sleep 5
+  - bench --verbose run-tests --ui-tests
diff --git a/erpnext/crm/doctype/opportunity/opportunity.json b/erpnext/crm/doctype/opportunity/opportunity.json
index 18a97ac..6d9b514 100644
--- a/erpnext/crm/doctype/opportunity/opportunity.json
+++ b/erpnext/crm/doctype/opportunity/opportunity.json
@@ -56,7 +56,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_global_search": 0, 
-   "in_list_view": 0, 
+   "in_list_view": 1, 
    "in_standard_filter": 0, 
    "label": "Series", 
    "length": 0, 
@@ -88,7 +88,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_global_search": 0, 
-   "in_list_view": 0, 
+   "in_list_view": 1, 
    "in_standard_filter": 0, 
    "label": "Opportunity From", 
    "length": 0, 
@@ -277,8 +277,8 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_global_search": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 1, 
+   "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Opportunity Type", 
    "length": 0, 
    "no_copy": 0, 
@@ -310,7 +310,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_global_search": 0, 
-   "in_list_view": 0, 
+   "in_list_view": 1, 
    "in_standard_filter": 1, 
    "label": "Status", 
    "length": 0, 
@@ -1189,7 +1189,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2017-06-13 14:29:07.077697", 
+ "modified": "2017-07-10 15:29:23.921967", 
  "modified_by": "Administrator", 
  "module": "CRM", 
  "name": "Opportunity", 
diff --git a/erpnext/hr/doctype/daily_work_summary/test_daily_work_summary.py b/erpnext/hr/doctype/daily_work_summary/test_daily_work_summary.py
index 81455f1..ad9d43f 100644
--- a/erpnext/hr/doctype/daily_work_summary/test_daily_work_summary.py
+++ b/erpnext/hr/doctype/daily_work_summary/test_daily_work_summary.py
@@ -12,32 +12,31 @@
 
 class TestDailyWorkSummary(unittest.TestCase):
 	def test_email_trigger(self):
-		settings, employees, emails = self.setup_and_prepare_test()
-
-		for d in employees:
+		self.setup_and_prepare_test()
+		for d in self.employees:
 			# check that email is sent to this employee
-			self.assertTrue(d.user_id in [d.recipient for d in emails
-				if settings.subject in d.message])
+			self.assertTrue(d.user_id in [d.recipient for d in self.emails
+				if self.settings.subject in d.message])
 
 	def test_email_trigger_failed(self):
 		hour = '00'
 		if frappe.utils.nowtime().split(':')[0]=='00':
 			hour = '01'
 
-		settings, employees, emails = self.setup_and_prepare_test(hour)
+		self.setup_and_prepare_test(hour)
 
-		for d in employees:
+		for d in self.employees:
 			# check that email is sent to this employee
-			self.assertFalse(d.user_id in [d.recipient for d in emails
-				if settings.subject in d.message])
+			self.assertFalse(d.user_id in [d.recipient for d in self.emails
+				if self.settings.subject in d.message])
 
 	def test_incoming(self):
-		settings, employees, emails = self.setup_and_prepare_test()
-
 		# get test mail with message-id as in-reply-to
+		self.setup_and_prepare_test()
+
 		with open(os.path.join(os.path.dirname(__file__), "test_data", "test-reply.raw"), "r") as f:
-			test_mails = [f.read().replace('{{ sender }}', employees[-1].user_id)\
-				.replace('{{ message_id }}', emails[-1].message_id)]
+			test_mails = [f.read().replace('{{ sender }}', self.employees[-1].user_id)\
+				.replace('{{ message_id }}', self.emails[-1].message_id)]
 
 		# pull the mail
 		email_account = frappe.get_doc("Email Account", "_Test Email Account 1")
@@ -52,30 +51,34 @@
 		self.assertTrue('I built Daily Work Summary!' in summary)
 
 	def setup_and_prepare_test(self, hour=None):
-		if not hour:
-			hour = frappe.utils.nowtime().split(':')[0]
 		frappe.db.sql('delete from `tabDaily Work Summary`')
 		frappe.db.sql('delete from `tabEmail Queue`')
 		frappe.db.sql('delete from `tabEmail Queue Recipient`')
 		frappe.db.sql('delete from `tabCommunication`')
 
-		# setup email to trigger at this our
-		settings = frappe.get_doc('Daily Work Summary Settings')
-		settings.companies = []
-
-		settings.append('companies', dict(company='_Test Company',
-			send_emails_at=hour + ':00'))
-		settings.test_subject = 'this is a subject for testing summary emails'
-		settings.save()
+		self.setup_settings(hour)
 
 		from erpnext.hr.doctype.daily_work_summary_settings.daily_work_summary_settings \
 			import trigger_emails
 		trigger_emails()
 
 		# check if emails are created
-		employees = frappe.get_all('Employee', fields = ['user_id'],
-			filters=dict(company='_Test Company', status='Active'))
+		self.employees = frappe.get_all('Employee', fields = ['user_id'],
+			filters=dict(company='_Test Company', status='Active', user_id=('!=', 'test@example.com')))
 
-		emails = frappe.db.sql("""select r.recipient, q.message, q.message_id from `tabEmail Queue` as q, `tabEmail Queue Recipient` as r where q.name = r.parent""", as_dict=1)
+		self.emails = frappe.db.sql("""select r.recipient, q.message, q.message_id from `tabEmail Queue` as q, `tabEmail Queue Recipient` as r where q.name = r.parent""", as_dict=1)
 
-		return settings, employees, emails
\ No newline at end of file
+		frappe.db.commit()
+
+	def setup_settings(self, hour=None):
+		# setup email to trigger at this our
+		if not hour:
+			hour = frappe.utils.nowtime().split(':')[0]
+		self.settings = frappe.get_doc('Daily Work Summary Settings')
+		self.settings.companies = []
+
+		self.settings.append('companies', dict(company='_Test Company',
+			send_emails_at=hour + ':00'))
+		self.settings.test_subject = 'this is a subject for testing summary emails'
+		self.settings.save()
+
diff --git a/erpnext/setup/doctype/item_group/item_group.py b/erpnext/setup/doctype/item_group/item_group.py
index 8d027b3..2766ba0 100644
--- a/erpnext/setup/doctype/item_group/item_group.py
+++ b/erpnext/setup/doctype/item_group/item_group.py
@@ -136,7 +136,7 @@
 
 def get_parent_item_groups(item_group_name):
 	item_group = frappe.get_doc("Item Group", item_group_name)
-	return 	[{"name": frappe._("Home"),"route":"/"}]+\
+	return 	[{"name": frappe._("Home"), "route":"/"}]+\
 		frappe.db.sql("""select name, route from `tabItem Group`
 		where lft <= %s and rgt >= %s
 		and show_in_website=1
@@ -147,7 +147,6 @@
 		item_group = doc.name
 
 	for d in get_parent_item_groups(item_group):
-		if frappe.db.exists("Item Group", d.get("name")):
-			d = frappe.get_doc("Item Group", d.get("name"))
-			if d.route:
-				clear_cache(d.route)
+		item_group_name = frappe.db.get_value("Item Group", d.get('name'))
+		if item_group_name:
+			clear_cache(frappe.db.get_value('Item Group', item_group_name, 'route'))
