GoogleChromeLabs / GoogleChromeLabs/comlink

Move from Karma to Playwright?

Open
#644 1 comment 1 reaction 0 assignees View on GitHub
Dominant language
TypeScript
Stars
12.8k
Forks
435
PR merge metrics
No merged PRs in 30d

Description

Since Karma is [deprecated](https://github.com/karma-runner/karma#karma), does it make sense to move the tests over to [Playwright](https://playwright.dev/)?

As an example, this is what the `tests/two-way-iframe.comlink.test.js` test might look like:

```js
import { test } from "@playwright/test";

test.describe("Comlink across iframes", function () {
test.beforeEach(async ({ page }) => {
await page.goto("/");
await page.evaluate(async () => {
this.ifr = document.createElement("iframe");
this.ifr.sandbox.add("allow-scripts", "allow-same-origin");
this.ifr.src = "/tests/fixtures/two-way-iframe.html";
document.body.appendChild(this.ifr);
await new Promise((resolve) => (this.ifr.onload = resolve));
});
});

test.afterEach(async ({ page }) => {
await page.evaluate(() => {
this.ifr.remove();
});
});

test("can communicate both ways", async ({ page }) => {
const { value, called } = await page.evaluate(async () => {
const Comlink = await import("/dist/esm/comlink.mjs");
let called = false;
const iframe = Comlink.windowEndpoint(this.ifr.contentWindow);
Comlink.expose((a) => {
called = true;
return ++a;
}, iframe);
const proxy = Comlink.wrap(iframe);
const value = await proxy(1, 3);
return {
value,
called,
};
});
test.expect(value).toEqual(5);
test.expect(called).toEqual(true);
});
});
```

If this move makes sense, I could submit a PR.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.