Merge "Move lit tests to use @open-wc's fixture function"
diff --git a/polygerrit-ui/app/elements/checks/gr-hovercard-run_test.ts b/polygerrit-ui/app/elements/checks/gr-hovercard-run_test.ts
index 2cf02d6..bec2b92 100644
--- a/polygerrit-ui/app/elements/checks/gr-hovercard-run_test.ts
+++ b/polygerrit-ui/app/elements/checks/gr-hovercard-run_test.ts
@@ -17,18 +17,16 @@
 
 import '../../test/common-test-setup-karma';
 import './gr-hovercard-run';
-import {html} from '@polymer/polymer/lib/utils/html-tag';
+import {fixture, html} from '@open-wc/testing-helpers';
 import {GrHovercardRun} from './gr-hovercard-run';
 
-const basicFixture = fixtureFromTemplate(html`
-  <gr-hovercard-run class="hovered"></gr-hovercard-run>
-`);
-
 suite('gr-hovercard-run tests', () => {
   let element: GrHovercardRun;
 
   setup(async () => {
-    element = basicFixture.instantiate() as GrHovercardRun;
+    element = await fixture<GrHovercardRun>(html`
+      <gr-hovercard-run class="hovered"></gr-hovercard-run>
+    `);
     await flush();
   });
 
diff --git a/polygerrit-ui/app/elements/gr-app_test.ts b/polygerrit-ui/app/elements/gr-app_test.ts
index 833f3ac..02ae6c6 100644
--- a/polygerrit-ui/app/elements/gr-app_test.ts
+++ b/polygerrit-ui/app/elements/gr-app_test.ts
@@ -18,7 +18,7 @@
 import '../test/common-test-setup-karma';
 import './gr-app';
 import {getAppContext} from '../services/app-context';
-import {html} from '@polymer/polymer/lib/utils/html-tag';
+import {fixture, html} from '@open-wc/testing-helpers';
 import {queryAndAssert, stubRestApi} from '../test/test-utils';
 import {GrApp} from './gr-app';
 import {
@@ -30,8 +30,6 @@
 import {GrAppElement} from './gr-app-element';
 import {GrPluginHost} from './plugins/gr-plugin-host/gr-plugin-host';
 
-const basicFixture = fixtureFromTemplate(html`<gr-app id="app"></gr-app>`);
-
 suite('gr-app tests', () => {
   let grApp: GrApp;
   const config = createServerInfo();
@@ -49,7 +47,7 @@
     stubRestApi('getVersion').returns(Promise.resolve('42'));
     stubRestApi('probePath').returns(Promise.resolve(false));
 
-    grApp = basicFixture.instantiate() as GrApp;
+    grApp = await fixture<GrApp>(html`<gr-app id="app"></gr-app>`);
     await flush();
   });
 
diff --git a/polygerrit-ui/app/elements/shared/gr-button/gr-button_test.ts b/polygerrit-ui/app/elements/shared/gr-button/gr-button_test.ts
index 9ebd58dd..eaa4e931 100644
--- a/polygerrit-ui/app/elements/shared/gr-button/gr-button_test.ts
+++ b/polygerrit-ui/app/elements/shared/gr-button/gr-button_test.ts
@@ -19,24 +19,12 @@
 import '../../../test/common-test-setup-karma';
 import './gr-button';
 import {addListener} from '@polymer/polymer/lib/utils/gestures';
-import {html} from '@polymer/polymer/lib/utils/html-tag';
+import {fixture, html} from '@open-wc/testing-helpers';
 import {GrButton} from './gr-button';
 import {pressKey, queryAndAssert} from '../../../test/test-utils';
 import {PaperButtonElement} from '@polymer/paper-button';
 import {Key, Modifier} from '../../../utils/dom-util';
 
-const basicFixture = fixtureFromElement('gr-button');
-
-const nestedFixture = fixtureFromTemplate(html`
-  <div id="test">
-    <gr-button class="testBtn"></gr-button>
-  </div>
-`);
-
-const tabindexFixture = fixtureFromTemplate(html`
-  <gr-button tabindex="3"></gr-button>
-`);
-
 suite('gr-button tests', () => {
   let element: GrButton;
 
@@ -51,7 +39,7 @@
   };
 
   setup(async () => {
-    element = basicFixture.instantiate();
+    element = await fixture<GrButton>('<gr-button></gr-button>');
     await element.updateComplete;
   });
 
@@ -126,7 +114,9 @@
   });
 
   test('tabindex should be preserved', async () => {
-    const tabIndexElement = tabindexFixture.instantiate() as GrButton;
+    const tabIndexElement = await fixture<GrButton>(html`
+      <gr-button tabindex="3"></gr-button>
+    `);
     tabIndexElement.disabled = false;
     await element.updateComplete;
     assert.equal(tabIndexElement.getAttribute('tabindex'), '3');
@@ -213,19 +203,21 @@
       assert.isTrue(reportStub.calledOnce);
       assert.equal(reportStub.lastCall.args[0], 'button-click');
       assert.deepEqual(reportStub.lastCall.args[1], {
-        path: `html>body>test-fixture#${element.parentElement!.id}>gr-button`,
+        path: 'html>body>div>gr-button',
       });
     });
 
-    test('report event after click on nested', () => {
-      const nestedElement = nestedFixture.instantiate() as HTMLDivElement;
+    test('report event after click on nested', async () => {
+      const nestedElement = await fixture<HTMLDivElement>(html`
+        <div id="test">
+          <gr-button class="testBtn"></gr-button>
+        </div>
+      `);
       MockInteractions.click(queryAndAssert(nestedElement, 'gr-button'));
       assert.isTrue(reportStub.calledOnce);
       assert.equal(reportStub.lastCall.args[0], 'button-click');
       assert.deepEqual(reportStub.lastCall.args[1], {
-        path:
-          `html>body>test-fixture#${nestedElement.parentElement!.id}` +
-          '>div#test>gr-button.testBtn',
+        path: 'html>body>div>div#test>gr-button.testBtn',
       });
     });
   });
diff --git a/polygerrit-ui/app/elements/shared/gr-cursor-manager/gr-cursor-manager_test.js b/polygerrit-ui/app/elements/shared/gr-cursor-manager/gr-cursor-manager_test.js
index d0bd420..47b26b2 100644
--- a/polygerrit-ui/app/elements/shared/gr-cursor-manager/gr-cursor-manager_test.js
+++ b/polygerrit-ui/app/elements/shared/gr-cursor-manager/gr-cursor-manager_test.js
@@ -17,25 +17,22 @@
 
 import '../../../test/common-test-setup-karma.js';
 import './gr-cursor-manager.js';
-import {html} from '@polymer/polymer/lib/utils/html-tag.js';
+import {fixture, html} from '@open-wc/testing-helpers';
 import {AbortStop, CursorMoveResult} from '../../../api/core.js';
 import {GrCursorManager} from './gr-cursor-manager.js';
 
-const basicTestFixutre = fixtureFromTemplate(html`
-    <ul>
-      <li>A</li>
-      <li>B</li>
-      <li>C</li>
-      <li>D</li>
-    </ul>
-`);
-
 suite('gr-cursor-manager tests', () => {
   let cursor;
   let list;
 
-  setup(() => {
-    list = basicTestFixutre.instantiate();
+  setup(async () => {
+    list = await fixture(html`
+    <ul>
+      <li>A</li>
+      <li>B</li>
+      <li>C</li>
+      <li>D</li>
+    </ul>`);
     cursor = new GrCursorManager();
     cursor.cursorTargetClass = 'targeted';
   });
diff --git a/polygerrit-ui/app/elements/shared/gr-date-formatter/gr-date-formatter_test.js b/polygerrit-ui/app/elements/shared/gr-date-formatter/gr-date-formatter_test.js
index 860a7e7..2f446cb 100644
--- a/polygerrit-ui/app/elements/shared/gr-date-formatter/gr-date-formatter_test.js
+++ b/polygerrit-ui/app/elements/shared/gr-date-formatter/gr-date-formatter_test.js
@@ -18,17 +18,18 @@
 import '../../../test/common-test-setup-karma.js';
 import './gr-date-formatter.js';
 import {parseDate} from '../../../utils/date-util.js';
-import {html} from '@polymer/polymer/lib/utils/html-tag.js';
+import {fixture, html} from '@open-wc/testing-helpers';
 import {stubRestApi} from '../../../test/test-utils.js';
 
-const basicFixture = fixtureFromTemplate(html`
-<gr-date-formatter withTooltip dateStr="2015-09-24 23:30:17.033000000">
-</gr-date-formatter>
-`);
+const basicTemplate = html`
+  <gr-date-formatter withTooltip dateStr="2015-09-24 23:30:17.033000000">
+  </gr-date-formatter>
+`;
 
-const lightFixture = fixtureFromTemplate(html`
-<gr-date-formatter dateStr="2015-09-24 23:30:17.033000000"></gr-date-formatter>
-`);
+const lightTemplate = html`
+  <gr-date-formatter dateStr="2015-09-24 23:30:17.033000000">
+  </gr-date-formatter>
+`;
 
 suite('gr-date-formatter tests', () => {
   let element;
@@ -73,15 +74,17 @@
   }
 
   suite('STD + 24 hours time format preference', () => {
-    setup(() => stubRestAPI({
-      time_format: 'HHMM_24',
-      date_format: 'STD',
-      relative_date_in_change_table: false,
-    }).then(() => {
-      element = basicFixture.instantiate();
+    setup(async () => {
+      await stubRestAPI({
+        time_format: 'HHMM_24',
+        date_format: 'STD',
+        relative_date_in_change_table: false,
+      });
+
+      element = await fixture(basicTemplate);
       sinon.stub(element, '_getUtcOffsetString').returns('');
-      return element._loadPreferences();
-    }));
+      await element._loadPreferences();
+    });
 
     test('invalid dates are quietly rejected', () => {
       assert.notOk((new Date('foo')).valueOf());
@@ -124,15 +127,16 @@
   });
 
   suite('US + 24 hours time format preference', () => {
-    setup(() => stubRestAPI({
-      time_format: 'HHMM_24',
-      date_format: 'US',
-      relative_date_in_change_table: false,
-    }).then(() => {
-      element = basicFixture.instantiate();
+    setup(async () => {
+      await stubRestAPI({
+        time_format: 'HHMM_24',
+        date_format: 'US',
+        relative_date_in_change_table: false,
+      });
+      element = await fixture(basicTemplate);
       sinon.stub(element, '_getUtcOffsetString').returns('');
-      return element._loadPreferences();
-    }));
+      await element._loadPreferences();
+    });
 
     test('Within 24 hours on same day', async () => {
       await testDates('2015-07-29 20:34:14.985000000',
@@ -160,15 +164,17 @@
   });
 
   suite('ISO + 24 hours time format preference', () => {
-    setup(() => stubRestAPI({
-      time_format: 'HHMM_24',
-      date_format: 'ISO',
-      relative_date_in_change_table: false,
-    }).then(() => {
-      element = basicFixture.instantiate();
+    setup(async () => {
+      await stubRestAPI({
+        time_format: 'HHMM_24',
+        date_format: 'ISO',
+        relative_date_in_change_table: false,
+      });
+
+      element = await fixture(basicTemplate);
       sinon.stub(element, '_getUtcOffsetString').returns('');
-      return element._loadPreferences();
-    }));
+      await element._loadPreferences();
+    });
 
     test('Within 24 hours on same day', async () => {
       await testDates('2015-07-29 20:34:14.985000000',
@@ -196,15 +202,17 @@
   });
 
   suite('EURO + 24 hours time format preference', () => {
-    setup(() => stubRestAPI({
-      time_format: 'HHMM_24',
-      date_format: 'EURO',
-      relative_date_in_change_table: false,
-    }).then(() => {
-      element = basicFixture.instantiate();
+    setup(async () => {
+      await stubRestAPI({
+        time_format: 'HHMM_24',
+        date_format: 'EURO',
+        relative_date_in_change_table: false,
+      });
+
+      element = await fixture(basicTemplate);
       sinon.stub(element, '_getUtcOffsetString').returns('');
-      return element._loadPreferences();
-    }));
+      await element._loadPreferences();
+    });
 
     test('Within 24 hours on same day', async () => {
       await testDates('2015-07-29 20:34:14.985000000',
@@ -232,15 +240,17 @@
   });
 
   suite('UK + 24 hours time format preference', () => {
-    setup(() => stubRestAPI({
-      time_format: 'HHMM_24',
-      date_format: 'UK',
-      relative_date_in_change_table: false,
-    }).then(() => {
-      element = basicFixture.instantiate();
+    setup(async () => {
+      stubRestAPI({
+        time_format: 'HHMM_24',
+        date_format: 'UK',
+        relative_date_in_change_table: false,
+      });
+
+      element = await fixture(basicTemplate);
       sinon.stub(element, '_getUtcOffsetString').returns('');
-      return element._loadPreferences();
-    }));
+      await element._loadPreferences();
+    });
 
     test('Within 24 hours on same day', async () => {
       await testDates('2015-07-29 20:34:14.985000000',
@@ -268,16 +278,13 @@
   });
 
   suite('STD + 12 hours time format preference', () => {
-    setup(() =>
+    setup(async () => {
       // relative_date_in_change_table is not set when false.
-      stubRestAPI(
-          {time_format: 'HHMM_12', date_format: 'STD'}
-      ).then(() => {
-        element = basicFixture.instantiate();
-        sinon.stub(element, '_getUtcOffsetString').returns('');
-        return element._loadPreferences();
-      })
-    );
+      await stubRestAPI({time_format: 'HHMM_12', date_format: 'STD'});
+      element = await fixture(basicTemplate);
+      sinon.stub(element, '_getUtcOffsetString').returns('');
+      await element._loadPreferences();
+    });
 
     test('Within 24 hours on same day', async () => {
       await testDates('2015-07-29 20:34:14.985000000',
@@ -289,16 +296,13 @@
   });
 
   suite('US + 12 hours time format preference', () => {
-    setup(() =>
+    setup(async () => {
       // relative_date_in_change_table is not set when false.
-      stubRestAPI(
-          {time_format: 'HHMM_12', date_format: 'US'}
-      ).then(() => {
-        element = basicFixture.instantiate();
-        sinon.stub(element, '_getUtcOffsetString').returns('');
-        return element._loadPreferences();
-      })
-    );
+      await stubRestAPI({time_format: 'HHMM_12', date_format: 'US'});
+      element = await fixture(basicTemplate);
+      sinon.stub(element, '_getUtcOffsetString').returns('');
+      await element._loadPreferences();
+    });
 
     test('Within 24 hours on same day', async () => {
       await testDates('2015-07-29 20:34:14.985000000',
@@ -310,16 +314,13 @@
   });
 
   suite('ISO + 12 hours time format preference', () => {
-    setup(() =>
+    setup(async () => {
       // relative_date_in_change_table is not set when false.
-      stubRestAPI(
-          {time_format: 'HHMM_12', date_format: 'ISO'}
-      ).then(() => {
-        element = basicFixture.instantiate();
-        sinon.stub(element, '_getUtcOffsetString').returns('');
-        return element._loadPreferences();
-      })
-    );
+      await stubRestAPI({time_format: 'HHMM_12', date_format: 'ISO'});
+      element = await fixture(basicTemplate);
+      sinon.stub(element, '_getUtcOffsetString').returns('');
+      await element._loadPreferences();
+    });
 
     test('Within 24 hours on same day', async () => {
       await testDates('2015-07-29 20:34:14.985000000',
@@ -331,16 +332,13 @@
   });
 
   suite('EURO + 12 hours time format preference', () => {
-    setup(() =>
+    setup(async () => {
       // relative_date_in_change_table is not set when false.
-      stubRestAPI(
-          {time_format: 'HHMM_12', date_format: 'EURO'}
-      ).then(() => {
-        element = basicFixture.instantiate();
-        sinon.stub(element, '_getUtcOffsetString').returns('');
-        return element._loadPreferences();
-      })
-    );
+      await stubRestAPI({time_format: 'HHMM_12', date_format: 'EURO'});
+      element = await fixture(basicTemplate);
+      sinon.stub(element, '_getUtcOffsetString').returns('');
+      await element._loadPreferences();
+    });
 
     test('Within 24 hours on same day', async () => {
       await testDates('2015-07-29 20:34:14.985000000',
@@ -352,16 +350,13 @@
   });
 
   suite('UK + 12 hours time format preference', () => {
-    setup(() =>
+    setup(async () => {
       // relative_date_in_change_table is not set when false.
-      stubRestAPI(
-          {time_format: 'HHMM_12', date_format: 'UK'}
-      ).then(() => {
-        element = basicFixture.instantiate();
-        sinon.stub(element, '_getUtcOffsetString').returns('');
-        return element._loadPreferences();
-      })
-    );
+      stubRestAPI({time_format: 'HHMM_12', date_format: 'UK'});
+      element = await fixture(basicTemplate);
+      sinon.stub(element, '_getUtcOffsetString').returns('');
+      await element._loadPreferences();
+    });
 
     test('Within 24 hours on same day', async () => {
       await testDates('2015-07-29 20:34:14.985000000',
@@ -373,15 +368,16 @@
   });
 
   suite('relative date preference', () => {
-    setup(() => stubRestAPI({
-      time_format: 'HHMM_12',
-      date_format: 'STD',
-      relative_date_in_change_table: true,
-    }).then(() => {
-      element = basicFixture.instantiate();
+    setup(async () => {
+      stubRestAPI({
+        time_format: 'HHMM_12',
+        date_format: 'STD',
+        relative_date_in_change_table: true,
+      });
+      element = await fixture(basicTemplate);
       sinon.stub(element, '_getUtcOffsetString').returns('');
       return element._loadPreferences();
-    }));
+    });
 
     test('Within 24 hours on same day', async () => {
       await testDates('2015-07-29 20:34:14.985000000',
@@ -401,14 +397,15 @@
   });
 
   suite('logged in', () => {
-    setup(() => stubRestAPI({
-      time_format: 'HHMM_12',
-      date_format: 'US',
-      relative_date_in_change_table: true,
-    }).then(() => {
-      element = basicFixture.instantiate();
-      return element._loadPreferences();
-    }));
+    setup(async () => {
+      await stubRestAPI({
+        time_format: 'HHMM_12',
+        date_format: 'US',
+        relative_date_in_change_table: true,
+      });
+      element = await fixture(basicTemplate);
+      await element._loadPreferences();
+    });
 
     test('Preferences are respected', () => {
       assert.equal(element.timeFormat, 'h:mm A');
@@ -419,10 +416,11 @@
   });
 
   suite('logged out', () => {
-    setup(() => stubRestAPI(null).then(() => {
-      element = basicFixture.instantiate();
-      return element._loadPreferences();
-    }));
+    setup(async () => {
+      await stubRestAPI(null);
+      element = await fixture(basicTemplate);
+      await element._loadPreferences();
+    });
 
     test('Default preferences are respected', () => {
       assert.equal(element.timeFormat, 'HH:mm');
@@ -435,7 +433,7 @@
   suite('with tooltip', () => {
     setup(async () => {
       await stubRestAPI(null);
-      element = basicFixture.instantiate();
+      element = await fixture(basicTemplate);
       await element._loadPreferences();
       await element.updateComplete;
     });
@@ -449,7 +447,7 @@
   suite('without tooltip', () => {
     setup(async () => {
       await stubRestAPI(null);
-      element = lightFixture.instantiate();
+      element = await fixture(lightTemplate);
       await element._loadPreferences();
       await element.updateComplete;
     });
diff --git a/polygerrit-ui/app/elements/shared/gr-linked-text/gr-linked-text_test.ts b/polygerrit-ui/app/elements/shared/gr-linked-text/gr-linked-text_test.ts
index 3bd6d2d..7275ef1 100644
--- a/polygerrit-ui/app/elements/shared/gr-linked-text/gr-linked-text_test.ts
+++ b/polygerrit-ui/app/elements/shared/gr-linked-text/gr-linked-text_test.ts
@@ -18,25 +18,23 @@
 import '../../../test/common-test-setup-karma';
 import './gr-linked-text';
 import {GerritNav} from '../../core/gr-navigation/gr-navigation';
-import {html} from '@polymer/polymer/lib/utils/html-tag';
+import {fixture, html} from '@open-wc/testing-helpers';
 import {GrLinkedText} from './gr-linked-text';
 import {CommentLinks} from '../../../types/common';
 import {queryAndAssert} from '../../../test/test-utils';
 
-const basicFixture = fixtureFromTemplate(html`
-  <gr-linked-text>
-    <div id="output"></div>
-  </gr-linked-text>
-`);
-
 suite('gr-linked-text tests', () => {
   let element: GrLinkedText;
 
   let originalCanonicalPath: string | undefined;
 
-  setup(() => {
+  setup(async () => {
     originalCanonicalPath = window.CANONICAL_PATH;
-    element = basicFixture.instantiate() as GrLinkedText;
+    element = await fixture<GrLinkedText>(html`
+      <gr-linked-text>
+        <div id="output"></div>
+      </gr-linked-text>
+    `);
 
     sinon.stub(GerritNav, 'mapCommentlinks').value((x: CommentLinks) => x);
     element.config = {
diff --git a/polygerrit-ui/app/elements/shared/gr-page-nav/gr-page-nav_test.ts b/polygerrit-ui/app/elements/shared/gr-page-nav/gr-page-nav_test.ts
index 5ccb94c..f62dae2 100644
--- a/polygerrit-ui/app/elements/shared/gr-page-nav/gr-page-nav_test.ts
+++ b/polygerrit-ui/app/elements/shared/gr-page-nav/gr-page-nav_test.ts
@@ -18,22 +18,20 @@
 import '../../../test/common-test-setup-karma';
 import './gr-page-nav';
 import {GrPageNav} from './gr-page-nav';
-import {html} from '@polymer/polymer/lib/utils/html-tag';
+import {fixture, html} from '@open-wc/testing-helpers';
 import {queryAndAssert} from '../../../test/test-utils';
 
-const basicFixture = fixtureFromTemplate(html`
-  <gr-page-nav>
-    <ul>
-      <li>item</li>
-    </ul>
-  </gr-page-nav>
-`);
-
 suite('gr-page-nav tests', () => {
   let element: GrPageNav;
 
   setup(async () => {
-    element = basicFixture.instantiate() as GrPageNav;
+    element = await fixture<GrPageNav>(html`
+      <gr-page-nav>
+        <ul>
+          <li>item</li>
+        </ul>
+      </gr-page-nav>
+    `);
     await element.updateComplete;
   });
 
diff --git a/polygerrit-ui/app/elements/shared/gr-select/gr-select_test.ts b/polygerrit-ui/app/elements/shared/gr-select/gr-select_test.ts
index 245d7df..80b9f65 100644
--- a/polygerrit-ui/app/elements/shared/gr-select/gr-select_test.ts
+++ b/polygerrit-ui/app/elements/shared/gr-select/gr-select_test.ts
@@ -17,30 +17,22 @@
 
 import '../../../test/common-test-setup-karma';
 import './gr-select';
-import {html} from '@polymer/polymer/lib/utils/html-tag';
+import {fixture, html} from '@open-wc/testing-helpers';
 import {GrSelect} from './gr-select';
 
-const basicFixture = fixtureFromTemplate(html`
-  <gr-select>
-    <select>
-      <option value="1">One</option>
-      <option value="2">Two</option>
-      <option value="3">Three</option>
-    </select>
-  </gr-select>
-`);
-
-const noOptionsFixture = fixtureFromTemplate(html`
-  <gr-select>
-    <select></select>
-  </gr-select>
-`);
-
 suite('gr-select tests', () => {
   let element: GrSelect;
 
-  setup(() => {
-    element = basicFixture.instantiate() as GrSelect;
+  setup(async () => {
+    element = await fixture<GrSelect>(html`
+      <gr-select>
+        <select>
+          <option value="1">One</option>
+          <option value="2">Two</option>
+          <option value="3">Three</option>
+        </select>
+      </gr-select>
+    `);
   });
 
   test('bindValue must be set to the first option value', () => {
@@ -98,8 +90,12 @@
   suite('gr-select no options tests', () => {
     let element: GrSelect;
 
-    setup(() => {
-      element = noOptionsFixture.instantiate() as GrSelect;
+    setup(async () => {
+      element = await fixture<GrSelect>(html`
+        <gr-select>
+          <select></select>
+        </gr-select>
+      `);
     });
 
     test('bindValue must not be changed', () => {
diff --git a/polygerrit-ui/app/embed/diff/gr-diff-cursor/gr-diff-cursor_test.js b/polygerrit-ui/app/embed/diff/gr-diff-cursor/gr-diff-cursor_test.js
index 3b604eb..a1832a3 100644
--- a/polygerrit-ui/app/embed/diff/gr-diff-cursor/gr-diff-cursor_test.js
+++ b/polygerrit-ui/app/embed/diff/gr-diff-cursor/gr-diff-cursor_test.js
@@ -18,23 +18,19 @@
 import '../../../test/common-test-setup-karma.js';
 import '../gr-diff/gr-diff.js';
 import './gr-diff-cursor.js';
-import {html} from '@polymer/polymer/lib/utils/html-tag.js';
+import {fixture, html} from '@open-wc/testing-helpers';
 import {listenOnce, mockPromise} from '../../../test/test-utils.js';
 import {getMockDiffResponse} from '../../../test/mocks/diff-response.js';
 import {createDefaultDiffPrefs} from '../../../constants/constants.js';
 import {GrDiffCursor} from './gr-diff-cursor.js';
 
-const basicFixture = fixtureFromTemplate(html`
-  <gr-diff></gr-diff>
-`);
-
 suite('gr-diff-cursor tests', () => {
   let cursor;
   let diffElement;
   let diff;
 
   setup(async () => {
-    diffElement = basicFixture.instantiate();
+    diffElement = await fixture(html`<gr-diff></gr-diff>`);
     cursor = new GrDiffCursor();
 
     // Register the diff with the cursor.
@@ -634,16 +630,14 @@
   });
 
   suite('multi diff', () => {
-    const multiDiffFixture = fixtureFromTemplate(html`
-      <gr-diff></gr-diff>
-      <gr-diff></gr-diff>
-      <gr-diff></gr-diff>
-    `);
-
     let diffElements;
 
-    setup(() => {
-      diffElements = multiDiffFixture.instantiate();
+    setup(async () => {
+      diffElements = [
+        await fixture(html`<gr-diff></gr-diff>`),
+        await fixture(html`<gr-diff></gr-diff>`),
+        await fixture(html`<gr-diff></gr-diff>`),
+      ];
       cursor = new GrDiffCursor();
 
       // Register the diff with the cursor.
diff --git a/polygerrit-ui/app/test/common-test-setup.ts b/polygerrit-ui/app/test/common-test-setup.ts
index 571c227..a567bf3a 100644
--- a/polygerrit-ui/app/test/common-test-setup.ts
+++ b/polygerrit-ui/app/test/common-test-setup.ts
@@ -42,6 +42,7 @@
 import {initGlobalVariables} from '../elements/gr-app-global-var-init';
 import 'chai/chai';
 import {chaiDomDiff} from '@open-wc/semantic-dom-diff';
+import {fixtureCleanup} from '@open-wc/testing-helpers';
 import {
   _testOnly_defaultResinReportHandler,
   installPolymerResin,
@@ -247,6 +248,7 @@
 
 teardown(() => {
   sinon.restore();
+  fixtureCleanup();
   cleanupTestUtils();
   checkGlobalSpace();
   removeIronOverlayBackdropStyleEl();