Skip to content

Commit e9f5617

Browse files
committed
Split integration test files
1 parent b6de6f0 commit e9f5617

File tree

3 files changed

+64
-54
lines changed

3 files changed

+64
-54
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import { test, expect } from "@playwright/test";
2+
import { setupDebugLog, setupProxy, resolveBinding } from "../support";
3+
4+
if (!process.env.RUBY_NPM_PACKAGE_ROOT) {
5+
test.skip("skip", () => {});
6+
} else {
7+
test.beforeEach(async ({ context }) => {
8+
setupDebugLog(context);
9+
setupProxy(context, null);
10+
});
11+
12+
test.describe('data-eval="async"', () => {
13+
test("JS::Object#await returns value", async ({ page }) => {
14+
const resolve = await resolveBinding(page, "checkResolved");
15+
await page.setContent(`
16+
<script src="https://cdn.jsdelivr.net/npm/ruby-head-wasm-wasi@latest/dist/browser.script.iife.js"></script>
17+
<script type="text/ruby" data-eval="async">
18+
require "js"
19+
JS.global.checkResolved JS.global[:Promise].resolve(42).await
20+
</script>
21+
`);
22+
expect(await resolve()).toBe(42);
23+
});
24+
25+
test("JS::Object#await throws error on default attr", async ({ page }) => {
26+
await page.setContent(`
27+
<script src="https://cdn.jsdelivr.net/npm/ruby-head-wasm-wasi@latest/dist/browser.script.iife.js"></script>
28+
<script type="text/ruby">
29+
require "js"
30+
JS.global[:Promise].resolve(42).await
31+
</script>
32+
`);
33+
const error = await page.waitForEvent("pageerror");
34+
expect(error.message).toMatch(
35+
/please ensure that you specify `data-eval="async"`/,
36+
);
37+
});
38+
39+
test("default stack size is enough to require 'json'", async ({ page }) => {
40+
const resolve = await resolveBinding(page, "checkResolved");
41+
await page.setContent(`
42+
<script src="https://cdn.jsdelivr.net/npm/ruby-head-wasm-wasi@latest/dist/browser.script.iife.js"></script>
43+
<script type="text/ruby" data-eval="async">
44+
require 'json'
45+
JS.global.checkResolved "ok"
46+
</script>
47+
`);
48+
expect(await resolve()).toBe("ok");
49+
});
50+
});
51+
}

packages/npm-packages/ruby-wasm-wasi/test-e2e/integrations/browser-script.spec.ts renamed to packages/npm-packages/ruby-wasm-wasi/test-e2e/integrations/js-require-remote.spec.ts

Lines changed: 2 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import fs from "fs";
2-
import { test, expect, Page } from "@playwright/test";
3-
4-
import { setupDebugLog, setupProxy } from "../support";
2+
import { test, expect } from "@playwright/test";
3+
import { setupDebugLog, setupProxy, resolveBinding } from "../support";
54

65
if (!process.env.RUBY_NPM_PACKAGE_ROOT) {
76
test.skip("skip", () => {});
@@ -34,57 +33,6 @@ if (!process.env.RUBY_NPM_PACKAGE_ROOT) {
3433
});
3534
});
3635

37-
const resolveBinding = async (page: Page, name: string) => {
38-
let checkResolved;
39-
const resolvedValue = new Promise((resolve) => {
40-
checkResolved = resolve;
41-
});
42-
await page.exposeBinding(name, async (source, v) => {
43-
checkResolved(v);
44-
});
45-
return async () => await resolvedValue;
46-
};
47-
48-
test.describe('data-eval="async"', () => {
49-
test("JS::Object#await returns value", async ({ page }) => {
50-
const resolve = await resolveBinding(page, "checkResolved");
51-
await page.setContent(`
52-
<script src="https://cdn.jsdelivr.net/npm/ruby-head-wasm-wasi@latest/dist/browser.script.iife.js"></script>
53-
<script type="text/ruby" data-eval="async">
54-
require "js"
55-
JS.global.checkResolved JS.global[:Promise].resolve(42).await
56-
</script>
57-
`);
58-
expect(await resolve()).toBe(42);
59-
});
60-
61-
test("JS::Object#await throws error on default attr", async ({ page }) => {
62-
await page.setContent(`
63-
<script src="https://cdn.jsdelivr.net/npm/ruby-head-wasm-wasi@latest/dist/browser.script.iife.js"></script>
64-
<script type="text/ruby">
65-
require "js"
66-
JS.global[:Promise].resolve(42).await
67-
</script>
68-
`);
69-
const error = await page.waitForEvent("pageerror");
70-
expect(error.message).toMatch(
71-
/please ensure that you specify `data-eval="async"`/,
72-
);
73-
});
74-
75-
test("default stack size is enough to require 'json'", async ({ page }) => {
76-
const resolve = await resolveBinding(page, "checkResolved");
77-
await page.setContent(`
78-
<script src="https://cdn.jsdelivr.net/npm/ruby-head-wasm-wasi@latest/dist/browser.script.iife.js"></script>
79-
<script type="text/ruby" data-eval="async">
80-
require 'json'
81-
JS.global.checkResolved "ok"
82-
</script>
83-
`);
84-
expect(await resolve()).toBe("ok");
85-
});
86-
});
87-
8836
test.describe("JS::RequireRemote#load", () => {
8937
test("JS::RequireRemote#load returns true", async ({ page }) => {
9038
const resolve = await resolveBinding(page, "checkResolved");

packages/npm-packages/ruby-wasm-wasi/test-e2e/support.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,14 @@ export const setupProxy = (
4242
}
4343
});
4444
};
45+
46+
export const resolveBinding = async (page: Page, name: string) => {
47+
let checkResolved;
48+
const resolvedValue = new Promise((resolve) => {
49+
checkResolved = resolve;
50+
});
51+
await page.exposeBinding(name, async (source, v) => {
52+
checkResolved(v);
53+
});
54+
return async () => await resolvedValue;
55+
};

0 commit comments

Comments
 (0)