diff --git a/reviewboard/static/rb/js/collections/tests/filteredCollectionTests.js b/reviewboard/static/rb/js/collections/tests/filteredCollectionTests.js
index e5003a54aab124031b927746ffc94d8809c5a408..ffd380d12745363878c75e2bd4b5d3c5889e0f98 100644
--- a/reviewboard/static/rb/js/collections/tests/filteredCollectionTests.js
+++ b/reviewboard/static/rb/js/collections/tests/filteredCollectionTests.js
@@ -1,4 +1,4 @@
-describe('collections/FilteredCollection', function() {
+suite('rb/collections/FilteredCollection', function() {
     var mainCollection,
         filteredCollection;
 
diff --git a/reviewboard/static/rb/js/diffviewer/models/tests/diffFileModelTests.js b/reviewboard/static/rb/js/diffviewer/models/tests/diffFileModelTests.js
index 0f832a6763b1fd455992ed4400ba196b01e24507..dcbb811ba8e5b38ef69a6141e545b03032f6e424 100644
--- a/reviewboard/static/rb/js/diffviewer/models/tests/diffFileModelTests.js
+++ b/reviewboard/static/rb/js/diffviewer/models/tests/diffFileModelTests.js
@@ -1,4 +1,4 @@
-describe('diffviewer/models/DiffFile', function() {
+suite('rb/diffviewer/models/DiffFile', function() {
     var model;
 
     beforeEach(function() {
diff --git a/reviewboard/static/rb/js/diffviewer/models/tests/diffReviewableModelTests.js b/reviewboard/static/rb/js/diffviewer/models/tests/diffReviewableModelTests.js
index 8e4e6fd3c45e7e43125dae8868b07f26c8ca1e50..dd775dbbc2d4795498aa29ac7784a63b2cef5b3d 100644
--- a/reviewboard/static/rb/js/diffviewer/models/tests/diffReviewableModelTests.js
+++ b/reviewboard/static/rb/js/diffviewer/models/tests/diffReviewableModelTests.js
@@ -1,4 +1,4 @@
-describe('diffviewer/models/DiffReviewable', function() {
+suite('rb/diffviewer/models/DiffReviewable', function() {
     var callbacks,
         reviewRequest;
 
diff --git a/reviewboard/static/rb/js/diffviewer/models/tests/diffRevisionModelTests.js b/reviewboard/static/rb/js/diffviewer/models/tests/diffRevisionModelTests.js
index 63b290e706933acf8aafe3db50faf0a806dbdcba..ddd5110a5884ea608f225d8b19fba2fdb8f6b162 100644
--- a/reviewboard/static/rb/js/diffviewer/models/tests/diffRevisionModelTests.js
+++ b/reviewboard/static/rb/js/diffviewer/models/tests/diffRevisionModelTests.js
@@ -1,4 +1,4 @@
-describe('diffviewer/models/DiffRevision', function() {
+suite('rb/diffviewer/models/DiffRevision', function() {
     var model;
 
     beforeEach(function() {
diff --git a/reviewboard/static/rb/js/diffviewer/models/tests/paginationModelTests.js b/reviewboard/static/rb/js/diffviewer/models/tests/paginationModelTests.js
index 676de562c8ac43cb2eeff8759e8de82176a11bd1..d7994588ca007b25164262278b6f21391e8f164c 100644
--- a/reviewboard/static/rb/js/diffviewer/models/tests/paginationModelTests.js
+++ b/reviewboard/static/rb/js/diffviewer/models/tests/paginationModelTests.js
@@ -1,4 +1,4 @@
-describe('diffviewer/models/Pagination', function() {
+suite('rb/diffviewer/models/Pagination', function() {
     var model;
 
     beforeEach(function() {
diff --git a/reviewboard/static/rb/js/diffviewer/views/tests/diffReviewableViewTests.js b/reviewboard/static/rb/js/diffviewer/views/tests/diffReviewableViewTests.js
index 3714561ee1240ace61c969329c4421fb7a3b7900..bf3b959181386992d3065cae5603be1f6493f17b 100644
--- a/reviewboard/static/rb/js/diffviewer/views/tests/diffReviewableViewTests.js
+++ b/reviewboard/static/rb/js/diffviewer/views/tests/diffReviewableViewTests.js
@@ -1,4 +1,4 @@
-describe('diffviewer/views/DiffReviewableView', function() {
+suite('rb/diffviewer/views/DiffReviewableView', function() {
     var diffTableTemplate = _.template([
             '<table class="sidebyside">',
             ' <thead>',
diff --git a/reviewboard/static/rb/js/models/tests/commentEditorModelTests.js b/reviewboard/static/rb/js/models/tests/commentEditorModelTests.js
index caa690e02f3ae089b9e7f4175f6bd47fe7ae7fd8..a285ce6b35ca7d06ac50ef24743a41dc6b40385f 100644
--- a/reviewboard/static/rb/js/models/tests/commentEditorModelTests.js
+++ b/reviewboard/static/rb/js/models/tests/commentEditorModelTests.js
@@ -1,4 +1,4 @@
-describe('models/CommentEditor', function() {
+suite('rb/models/CommentEditor', function() {
     var editor,
         reviewRequest;
 
diff --git a/reviewboard/static/rb/js/models/tests/reviewReplyEditorModelTests.js b/reviewboard/static/rb/js/models/tests/reviewReplyEditorModelTests.js
index 1c9eacca22c93f01db3825c2803245099b885f89..ebb496598d53a03bb876414e812a6a56245da80c 100644
--- a/reviewboard/static/rb/js/models/tests/reviewReplyEditorModelTests.js
+++ b/reviewboard/static/rb/js/models/tests/reviewReplyEditorModelTests.js
@@ -1,4 +1,4 @@
-describe('models/ReviewReplyEditor', function() {
+suite('rb/models/ReviewReplyEditor', function() {
     var reviewReply,
         review,
         editor;
diff --git a/reviewboard/static/rb/js/models/tests/reviewRequestEditorModelTests.js b/reviewboard/static/rb/js/models/tests/reviewRequestEditorModelTests.js
index d1477f079d7e531b7c70d0b8d2784b85b9b09326..8415a5014eba77b94332295b5f73d2648e9ecf33 100644
--- a/reviewboard/static/rb/js/models/tests/reviewRequestEditorModelTests.js
+++ b/reviewboard/static/rb/js/models/tests/reviewRequestEditorModelTests.js
@@ -1,4 +1,4 @@
-describe('models/ReviewRequestEditor', function() {
+suite('rb/models/ReviewRequestEditor', function() {
     var reviewRequest,
         editor;
 
diff --git a/reviewboard/static/rb/js/models/tests/userSessionModelTests.js b/reviewboard/static/rb/js/models/tests/userSessionModelTests.js
index b3c5a3ef29a6c91e14cb5c25901db889bccb2310..cc448b1815294528197b01e58511125aea7b8e5d 100644
--- a/reviewboard/static/rb/js/models/tests/userSessionModelTests.js
+++ b/reviewboard/static/rb/js/models/tests/userSessionModelTests.js
@@ -1,4 +1,4 @@
-describe('models/UserSession', function() {
+suite('rb/models/UserSession', function() {
     describe('create', function() {
         it('Instance is set', function() {
             var session;
diff --git a/reviewboard/static/rb/js/newReviewRequest/views/tests/branchesViewTests.js b/reviewboard/static/rb/js/newReviewRequest/views/tests/branchesViewTests.js
index 0e8041c34dcc9e0ddccd1ee05aecc540ed780820..8973b54e449441e638df82a0d171712eba49da45 100644
--- a/reviewboard/static/rb/js/newReviewRequest/views/tests/branchesViewTests.js
+++ b/reviewboard/static/rb/js/newReviewRequest/views/tests/branchesViewTests.js
@@ -1,4 +1,4 @@
-describe('newReviewRequest/views/BranchesView', function() {
+suite('rb/newReviewRequest/views/BranchesView', function() {
     var collection,
         view;
 
diff --git a/reviewboard/static/rb/js/newReviewRequest/views/tests/postCommitViewTests.js b/reviewboard/static/rb/js/newReviewRequest/views/tests/postCommitViewTests.js
index 23013a6be16e66a7c8738714f3cd77ee6f4630e2..d2ec03b45693f383d8fde1cd57c36cf843ec3567 100644
--- a/reviewboard/static/rb/js/newReviewRequest/views/tests/postCommitViewTests.js
+++ b/reviewboard/static/rb/js/newReviewRequest/views/tests/postCommitViewTests.js
@@ -1,4 +1,4 @@
-describe('newReviewRequest/views/PostCommitView', function() {
+suite('rb/newReviewRequest/views/PostCommitView', function() {
     var repository,
         commits,
         model,
diff --git a/reviewboard/static/rb/js/newReviewRequest/views/tests/repositorySelectionViewTests.js b/reviewboard/static/rb/js/newReviewRequest/views/tests/repositorySelectionViewTests.js
index db0b442f35636ff1e0e1fcf5ed6deb8fb48f56d9..80e5a19d83243572f3195482f234e5d2cf2c2890 100644
--- a/reviewboard/static/rb/js/newReviewRequest/views/tests/repositorySelectionViewTests.js
+++ b/reviewboard/static/rb/js/newReviewRequest/views/tests/repositorySelectionViewTests.js
@@ -1,4 +1,4 @@
-describe('newReviewRequest/views/RepositorySelectionView', function() {
+suite('rb/newReviewRequest/views/RepositorySelectionView', function() {
     var collection,
         view;
 
diff --git a/reviewboard/static/rb/js/pages/models/tests/pageManagerModelTests.js b/reviewboard/static/rb/js/pages/models/tests/pageManagerModelTests.js
index 1b8d8b93f3b99d1aaecd5f7ce2690512dd77150a..224d708bf71aefbb90111e5d2d88fdcd7ce04925 100644
--- a/reviewboard/static/rb/js/pages/models/tests/pageManagerModelTests.js
+++ b/reviewboard/static/rb/js/pages/models/tests/pageManagerModelTests.js
@@ -1,4 +1,4 @@
-describe('pages/models/PageManager', function() {
+suite('rb/pages/models/PageManager', function() {
     var pageManager,
         page;
 
diff --git a/reviewboard/static/rb/js/pages/views/tests/reviewablePageViewTests.js b/reviewboard/static/rb/js/pages/views/tests/reviewablePageViewTests.js
index 0ba46c34ae8b9b9d6a764a8eda49aa80cf96f581..0120799016ad07c9d41f7e6b9905f33044e468f6 100644
--- a/reviewboard/static/rb/js/pages/views/tests/reviewablePageViewTests.js
+++ b/reviewboard/static/rb/js/pages/views/tests/reviewablePageViewTests.js
@@ -1,4 +1,4 @@
-describe('pages/views/ReviewablePageView', function() {
+suite('rb/pages/views/ReviewablePageView', function() {
     var $editReview,
         $shipIt,
         pageView;
diff --git a/reviewboard/static/rb/js/resources/collections/tests/repositoryBranchesCollectionTests.js b/reviewboard/static/rb/js/resources/collections/tests/repositoryBranchesCollectionTests.js
index 453ff8a17433ab1f22f6bb735301853a9ea4aaca..0806dec2361bbeefbdd69325efe49703b3de15fd 100644
--- a/reviewboard/static/rb/js/resources/collections/tests/repositoryBranchesCollectionTests.js
+++ b/reviewboard/static/rb/js/resources/collections/tests/repositoryBranchesCollectionTests.js
@@ -1,4 +1,4 @@
-describe('resources/collections/RepositoryBranches', function() {
+suite('rb/resources/collections/RepositoryBranches', function() {
     var collection;
 
     beforeEach(function() {
diff --git a/reviewboard/static/rb/js/resources/collections/tests/repositoryCommitsCollectionTests.js b/reviewboard/static/rb/js/resources/collections/tests/repositoryCommitsCollectionTests.js
index b15c9e5ed3c9dd3baee39aee4d301d8fb1e143f4..fd093d6e42d1204c4f117f84e4d4cc930e687a4f 100644
--- a/reviewboard/static/rb/js/resources/collections/tests/repositoryCommitsCollectionTests.js
+++ b/reviewboard/static/rb/js/resources/collections/tests/repositoryCommitsCollectionTests.js
@@ -1,4 +1,4 @@
-describe('resources/collections/RepositoryCommits', function() {
+suite('rb/resources/collections/RepositoryCommits', function() {
     var collection,
         url = '/api/repositories/123/commits/',
         start = '859d4e148ce3ce60bbda6622cdbe5c2c2f8d9817';
diff --git a/reviewboard/static/rb/js/resources/collections/tests/resourceCollectionTests.js b/reviewboard/static/rb/js/resources/collections/tests/resourceCollectionTests.js
index d9171becf4d3c8624d0567583f4a490fe1e1c544..2d2b20a5b4ff442a5af6be3e55463c156e86ff56 100644
--- a/reviewboard/static/rb/js/resources/collections/tests/resourceCollectionTests.js
+++ b/reviewboard/static/rb/js/resources/collections/tests/resourceCollectionTests.js
@@ -1,4 +1,4 @@
-describe('resources/collections/ResourceCollection', function() {
+suite('rb/resources/collections/ResourceCollection', function() {
     var collection,
         reviewRequest;
 
diff --git a/reviewboard/static/rb/js/resources/models/tests/baseCommentModelTests.js b/reviewboard/static/rb/js/resources/models/tests/baseCommentModelTests.js
index d6fe167afeb294ac76ac61f43da79bdeea5da7e6..7e0612d2595677cc8c57232df0bcd9c3bb718af2 100644
--- a/reviewboard/static/rb/js/resources/models/tests/baseCommentModelTests.js
+++ b/reviewboard/static/rb/js/resources/models/tests/baseCommentModelTests.js
@@ -1,4 +1,4 @@
-describe('resources/models/BaseComment', function() {
+suite('rb/resources/models/BaseComment', function() {
     var strings = RB.BaseComment.strings,
         parentObject,
         model;
diff --git a/reviewboard/static/rb/js/resources/models/tests/baseCommentReplyModelTests.js b/reviewboard/static/rb/js/resources/models/tests/baseCommentReplyModelTests.js
index b3afab0e0152278964f487433a4bf33c3a0f7127..200f885785caa4de4d50d248e0fc4d157c499cf0 100644
--- a/reviewboard/static/rb/js/resources/models/tests/baseCommentReplyModelTests.js
+++ b/reviewboard/static/rb/js/resources/models/tests/baseCommentReplyModelTests.js
@@ -1,4 +1,4 @@
-describe('resources/models/BaseCommentReply', function() {
+suite('rb/resources/models/BaseCommentReply', function() {
     var parentObject,
         model;
 
diff --git a/reviewboard/static/rb/js/resources/models/tests/baseResourceModelTests.js b/reviewboard/static/rb/js/resources/models/tests/baseResourceModelTests.js
index 388b5586b52f51d4062f1efd22dcfd2127c05abd..862f786f3d8b005c64895172fd72bb01213155f0 100644
--- a/reviewboard/static/rb/js/resources/models/tests/baseResourceModelTests.js
+++ b/reviewboard/static/rb/js/resources/models/tests/baseResourceModelTests.js
@@ -1,4 +1,4 @@
-describe('resources/models/BaseResource', function() {
+suite('rb/resources/models/BaseResource', function() {
     var model,
         parentObject;
 
diff --git a/reviewboard/static/rb/js/resources/models/tests/defaultReviewerModelTests.js b/reviewboard/static/rb/js/resources/models/tests/defaultReviewerModelTests.js
index 68bafaaccf09fba82b69909eefb1fa78697c965c..acd653a90df26800f844d99cfecafb13105b161a 100644
--- a/reviewboard/static/rb/js/resources/models/tests/defaultReviewerModelTests.js
+++ b/reviewboard/static/rb/js/resources/models/tests/defaultReviewerModelTests.js
@@ -1,4 +1,4 @@
-describe('resources/models/DefaultReviewer', function() {
+suite('rb/resources/models/DefaultReviewer', function() {
     var model;
 
     beforeEach(function() {
diff --git a/reviewboard/static/rb/js/resources/models/tests/diffCommentModelTests.js b/reviewboard/static/rb/js/resources/models/tests/diffCommentModelTests.js
index c92d14d469e5a73927aba7b0f0f72a46c98371f7..02b7fb05cfa67d882ee04bfc70b154f349403b55 100644
--- a/reviewboard/static/rb/js/resources/models/tests/diffCommentModelTests.js
+++ b/reviewboard/static/rb/js/resources/models/tests/diffCommentModelTests.js
@@ -1,4 +1,4 @@
-describe('resources/models/DiffComment', function() {
+suite('rb/resources/models/DiffComment', function() {
     var model;
 
     beforeEach(function() {
diff --git a/reviewboard/static/rb/js/resources/models/tests/draftReviewModelTests.js b/reviewboard/static/rb/js/resources/models/tests/draftReviewModelTests.js
index b59f070877511b294d0a3acb4e844b88364398e5..eed7c04812c38d0bfc475c717d8f5c0e55f978ea 100644
--- a/reviewboard/static/rb/js/resources/models/tests/draftReviewModelTests.js
+++ b/reviewboard/static/rb/js/resources/models/tests/draftReviewModelTests.js
@@ -1,4 +1,4 @@
-describe('resources/models/DraftReview', function() {
+suite('rb/resources/models/DraftReview', function() {
     var model,
         parentObject;
 
diff --git a/reviewboard/static/rb/js/resources/models/tests/draftReviewRequestModelTests.js b/reviewboard/static/rb/js/resources/models/tests/draftReviewRequestModelTests.js
index cea650dc7b55daa7f26e611e8ce1185a532967e3..525eee484deb2023a629529f60f3fc73593651d9 100644
--- a/reviewboard/static/rb/js/resources/models/tests/draftReviewRequestModelTests.js
+++ b/reviewboard/static/rb/js/resources/models/tests/draftReviewRequestModelTests.js
@@ -1,4 +1,4 @@
-describe('resources/models/DraftReviewRequest', function() {
+suite('rb/resources/models/DraftReviewRequest', function() {
     var draft,
         callbacks;
 
diff --git a/reviewboard/static/rb/js/resources/models/tests/fileAttachmentCommentModelTests.js b/reviewboard/static/rb/js/resources/models/tests/fileAttachmentCommentModelTests.js
index 8105ed8346c3c20fe239fc3e814530684a33e3e7..a930fe53503bed6caa28b0b3b4bcc17ff1173d21 100644
--- a/reviewboard/static/rb/js/resources/models/tests/fileAttachmentCommentModelTests.js
+++ b/reviewboard/static/rb/js/resources/models/tests/fileAttachmentCommentModelTests.js
@@ -1,4 +1,4 @@
-describe('resources/models/FileAttachmentComment', function() {
+suite('rb/resources/models/FileAttachmentComment', function() {
     var baseStrings = RB.BaseResource.strings,
         model;
 
diff --git a/reviewboard/static/rb/js/resources/models/tests/fileAttachmentModelTests.js b/reviewboard/static/rb/js/resources/models/tests/fileAttachmentModelTests.js
index e29fcf7257084e5b3e1625e40d61de7cb37cec7b..0588dbe56a6adaf83632bdbed702c708cefa95be 100644
--- a/reviewboard/static/rb/js/resources/models/tests/fileAttachmentModelTests.js
+++ b/reviewboard/static/rb/js/resources/models/tests/fileAttachmentModelTests.js
@@ -1,4 +1,4 @@
-describe('resources/models/FileAttachment', function() {
+suite('rb/resources/models/FileAttachment', function() {
     beforeEach(function() {
         parentObject = new RB.BaseResource({
             'public': true
diff --git a/reviewboard/static/rb/js/resources/models/tests/fileDiffModelTests.js b/reviewboard/static/rb/js/resources/models/tests/fileDiffModelTests.js
index 56fc0ecc6e89885f7e9460a33d8c8d9939b7aba1..ec8fe8981d0caf0dba935cb849ee1cc5f07cefbc 100644
--- a/reviewboard/static/rb/js/resources/models/tests/fileDiffModelTests.js
+++ b/reviewboard/static/rb/js/resources/models/tests/fileDiffModelTests.js
@@ -1,4 +1,4 @@
-describe('resources/models/FileDiff', function() {
+suite('rb/resources/models/FileDiff', function() {
     var model;
 
     beforeEach(function() {
diff --git a/reviewboard/static/rb/js/resources/models/tests/repositoryBranchModelTests.js b/reviewboard/static/rb/js/resources/models/tests/repositoryBranchModelTests.js
index b74b37437e434a80d158de694818772f6f427d15..de626a3ed48540879ccfe331485cbcc564da36bd 100644
--- a/reviewboard/static/rb/js/resources/models/tests/repositoryBranchModelTests.js
+++ b/reviewboard/static/rb/js/resources/models/tests/repositoryBranchModelTests.js
@@ -1,4 +1,4 @@
-describe('resources/models/RepositoryBranch', function() {
+suite('rb/resources/models/RepositoryBranch', function() {
     var model;
 
     beforeEach(function() {
diff --git a/reviewboard/static/rb/js/resources/models/tests/repositoryCommitModelTests.js b/reviewboard/static/rb/js/resources/models/tests/repositoryCommitModelTests.js
index 704d3533ac03177787133f7b77d2c7f572adade1..3c74ac53c1ef3f720f8483a34825e79b1a579cd4 100644
--- a/reviewboard/static/rb/js/resources/models/tests/repositoryCommitModelTests.js
+++ b/reviewboard/static/rb/js/resources/models/tests/repositoryCommitModelTests.js
@@ -1,4 +1,4 @@
-describe('resources/models/RepositoryCommit', function() {
+suite('rb/resources/models/RepositoryCommit', function() {
     var model;
 
     beforeEach(function() {
diff --git a/reviewboard/static/rb/js/resources/models/tests/reviewGroupModelTests.js b/reviewboard/static/rb/js/resources/models/tests/reviewGroupModelTests.js
index 3437d9ffd115918238303cc40662c1ba9de0c835..f918cebbddb7d3bdbfb299ad2fc2208d61562530 100644
--- a/reviewboard/static/rb/js/resources/models/tests/reviewGroupModelTests.js
+++ b/reviewboard/static/rb/js/resources/models/tests/reviewGroupModelTests.js
@@ -1,4 +1,4 @@
-describe('resources/models/ReviewGroup', function() {
+suite('rb/resources/models/ReviewGroup', function() {
     describe('setStarred', function() {
         var url = '/api/users/testuser/watched/groups/',
             callbacks,
diff --git a/reviewboard/static/rb/js/resources/models/tests/reviewModelTests.js b/reviewboard/static/rb/js/resources/models/tests/reviewModelTests.js
index a9b9350ca9aa831507a15a4bf5f7de57294a3744..76ac3dc3c487b63c39464bd664ddb8f6b44909b7 100644
--- a/reviewboard/static/rb/js/resources/models/tests/reviewModelTests.js
+++ b/reviewboard/static/rb/js/resources/models/tests/reviewModelTests.js
@@ -1,4 +1,4 @@
-describe('resources/models/Review', function() {
+suite('rb/resources/models/Review', function() {
     var model;
 
     beforeEach(function() {
diff --git a/reviewboard/static/rb/js/resources/models/tests/reviewReplyModelTests.js b/reviewboard/static/rb/js/resources/models/tests/reviewReplyModelTests.js
index c5e193937af0c668478eaf9ffc95f7cb091f020a..cf9a0163b1c06aa93f208a475256578042c5237a 100644
--- a/reviewboard/static/rb/js/resources/models/tests/reviewReplyModelTests.js
+++ b/reviewboard/static/rb/js/resources/models/tests/reviewReplyModelTests.js
@@ -1,4 +1,4 @@
-describe('resources/models/ReviewReply', function() {
+suite('rb/resources/models/ReviewReply', function() {
     var parentObject,
         model;
 
diff --git a/reviewboard/static/rb/js/resources/models/tests/reviewRequestModelTests.js b/reviewboard/static/rb/js/resources/models/tests/reviewRequestModelTests.js
index 096f02006782ce2a786d5979e2ff8cb95f42bd16..b36bf0c75ddf057e0a71c668a705d826a30b133d 100644
--- a/reviewboard/static/rb/js/resources/models/tests/reviewRequestModelTests.js
+++ b/reviewboard/static/rb/js/resources/models/tests/reviewRequestModelTests.js
@@ -1,4 +1,4 @@
-describe('resources/models/ReviewRequest', function() {
+suite('rb/resources/models/ReviewRequest', function() {
     var reviewRequest,
         callbacks;
 
diff --git a/reviewboard/static/rb/js/resources/models/tests/screenshotCommentModelTests.js b/reviewboard/static/rb/js/resources/models/tests/screenshotCommentModelTests.js
index 2f91b5a50ddcb470ffcde32038c78f492706c644..bd93e6753086aa16ca6e4fe061d03c23c1503fe6 100644
--- a/reviewboard/static/rb/js/resources/models/tests/screenshotCommentModelTests.js
+++ b/reviewboard/static/rb/js/resources/models/tests/screenshotCommentModelTests.js
@@ -1,4 +1,4 @@
-describe('resources/models/ScreenshotComment', function() {
+suite('rb/resources/models/ScreenshotComment', function() {
     var strings = RB.ScreenshotComment.strings,
         model;
 
diff --git a/reviewboard/static/rb/js/resources/models/tests/screenshotModelTests.js b/reviewboard/static/rb/js/resources/models/tests/screenshotModelTests.js
index 2ff09272192f6c3a15a566ca39a0f59b9fcf2069..813e946e8f78c5311d9fa5337465799d657e69a6 100644
--- a/reviewboard/static/rb/js/resources/models/tests/screenshotModelTests.js
+++ b/reviewboard/static/rb/js/resources/models/tests/screenshotModelTests.js
@@ -1,4 +1,4 @@
-describe('resources/models/Screenshot', function() {
+suite('rb/resources/models/Screenshot', function() {
     var parentObject,
         model;
 
diff --git a/reviewboard/static/rb/js/resources/models/tests/validateDiffModelTests.js b/reviewboard/static/rb/js/resources/models/tests/validateDiffModelTests.js
index 2d1dd906a24efeb82844824bf5eeaf6ea2a2bd5d..0d93a961d2bd8179fff3fdef2a256c87cf5c309c 100644
--- a/reviewboard/static/rb/js/resources/models/tests/validateDiffModelTests.js
+++ b/reviewboard/static/rb/js/resources/models/tests/validateDiffModelTests.js
@@ -1,4 +1,4 @@
-describe('resources/models/ValidateDiffModel', function() {
+suite('rb/resources/models/ValidateDiffModel', function() {
     var model;
 
     beforeEach(function() {
diff --git a/reviewboard/static/rb/js/utils/tests/keyBindingUtilsTests.js b/reviewboard/static/rb/js/utils/tests/keyBindingUtilsTests.js
index 03833a6e4735a153e93a51d6fd9beb3eeb913bdb..dd16bdb036cca15cd5cf46297cc364bcec112a3a 100644
--- a/reviewboard/static/rb/js/utils/tests/keyBindingUtilsTests.js
+++ b/reviewboard/static/rb/js/utils/tests/keyBindingUtilsTests.js
@@ -1,4 +1,4 @@
-describe('utils/keyBindingUtils', function() {
+suite('rb/utils/keyBindingUtils', function() {
     describe('KeyBindingsMixin', function() {
         var MyView,
             view;
diff --git a/reviewboard/static/rb/js/utils/tests/linkifyUtilsTests.js b/reviewboard/static/rb/js/utils/tests/linkifyUtilsTests.js
index 3d11bf8ee53f44a02766ce2df861e064d2aaf70a..62d998eda6af0b4505985557665716227c3a34e2 100644
--- a/reviewboard/static/rb/js/utils/tests/linkifyUtilsTests.js
+++ b/reviewboard/static/rb/js/utils/tests/linkifyUtilsTests.js
@@ -1,4 +1,4 @@
-describe('utils/linkifyUtils', function() {
+suite('rb/utils/linkifyUtils', function() {
     describe('linkifyText', function() {
         describe('URLs', function() {
             it('http-based URLs', function() {
diff --git a/reviewboard/static/rb/js/utils/tests/propertyUtilsTests.js b/reviewboard/static/rb/js/utils/tests/propertyUtilsTests.js
index 1fa97a035d9b811e60f63779a4ecf8a91d0a4f6d..1de2ab95cf04fc2ac4a2da04952eeb89aafcba24 100644
--- a/reviewboard/static/rb/js/utils/tests/propertyUtilsTests.js
+++ b/reviewboard/static/rb/js/utils/tests/propertyUtilsTests.js
@@ -1,4 +1,4 @@
-describe('utils/propertyUtils', function() {
+suite('rb/utils/propertyUtils', function() {
     var model;
 
     beforeEach(function() {
diff --git a/reviewboard/static/rb/js/views/tests/collectionViewTests.js b/reviewboard/static/rb/js/views/tests/collectionViewTests.js
index b47a9fc510979bae0fda067d1059f240000fd381..c029c2c6dca5ddac5da3283cf636569aeeb8a3d2 100644
--- a/reviewboard/static/rb/js/views/tests/collectionViewTests.js
+++ b/reviewboard/static/rb/js/views/tests/collectionViewTests.js
@@ -1,4 +1,4 @@
-describe('views/CollectionView', function() {
+suite('rb/views/CollectionView', function() {
     var TestModel,
         TestCollection,
         TestModelView,
diff --git a/reviewboard/static/rb/js/views/tests/commentDialogViewTests.js b/reviewboard/static/rb/js/views/tests/commentDialogViewTests.js
index 5ab07f235dc39a8f57a5de4e98af0be848a80c49..61edfe5412b1b080f894a9af8e8fd32a4e9a955f 100644
--- a/reviewboard/static/rb/js/views/tests/commentDialogViewTests.js
+++ b/reviewboard/static/rb/js/views/tests/commentDialogViewTests.js
@@ -1,4 +1,4 @@
-describe('views/CommentDialogView', function() {
+suite('rb/views/CommentDialogView', function() {
     var reviewRequestEditor,
         reviewRequest;
 
diff --git a/reviewboard/static/rb/js/views/tests/commentIssueBarViewTests.js b/reviewboard/static/rb/js/views/tests/commentIssueBarViewTests.js
index e75c151359241e89cbd5e13b0b4b09e86449cce2..4783a6a805a28374c22d513d706a8987e045e1f6 100644
--- a/reviewboard/static/rb/js/views/tests/commentIssueBarViewTests.js
+++ b/reviewboard/static/rb/js/views/tests/commentIssueBarViewTests.js
@@ -1,4 +1,4 @@
-describe('views/CommentIssueBarView', function() {
+suite('rb/views/CommentIssueBarView', function() {
     var commentIssueManager,
         statuses = RB.CommentIssueBarView.prototype,
         view,
diff --git a/reviewboard/static/rb/js/views/tests/diffFragmentQueueViewTests.js b/reviewboard/static/rb/js/views/tests/diffFragmentQueueViewTests.js
index 7af1db27a952ba9a411f797797627d6bdbef1c8d..afef4a8a6315c833e518fcbb2e3157328d309d60 100644
--- a/reviewboard/static/rb/js/views/tests/diffFragmentQueueViewTests.js
+++ b/reviewboard/static/rb/js/views/tests/diffFragmentQueueViewTests.js
@@ -1,4 +1,4 @@
-describe('views/DiffFragmentQueueView', function() {
+suite('rb/views/DiffFragmentQueueView', function() {
     var fragmentQueue;
 
     beforeEach(function() {
diff --git a/reviewboard/static/rb/js/views/tests/draftReviewBannerViewTests.js b/reviewboard/static/rb/js/views/tests/draftReviewBannerViewTests.js
index 320017daef11816eed59b4be338df8ec18a843f2..262de586ce3b40496c5c9cac62d7ed155501f517 100644
--- a/reviewboard/static/rb/js/views/tests/draftReviewBannerViewTests.js
+++ b/reviewboard/static/rb/js/views/tests/draftReviewBannerViewTests.js
@@ -1,4 +1,4 @@
-describe('views/DraftReviewBannerView', function() {
+suite('rb/views/DraftReviewBannerView', function() {
     var model,
         view,
         template = _.template([
diff --git a/reviewboard/static/rb/js/views/tests/fileAttachmentThumbnailViewTests.js b/reviewboard/static/rb/js/views/tests/fileAttachmentThumbnailViewTests.js
index 2262b18b14e83702d9c0c47916ad8317de601915..624bdaf0662d392a89cdd339ea6fa5c49ad1027d 100644
--- a/reviewboard/static/rb/js/views/tests/fileAttachmentThumbnailViewTests.js
+++ b/reviewboard/static/rb/js/views/tests/fileAttachmentThumbnailViewTests.js
@@ -1,4 +1,4 @@
-describe('views/FileAttachmentThumbnail', function() {
+suite('rb/views/FileAttachmentThumbnail', function() {
     var reviewRequest,
         model,
         view;
diff --git a/reviewboard/static/rb/js/views/tests/reviewBoxListViewTests.js b/reviewboard/static/rb/js/views/tests/reviewBoxListViewTests.js
index 2b486b12cb200f98a0b5ac2008bef512ddd71b54..047fcc36841aee090382ed996b5665330afb7f64 100644
--- a/reviewboard/static/rb/js/views/tests/reviewBoxListViewTests.js
+++ b/reviewboard/static/rb/js/views/tests/reviewBoxListViewTests.js
@@ -1,4 +1,4 @@
-describe('views/ReviewBoxListView', function() {
+suite('rb/views/ReviewBoxListView', function() {
     var template = _.template([
             '<div>',
             ' <a id="collapse-all"></a>',
diff --git a/reviewboard/static/rb/js/views/tests/reviewBoxViewTests.js b/reviewboard/static/rb/js/views/tests/reviewBoxViewTests.js
index 25a30b5973f4ca771769ff9e3b8e1e25e82fc620..5b488065c7a047e5435ec325844bef86682ef25f 100644
--- a/reviewboard/static/rb/js/views/tests/reviewBoxViewTests.js
+++ b/reviewboard/static/rb/js/views/tests/reviewBoxViewTests.js
@@ -1,4 +1,4 @@
-describe('views/ReviewBoxView', function() {
+suite('rb/views/ReviewBoxView', function() {
     var view,
         reviewReply,
         template = _.template([
diff --git a/reviewboard/static/rb/js/views/tests/reviewDialogViewTests.js b/reviewboard/static/rb/js/views/tests/reviewDialogViewTests.js
index a05d5647ee390691d80198719a730cb5392ad5ea..8826610537a13cde655ea0da8866da8280fdf0eb 100644
--- a/reviewboard/static/rb/js/views/tests/reviewDialogViewTests.js
+++ b/reviewboard/static/rb/js/views/tests/reviewDialogViewTests.js
@@ -1,4 +1,4 @@
-describe('views/ReviewDialogView', function() {
+suite('rb/views/ReviewDialogView', function() {
     var baseEmptyCommentListPayload = {
             stat: 'ok',
             total_results: 0,
diff --git a/reviewboard/static/rb/js/views/tests/reviewReplyDraftBannerViewTests.js b/reviewboard/static/rb/js/views/tests/reviewReplyDraftBannerViewTests.js
index 0b2bad3042f2f024c977075e3edc0441e7ecb95d..360a7d8ca685bbc5b142766450fc50895a0d90ed 100644
--- a/reviewboard/static/rb/js/views/tests/reviewReplyDraftBannerViewTests.js
+++ b/reviewboard/static/rb/js/views/tests/reviewReplyDraftBannerViewTests.js
@@ -1,4 +1,4 @@
-describe('views/ReviewReplyDraftBannerView', function() {
+suite('rb/views/ReviewReplyDraftBannerView', function() {
     var reviewReply,
         view;
 
diff --git a/reviewboard/static/rb/js/views/tests/reviewReplyEditorViewTests.js b/reviewboard/static/rb/js/views/tests/reviewReplyEditorViewTests.js
index 3f043dd4e832914de7fdce061a92f7499b01bd48..57124d26e26cadf3cb8d55c00a435b866b133162 100644
--- a/reviewboard/static/rb/js/views/tests/reviewReplyEditorViewTests.js
+++ b/reviewboard/static/rb/js/views/tests/reviewReplyEditorViewTests.js
@@ -1,4 +1,4 @@
-describe('views/ReviewReplyEditorView', function() {
+suite('rb/views/ReviewReplyEditorView', function() {
     var reviewReply,
         editor,
         view;
diff --git a/reviewboard/static/rb/js/views/tests/reviewRequestEditorViewTests.js b/reviewboard/static/rb/js/views/tests/reviewRequestEditorViewTests.js
index 9fb8dc604c178a67455359da6cac40ff74642a1c..600c3c064eb5b7d8b4b8d91257ef341c3dd9d590 100644
--- a/reviewboard/static/rb/js/views/tests/reviewRequestEditorViewTests.js
+++ b/reviewboard/static/rb/js/views/tests/reviewRequestEditorViewTests.js
@@ -1,4 +1,4 @@
-describe('views/ReviewRequestEditorView', function() {
+suite('rb/views/ReviewRequestEditorView', function() {
     var reviewRequest,
         editor,
         view,
diff --git a/reviewboard/static/rb/js/views/tests/screenshotThumbnailViewTests.js b/reviewboard/static/rb/js/views/tests/screenshotThumbnailViewTests.js
index 70b9bcc1ae2fc93cf0bdd1cb2e97045ffe814ac4..bf9c2fe440030b0d39907d3320a991f795380916 100644
--- a/reviewboard/static/rb/js/views/tests/screenshotThumbnailViewTests.js
+++ b/reviewboard/static/rb/js/views/tests/screenshotThumbnailViewTests.js
@@ -1,4 +1,4 @@
-describe('views/ScreenshotThumbnail', function() {
+suite('rb/views/ScreenshotThumbnail', function() {
     var model,
         view,
         template = _.template([
diff --git a/reviewboard/staticbundles.py b/reviewboard/staticbundles.py
index 522457ab54970bef672830517f4c205e79ab6606..b144a680bc835740aaba5099110b52401063bf3e 100644
--- a/reviewboard/staticbundles.py
+++ b/reviewboard/staticbundles.py
@@ -30,6 +30,7 @@ PIPELINE_JS = dict({
         'source_filenames': (
             'lib/js/jasmine-1.3.1.js',
             'lib/js/jasmine-html-1.3.1.js',
+            'lib/js/jasmine.suites-1.0.js',
             'rb/js/collections/tests/filteredCollectionTests.js',
             'rb/js/diffviewer/models/tests/diffFileModelTests.js',
             'rb/js/diffviewer/models/tests/diffReviewableModelTests.js',
