diff --git a/gr-checks/gr-checkers-list.html b/gr-checks/gr-checkers-list.html
index 36e8f85..6c62e4d 100644
--- a/gr-checks/gr-checkers-list.html
+++ b/gr-checks/gr-checkers-list.html
@@ -121,7 +121,7 @@
       </template>
     </nav>
 
-    <gr-overlay id="createOverlay" with-backdrop>
+    <gr-overlay id="createOverlay">
       <gr-dialog
           id="createDialog"
           confirm-label="Create"
@@ -138,7 +138,7 @@
         </div>
       </gr-dialog>
     </gr-overlay>
-    <gr-overlay id="editOverlay" with-backdrop>
+    <gr-overlay id="editOverlay">
       <gr-dialog
           id="editDialog"
           confirm-label="Save"
diff --git a/gr-checks/gr-checkers-list.js b/gr-checks/gr-checkers-list.js
index 2542832..d2c7256 100644
--- a/gr-checks/gr-checkers-list.js
+++ b/gr-checks/gr-checkers-list.js
@@ -9,7 +9,15 @@
   Polymer({
     is: 'gr-checkers-list',
     properties: {
-      pluginRestApi: Object,
+      /**
+       * Add observer on pluginRestApi to call getCheckers when it's defined
+       * as initially getCheckers was being called before pluginRestApi was
+       * initialised by gr-checks-view
+       */
+      pluginRestApi: {
+        type: Object,
+        observer: '_getCheckers'
+      },
       // Checker that will be passed to the editOverlay modal
       checker: Object,
       _checkers: Array,
@@ -51,10 +59,6 @@
       '_showCheckers(_checkers, _filter)',
     ],
 
-    attached() {
-      this._getCheckers();
-    },
-
     _contains(target, keyword) {
       return target.toLowerCase().includes(keyword.toLowerCase().trim());
     },
@@ -117,8 +121,9 @@
       }
     },
 
-    _getCheckers() {
-      this.pluginRestApi.fetchJSON({
+    _getCheckers(pluginRestApi) {
+      if (!pluginRestApi) return;
+      pluginRestApi.fetchJSON({
         method: 'GET',
         url: GET_CHECKERS_URL,
       }).then(checkers => {
diff --git a/gr-checks/gr-checkers-list_test.html b/gr-checks/gr-checkers-list_test.html
new file mode 100644
index 0000000..6b5e0ad
--- /dev/null
+++ b/gr-checks/gr-checkers-list_test.html
@@ -0,0 +1,244 @@
+<!DOCTYPE html>
+<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
+<script src="/bower_components/webcomponentsjs/webcomponents-lite.min.js"></script>
+<script src="/bower_components/web-component-tester/browser.js"></script>
+
+<link rel="import" href="/bower_components/polymer/polymer.html">
+
+<title>gr-checkers-list-view</title>
+<link rel="import" href="gr-checkers-list.html">
+
+<test-fixture id="basic">
+  <template is="dom-template">
+    <gr-checkers-list
+      plugin-rest-api="[[pluginRestApi]]"
+    >
+    </gr-checkers-list>
+</template>
+</test-fixture>
+
+<script>
+  const CHECKERS = [
+    {
+        "uuid":"C:D",
+        "name":"A",
+        "description":"B",
+        "repository":"Backend",
+        "status":"ENABLED",
+        "blocking":[
+
+        ],
+        "query":"status:open",
+        "created":"2019-07-25 13:08:43.000000000",
+        "updated":"2019-07-25 13:08:43.000000000"
+    },
+    {
+        "uuid":"aa:bb",
+        "name":"n1",
+        "description":"d1",
+        "repository":"All-Users",
+        "status":"ENABLED",
+        "blocking":[
+
+        ],
+        "query":"status:open",
+        "created":"2019-07-29 13:07:17.000000000",
+        "updated":"2019-07-29 13:07:17.000000000"
+    },
+    {
+        "uuid":"adsf:asdasdas",
+        "name":"ds",
+        "description":"s",
+        "repository":"Scripts",
+        "status":"ENABLED",
+        "blocking":[
+
+        ],
+        "query":"status:open",
+        "created":"2019-07-29 13:28:09.000000000",
+        "updated":"2019-07-29 13:28:09.000000000"
+    },
+    {
+        "uuid":"ijkl:mnop",
+        "name":"abcd",
+        "description":"efgh",
+        "repository":"All-Projects",
+        "status":"ENABLED",
+        "blocking":[
+
+        ],
+        "query":"status:open",
+        "created":"2019-07-29 09:33:25.000000000",
+        "updated":"2019-07-29 09:33:25.000000000"
+    },
+    {
+        "uuid":"ngfnf:mhghgnhghn",
+        "name":"nbvfg",
+        "description":"fjhgj",
+        "repository":"All-Users",
+        "status":"ENABLED",
+        "blocking":[
+
+        ],
+        "query":"status:open",
+        "created":"2019-08-06 14:21:34.000000000",
+        "updated":"2019-08-06 14:21:34.000000000"
+    },
+    {
+        "uuid":"sdfsdf--:sdfsdf333",
+        "name":"sdfsdf",
+        "description":"sdfsdfsd",
+        "repository":"Scripts",
+        "status":"ENABLED",
+        "blocking":[
+
+        ],
+        "query":"status:open",
+        "created":"2019-07-30 13:00:19.000000000",
+        "updated":"2019-07-30 13:00:19.000000000"
+    },
+    {  
+        "uuid":"test:checker1",
+        "name":"Unit Tests",
+        "description":"Random description that should be improved at some point",
+        "repository":"Backend",
+        "status":"ENABLED",
+        "blocking":[
+
+        ],
+        "query":"status:open",
+        "created":"2019-07-22 13:16:52.000000000",
+        "updated":"2019-07-22 14:21:14.000000000"
+    },
+    {
+        "uuid":"test:checker2",
+        "name":"Code Style",
+        "repository":"Backend",
+        "status":"ENABLED",
+        "blocking":[
+
+        ],
+        "query":"status:open",
+        "created":"2019-07-22 13:26:56.000000000",
+        "updated":"2019-07-22 13:26:56.000000000"
+    },
+    {
+        "uuid":"xddf:sdfsdfsdf",
+        "name":"sdfsdf",
+        "description":"sdfsdf",
+        "repository":"Scripts",
+        "status":"ENABLED",
+        "blocking":[
+
+        ],
+        "query":"status:open",
+        "created":"2019-07-29 14:11:59.000000000",
+        "updated":"2019-07-29 14:11:59.000000000"
+    },
+    {
+        "uuid":"zxczxc:bnvnbvnbvn",
+        "name":"zxc",
+        "description":"zxc",
+        "repository":"Scripts",
+        "status":"ENABLED",
+        "blocking":[
+
+        ],
+        "query":"status:open",
+        "created":"2019-07-29 14:00:24.000000000",
+        "updated":"2019-07-29 14:00:24.000000000"
+    },
+    {
+        "uuid":"zxczxc:sdfsdf",
+        "name":"zxc",
+        "description":"zxc",
+        "repository":"Scripts",
+        "status":"ENABLED",
+        "blocking":[
+
+        ],
+        "query":"status:open",
+        "created":"2019-07-29 13:30:47.000000000",
+        "updated":"2019-07-29 13:30:47.000000000"
+    }
+  ];
+</script>
+
+<script>
+
+  suite('gr-checkers-list tests', () => {
+    let element;
+    let sandbox;
+    let fetchJSONSpy, fetchJSONPromise, fetchJSONResolve;
+
+    setup((done) => {
+      sandbox = sinon.sandbox.create();
+
+      fetchJSONSpy = sinon.stub();
+      const fetchJSONPromise = new Promise((resolve, reject) => {
+      fetchJSONResolve = resolve;
+      })
+      fetchJSONSpy.returns(fetchJSONPromise)
+
+      const pluginRestApi = {
+        fetchJSON: fetchJSONSpy,
+      };
+
+      element = fixture('basic', {
+        pluginRestApi
+      });
+      flush(done);
+    });
+
+    teardown(() => { sandbox.restore(); });
+
+    test('renders checker list table headings', () => {
+      const checkersList = element.$$('table')
+      const headings = checkersList.firstElementChild.firstElementChild.
+                        children;
+      const expectedHeadings = ["Checker Name", "Repository", "Status",
+        "Required", "Checker Description", "Edit"];
+      for (let i = 0;i < headings.length;i++) {
+        assert(headings[i].innerText === expectedHeadings[i]);
+      }
+    });
+
+    test('create checker button renders', () => {
+      assert(element.querySelector('#createNewContainer'));
+      const button = element.querySelector('#createNewContainer')
+                            .querySelector('gr-button');
+      assert(button);
+      assert(button.innerText === 'Create New');
+    });
+
+    suite('with checkers', () => {
+      setup((done) => {
+        fetchJSONResolve(CHECKERS);
+        flush(done);
+      })
+      test('renders correct number of checkers', () => {
+        const checkers = element.$$('table > tbody:nth-child(2)')
+                                .querySelectorAll('tr');
+        assert(checkers.length === CHECKERS.length);
+      })
+      test('renders correct checkers', () => {
+        const checkers = element.$$('table > tbody:nth-child(2)')
+                                .querySelectorAll('tr');
+        for (let i = 0;i < checkers.length;i++) {
+          const checkerDetails = checkers[i].querySelectorAll('td');
+          assert(CHECKERS[i].name === checkerDetails[0].innerText);
+          assert(CHECKERS[i].repository === checkerDetails[1].innerText);
+          const status = CHECKERS[i].status || "NO";
+          assert(status === checkerDetails[2].innerText);
+          const checkerRequired = (CHECKERS[i].blocking && 
+                                   CHECKERS[i].blocking.length > 0)
+                                   ? "YES": "NO";
+          assert(checkerRequired === checkerDetails[3].innerText);
+          const description = CHECKERS[i].description || '';
+          assert(description === checkerDetails[4].innerText);
+        }
+      })
+    });
+
+  });
+</script>
diff --git a/java/com/google/gerrit/plugins/checks/acceptance/BUILD b/java/com/google/gerrit/plugins/checks/acceptance/BUILD
index 6a1d023..bea0c25 100644
--- a/java/com/google/gerrit/plugins/checks/acceptance/BUILD
+++ b/java/com/google/gerrit/plugins/checks/acceptance/BUILD
@@ -1,3 +1,5 @@
+load("@rules_java//java:defs.bzl", "java_library")
+
 package(
     default_testonly = True,
     default_visibility = ["//plugins/checks:visibility"],
diff --git a/java/com/google/gerrit/plugins/checks/acceptance/testsuite/BUILD b/java/com/google/gerrit/plugins/checks/acceptance/testsuite/BUILD
index 577bfd4..203bab6 100644
--- a/java/com/google/gerrit/plugins/checks/acceptance/testsuite/BUILD
+++ b/java/com/google/gerrit/plugins/checks/acceptance/testsuite/BUILD
@@ -1,3 +1,5 @@
+load("@rules_java//java:defs.bzl", "java_library")
+
 package(
     default_testonly = True,
     default_visibility = ["//plugins/checks:visibility"],
diff --git a/java/com/google/gerrit/plugins/checks/testing/BUILD b/java/com/google/gerrit/plugins/checks/testing/BUILD
index 6e4e2b7..0f67a93 100644
--- a/java/com/google/gerrit/plugins/checks/testing/BUILD
+++ b/java/com/google/gerrit/plugins/checks/testing/BUILD
@@ -1,3 +1,5 @@
+load("@rules_java//java:defs.bzl", "java_library")
+
 package(
     default_testonly = True,
     default_visibility = ["//plugins/checks:visibility"],
diff --git a/proto/BUILD b/proto/BUILD
index 6e3b839..168ca6f 100644
--- a/proto/BUILD
+++ b/proto/BUILD
@@ -1,3 +1,6 @@
+load("@rules_proto//proto:defs.bzl", "proto_library")
+load("@rules_java//java:defs.bzl", "java_proto_library")
+
 package(default_visibility = ["//plugins/checks:visibility"])
 
 proto_library(
