Fix M80 issues for tests

Change-Id: Ibcf6c43c9e4aef31f7c98290cbb22e1e5744f469
diff --git a/gr-checks/gr-checkers-list_test.html b/gr-checks/gr-checkers-list_test.html
index 177e37e..810be7f 100644
--- a/gr-checks/gr-checkers-list_test.html
+++ b/gr-checks/gr-checkers-list_test.html
@@ -4,10 +4,27 @@
 <script src="/bower_components/web-component-tester/browser.js"></script>
 
 <link rel="import" href="/bower_components/polymer/polymer.html">
+<script src="test-pre-setup.js"></script>
 
 <title>gr-checkers-list-view</title>
 <link rel="import" href="gr-checkers-list.html">
 
+<!-- Gr-overlay does not exist in the test framework
+It is expected to be provided by Gerrit core -->
+<dom-module id="gr-overlay">
+  <template>
+  </template>
+  <script>
+    readyToTest().then(() => {
+      Polymer({
+        is: 'gr-overlay',
+        refit() {},
+        open() {return Promise.resolve({})},
+      });
+    })
+  </script>
+</dom-module>
+
 <test-fixture id="basic">
   <template is="dom-template">
     <gr-checkers-list
@@ -165,7 +182,8 @@
 </script>
 
 <script>
-  suite('gr-checkers-list tests', () => {
+  suite('gr-checkers-list tests', async () => {
+    await readyToTest();
     let element;
     let sandbox;
     let fetchJSONSpy; let fetchJSONResolve;
@@ -213,6 +231,7 @@
     suite('with checkers', () => {
       setup(done => {
         fetchJSONResolve(CHECKERS);
+        element._showConfigureOverlay();
         flush(done);
       });
       test('renders correct number of checkers', () => {
diff --git a/gr-checks/gr-checks-change-list-header-view_test.html b/gr-checks/gr-checks-change-list-header-view_test.html
index 5724fb7..b805905 100644
--- a/gr-checks/gr-checks-change-list-header-view_test.html
+++ b/gr-checks/gr-checks-change-list-header-view_test.html
@@ -4,6 +4,7 @@
 <script src="/bower_components/web-component-tester/browser.js"></script>
 
 <link rel="import" href="/bower_components/polymer/polymer.html">
+<script src="test-pre-setup.js"></script>
 
 <title>gr-checks-change-list-header-view</title>
 <link rel="import" href="gr-checks-change-list-header-view.html">
@@ -15,7 +16,8 @@
 </test-fixture>
 
 <script>
-  suite('gr-checks-change-list-header-view tests', () => {
+  suite('gr-checks-change-list-header-view tests', async () => {
+    await readyToTest();
     let element;
     let sandbox;
 
diff --git a/gr-checks/gr-checks-change-list-item-cell-view_test.html b/gr-checks/gr-checks-change-list-item-cell-view_test.html
index f01b7d1..9659777 100644
--- a/gr-checks/gr-checks-change-list-item-cell-view_test.html
+++ b/gr-checks/gr-checks-change-list-item-cell-view_test.html
@@ -4,6 +4,7 @@
 <script src="/bower_components/web-component-tester/browser.js"></script>
 
 <link rel="import" href="/bower_components/polymer/polymer.html">
+<script src="test-pre-setup.js"></script>
 
 <title>gr-checks-change-list-item-cell-view</title>
 <link rel="import" href="gr-checks-change-list-item-cell-view.html">
@@ -15,7 +16,8 @@
 </test-fixture>
 
 <script>
-  suite('gr-checks-change-list-item-cell-view tests', () => {
+  suite('gr-checks-change-list-item-cell-view tests', async () => {
+    await readyToTest();
     let element;
     let sandbox;
 
diff --git a/gr-checks/gr-checks-change-view-tab-header-view_test.html b/gr-checks/gr-checks-change-view-tab-header-view_test.html
index cdcff23..62fef1b 100644
--- a/gr-checks/gr-checks-change-view-tab-header-view_test.html
+++ b/gr-checks/gr-checks-change-view-tab-header-view_test.html
@@ -5,6 +5,7 @@
 <script src="/bower_components/web-component-tester/browser.js"></script>
 
 <link rel="import" href="/bower_components/polymer/polymer.html">
+<script src="test-pre-setup.js"></script>
 
 <title>gr-checks-change-view-tab-header-view</title>
 <link rel="import" href="gr-checks-change-view-tab-header-view.html">
@@ -16,7 +17,8 @@
 </test-fixture>
 
 <script>
-  suite('gr-checks-change-view-tab-header-view tests', () => {
+  suite('gr-checks-change-view-tab-header-view tests', async () => {
+    await readyToTest();
     let element;
     let sandbox;
 
diff --git a/gr-checks/gr-checks-chip-view_test.html b/gr-checks/gr-checks-chip-view_test.html
index e17d772..e926e60 100644
--- a/gr-checks/gr-checks-chip-view_test.html
+++ b/gr-checks/gr-checks-chip-view_test.html
@@ -4,6 +4,7 @@
 <script src="/bower_components/web-component-tester/browser.js"></script>
 
 <link rel="import" href="/bower_components/polymer/polymer.html">
+<script src="test-pre-setup.js"></script>
 
 <title>gr-checks-chip-view</title>
 <link rel="import" href="gr-checks-chip-view.html">
@@ -31,7 +32,8 @@
     state: 'FAILED',
   };
 
-  suite('gr-checks-chip-view tests', () => {
+  suite('gr-checks-chip-view tests', async () => {
+    await readyToTest();
     let element;
     let sandbox;
     let getChecksSpy;
diff --git a/gr-checks/gr-checks-item_test.html b/gr-checks/gr-checks-item_test.html
index 4d479bb..011e34a 100644
--- a/gr-checks/gr-checks-item_test.html
+++ b/gr-checks/gr-checks-item_test.html
@@ -1,9 +1,10 @@
 <!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.js"></script>
+<script src="../../../bower_components/webcomponentsjs/webcomponents-lite.min.js"></script>
 <script src="/bower_components/web-component-tester/browser.js"></script>
 <script src="../../../bower_components/moment/min/moment.min.js"></script>
 <link rel="import" href="/bower_components/polymer/polymer.html">
+<script src="test-pre-setup.js"></script>
 
 <title>gr-checks-item</title>
 <link rel="import" href="gr-checks-item.html">
@@ -18,7 +19,8 @@
 </test-fixture>
 
 <script>
-  suite('gr-checks-item tests', () => {
+  suite('gr-checks-item tests', async () => {
+    await readyToTest();
     let element;
     let sandbox;
     let retryCheckSpy;
diff --git a/gr-checks/gr-checks-status_test.html b/gr-checks/gr-checks-status_test.html
index f4c5fab..a2ccac7 100644
--- a/gr-checks/gr-checks-status_test.html
+++ b/gr-checks/gr-checks-status_test.html
@@ -4,6 +4,7 @@
 <script src="/bower_components/web-component-tester/browser.js"></script>
 
 <link rel="import" href="/bower_components/polymer/polymer.html">
+<script src="test-pre-setup.js"></script>
 
 <title>gr-checks-item</title>
 <link rel="import" href="gr-checks-status.html">
@@ -15,7 +16,8 @@
 </test-fixture>
 
 <script>
-  suite('gr-checks-status tests', () => {
+  suite('gr-checks-status tests', async () => {
+    await readyToTest();
     let sandbox;
 
     setup(() => {
diff --git a/gr-checks/gr-checks-view_test.html b/gr-checks/gr-checks-view_test.html
index 271d055..d9e44a0 100644
--- a/gr-checks/gr-checks-view_test.html
+++ b/gr-checks/gr-checks-view_test.html
@@ -4,6 +4,7 @@
 <script src="/bower_components/web-component-tester/browser.js"></script>
 
 <link rel="import" href="/bower_components/polymer/polymer.html">
+<script src="test-pre-setup.js"></script>
 <script src="../bower_components/iron-test-helpers/mock-interactions.js"></script>
 
 
@@ -16,10 +17,12 @@
   <template>
   </template>
   <script>
-    Polymer({
-      is: 'gr-overlay',
-      refit() {},
-    });
+    readyToTest().then(() => {
+      Polymer({
+        is: 'gr-overlay',
+        refit() {},
+      });
+    })
   </script>
 </dom-module>
 
@@ -31,7 +34,7 @@
       get-checks="[[getChecks]]"
       is-configured="[[isConfigured]]"
       plugin="[[plugin]]"
-      retry-check="[[retryCheck]]"
+      retry-check="[[retryCheck]]">
     </gr-checks-view>
   </template>
 </test-fixture>
@@ -98,9 +101,10 @@
 
   const CHECKS_POLL_INTERVAL_MS = 60 * 1000;
   const STATE_ALL = 'ALL';
-  const Statuses = window.Gerrit.Checks.Statuses;
 
-  suite('gr-checks-view tests', () => {
+  suite('gr-checks-view tests', async () => {
+    await readyToTest();
+    const Statuses = window.Gerrit.Checks.Statuses;
     let element;
     let sandbox;
     let getChecksSpy;
diff --git a/gr-checks/test-pre-setup.js b/gr-checks/test-pre-setup.js
new file mode 100644
index 0000000..edd1d64
--- /dev/null
+++ b/gr-checks/test-pre-setup.js
@@ -0,0 +1,32 @@
+/**
+ * @license
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* Taken from gerrit/polygerrit-ui/app/test/test-pre-setup.js
+This file should be kept in sync with the polygerrit version of the file
+*/
+
+/**
+ * After M80, htmlImports has been removed and the polyfill from
+ * webcomponents can only support async html imports unlike
+ * native htmlImports which loads htmls synchronously.
+ */
+window.readyToTest = () => Promise.race([
+  new Promise(resolve =>
+    window.addEventListener('HTMLImportsLoaded', resolve)),
+  // timeout after 5s, the test timeout is 10s
+  new Promise(resolve => setTimeout(resolve, 5000)),
+]);