diff --git a/web/BUILD b/web/BUILD
index 5490c23..e0a9c78 100644
--- a/web/BUILD
+++ b/web/BUILD
@@ -1,5 +1,5 @@
 load("//tools/js:eslint.bzl", "plugin_eslint")
-load("//tools/bzl:js.bzl", "gerrit_js_bundle", "karma_test")
+load("//tools/bzl:js.bzl", "gerrit_js_bundle", "web_test_runner")
 load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project")
 
 package_group(
@@ -52,10 +52,15 @@
     entry_point = "_bazel_ts_out/plugin.js",
 )
 
-karma_test(
-    name = "karma_test",
-    srcs = ["karma_test.sh"],
-    data = [":delete-project-ts-tests"],
+web_test_runner(
+    name = "web_test_runner",
+    srcs = ["web_test_runner.sh"],
+    data = [
+        ":tsconfig",
+        ":delete-project-ts-tests",
+        "@plugins_npm//:node_modules",
+        "@ui_dev_npm//:node_modules",
+    ],
 )
 
 plugin_eslint()
diff --git a/web/gr-delete-repo.ts b/web/gr-delete-repo.ts
index ff4e0d6..91c3649 100644
--- a/web/gr-delete-repo.ts
+++ b/web/gr-delete-repo.ts
@@ -60,8 +60,8 @@
 
   static override get styles() {
     return [
-      window.Gerrit.styles.font as CSSResult,
-      window.Gerrit.styles.modal as CSSResult,
+      window.Gerrit?.styles.font as CSSResult,
+      window.Gerrit?.styles.modal as CSSResult,
       css`
         :host {
           display: block;
@@ -80,7 +80,7 @@
   }
 
   get action(): ActionInfo | undefined {
-    return this.config.actions?.[this.actionId];
+    return this.config?.actions?.[this.actionId];
   }
 
   get actionId(): string {
diff --git a/web/gr-delete-repo_test.ts b/web/gr-delete-repo_test.ts
index 2da6b2b..45ed9ce 100644
--- a/web/gr-delete-repo_test.ts
+++ b/web/gr-delete-repo_test.ts
@@ -24,16 +24,18 @@
   HttpMethod,
   RepoName,
 } from '@gerritcodereview/typescript-api/rest-api';
+import {fixture, html, assert} from '@open-wc/testing';
+import sinon from 'sinon';
 
 suite('gr-delete-repo tests', () => {
   let element: GrDeleteRepo;
-  let sendStub: sinon.SinonStub;
+  let fetchStub: sinon.SinonStub;
 
   setup(async () => {
-    sendStub = sinon.stub();
-    sendStub.returns(Promise.resolve({}));
+    fetchStub = sinon.stub();
+    fetchStub.returns(Promise.resolve({}));
 
-    element = document.createElement('gr-delete-repo');
+    element = await fixture(html`<gr-delete-repo></gr-delete-repo>`);
     element.repoName = 'test-repo-name' as RepoName;
     element.config = {
       actions: {
@@ -49,26 +51,21 @@
       getPluginName: () => 'delete-project',
       restApi: () => {
         return {
-          send: sendStub,
+          fetch: fetchStub,
           invalidateReposCache: () => {},
         };
       },
     } as unknown as PluginApi;
-    document.body.appendChild(element);
     await element.updateComplete;
   });
 
-  teardown(() => {
-    document.body.removeChild(element);
-  });
-
   test('confirm and send', () => {
     const dialog = queryAndAssert<HTMLElement>(element, '#deleteRepoDialog');
     dialog.dispatchEvent(new CustomEvent('confirm'));
-    assert.isTrue(sendStub.called);
-    const method = sendStub.firstCall.args[0] as HttpMethod;
-    const endpoint = sendStub.firstCall.args[1] as string;
-    const json = sendStub.firstCall.args[2];
+    assert.isTrue(fetchStub.called);
+    const method = fetchStub.firstCall.args[0] as HttpMethod;
+    const endpoint = fetchStub.firstCall.args[1] as string;
+    const json = fetchStub.firstCall.args[2];
     assert.equal(method, HttpMethod.DELETE);
     assert.equal(endpoint, '/projects/test-repo-name/delete-project~delete');
     assert.deepEqual(json, {force: false, preserve: false});
diff --git a/web/karma_test.sh b/web/karma_test.sh
deleted file mode 100755
index 35430ad..0000000
--- a/web/karma_test.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/bash
-
-set -euo pipefail
-./$1 start $2 --single-run \
-  --root 'plugins/delete-project/web/_bazel_ts_out_tests/' \
-  --test-files '*_test.js'
diff --git a/web/plugin.ts b/web/plugin.ts
index 7355b50..f2e845c 100644
--- a/web/plugin.ts
+++ b/web/plugin.ts
@@ -17,6 +17,6 @@
 import '@gerritcodereview/typescript-api/gerrit';
 import './gr-delete-repo';
 
-window.Gerrit.install(plugin => {
+window.Gerrit?.install(plugin => {
   plugin.registerCustomComponent('repo-command', 'gr-delete-repo');
 });
diff --git a/web/test/test-setup.ts b/web/test/test-setup.ts
index 2196ebc..4f113a1 100644
--- a/web/test/test-setup.ts
+++ b/web/test/test-setup.ts
@@ -14,30 +14,28 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import 'chai/chai.js';
 import '@gerritcodereview/typescript-api/gerrit';
 import {css} from 'lit';
+import sinon from 'sinon';
 
 declare global {
   interface Window {
-    assert: typeof chai.assert;
-    expect: typeof chai.expect;
     sinon: typeof sinon;
   }
-  let assert: typeof chai.assert;
-  let expect: typeof chai.expect;
   let sinon: typeof sinon;
 }
-window.assert = chai.assert;
-window.expect = chai.expect;
 window.sinon = sinon;
 
 window.Gerrit = {
   install: () => {},
   styles: {
+    font: css``,
     form: css``,
+    icon: css``,
     menuPage: css``,
+    spinner: css``,
     subPage: css``,
     table: css``,
+    modal: css``,
   },
 };
diff --git a/web/tsconfig.json b/web/tsconfig.json
index d12f85e..de5b7f9 100644
--- a/web/tsconfig.json
+++ b/web/tsconfig.json
@@ -1,7 +1,7 @@
 {
   "extends": "../../tsconfig-plugins-base.json",
   "compilerOptions": {
-    "outDir": "../../../.ts-out/plugins/delete-project", /* overridden by bazel */
+    "outDir": "../../../.ts-out/plugins/delete-project" /* overridden by bazel */
   },
   "include": [
     "**/*.ts"
diff --git a/web/web_test_runner.sh b/web/web_test_runner.sh
new file mode 100755
index 0000000..60c35ba
--- /dev/null
+++ b/web/web_test_runner.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+set -euo pipefail
+./$1 --config $2 \
+  --dir 'plugins/delete-project/web/_bazel_ts_out_tests' \
+  --test-files 'plugins/delete-project/web/_bazel_ts_out_tests/*_test.js' \
+  --type-config="plugins/delete-project/web/tsconfig.json"
