diff --git a/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py b/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
index d5bb39f..7385357 100644
--- a/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
+++ b/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
@@ -489,8 +489,8 @@
 
         r = self.app.get(thread.request.url)
         assert '<div class="display_post moderate">' in r
-        assert '<a class="icon fa fa-reply reply_post btn" href="#" style="display:none;" title="Reply">'\
-               '<span>&nbsp;Reply</span></a>' in r
+        assert '<a class="icon reply_post btn" href="#" style="display:none;" title="Reply">'\
+               '<i class="fa fa-reply"></i>&nbsp;Reply</a>' in r
 
         assert r.html.find(
             'a', {'class': 'little_link shortlink', 'style': 'display:none'}) is not None
diff --git a/ForgeGit/forgegit/tests/functional/test_controllers.py b/ForgeGit/forgegit/tests/functional/test_controllers.py
index 9ef589d..173a82a 100644
--- a/ForgeGit/forgegit/tests/functional/test_controllers.py
+++ b/ForgeGit/forgegit/tests/functional/test_controllers.py
@@ -414,13 +414,13 @@
         r = self.app.get('/p/test/src-git/').follow().follow()
         assert '<span class="scm-branch-label">zz</span>' in r
         # 'bad' is a file name which in zz, but not in master
-        assert_in('<span>bad</span>', r)
+        assert_in('bad</a>', r)
 
         self.app.post('/p/test/admin/src-git/set_default_branch_name',
                       params={'branch_name': 'master'})
         r = self.app.get('/p/test/src-git/').follow().follow()
-        assert_not_in('<span>bad</span>', r)
-        assert_in('<span>README</span>', r)
+        assert_not_in('bad</a>', r)
+        assert_in('README</a>', r)
 
     def test_set_checkout_url(self):
         r = self.app.get('/p/test/admin/src-git/checkout_url')
@@ -696,7 +696,7 @@
                               'summary': 'summary',
                               'description': 'description',
                           }).follow()
-        assert '<a class="icon fa fa-edit" href="edit" title="Edit"><span>&nbsp;Edit</span></a>' in r
+        assert '<a class="icon" href="edit" title="Edit"><i class="fa fa-edit"></i>&nbsp;Edit</a>' in r
         r = self.app.get('/p/test/src-git/merge-requests/1/edit')
         assert 'value="summary"' in r
         assert '<option selected value="zz">zz</option>' in r
@@ -860,7 +860,7 @@
 
     def test_exotic_default_branch(self):
         r = self.app.get('/src-git/').follow().follow()
-        assert '<span>README</span>' in r
+        assert 'README</a>' in r
         assert_equal(c.app.repo.get_default_branch('master'), 'test')
 
 
diff --git a/ForgeTracker/forgetracker/tests/functional/test_root.py b/ForgeTracker/forgetracker/tests/functional/test_root.py
index 8a1d8c4..9cbfd74 100644
--- a/ForgeTracker/forgetracker/tests/functional/test_root.py
+++ b/ForgeTracker/forgetracker/tests/functional/test_root.py
@@ -736,7 +736,7 @@
         # Make sure the 'Create Ticket' button is disabled for user without 'create' perm
         r = self.app.get('/bugs/', extra_environ=dict(username='*anonymous'))
         create_button = r.html.find('a', attrs={'href': u'/p/test/bugs/new/'})
-        assert_equal(create_button['class'], 'icon fa fa-plus-circle sidebar-disabled')
+        assert_equal(create_button['class'], 'icon sidebar-disabled')
 
     def test_render_markdown_syntax(self):
         r = self.app.get('/bugs/markdown_syntax')
@@ -1986,7 +1986,7 @@
                             extra_environ=dict(username='*anonymous'))
         ticket_url = r.headers['Location']
         r = self.app.get(ticket_url, extra_environ=dict(username='*anonymous'))
-        a = r.html.find('a', {'class': 'icon fa fa-edit edit_ticket'})
+        a = r.html.find('a', {'class': 'icon edit_ticket'})
         assert_equal(a.text, '&nbsp;Edit')
 
     def test_ticket_creator_cant_edit_private_ticket_without_update_perm(self):
diff --git a/ForgeWiki/forgewiki/tests/functional/test_root.py b/ForgeWiki/forgewiki/tests/functional/test_root.py
index eee2432..c1886cf 100644
--- a/ForgeWiki/forgewiki/tests/functional/test_root.py
+++ b/ForgeWiki/forgewiki/tests/functional/test_root.py
@@ -136,7 +136,7 @@
 
     def test_search_help(self):
         r = self.app.get('/wiki/search?q=test')
-        btn = r.html.find('a', attrs={'class': 'icon fa fa-question-circle btn search_help_modal'})
+        btn = r.html.find('a', attrs={'class': 'icon btn search_help_modal'})
         assert btn is not None, "Can't find a help button"
         div = r.html.find('div', attrs={'id': 'lightbox_search_help_modal'})
         assert div is not None, "Can't find help text"
