diff --git a/packages/npm-packages/ruby-wasm-wasi/test-e2e/integrations/fixtures/recursive_require.rb b/packages/npm-packages/ruby-wasm-wasi/test-e2e/integrations/fixtures/recursive_require.rb new file mode 100644 index 0000000000..c14cbb2386 --- /dev/null +++ b/packages/npm-packages/ruby-wasm-wasi/test-e2e/integrations/fixtures/recursive_require.rb @@ -0,0 +1 @@ +require_relative "./recursive_require/a.rb" diff --git a/packages/npm-packages/ruby-wasm-wasi/test-e2e/integrations/fixtures/recursive_require/a.rb b/packages/npm-packages/ruby-wasm-wasi/test-e2e/integrations/fixtures/recursive_require/a.rb new file mode 100644 index 0000000000..9f68c6a221 --- /dev/null +++ b/packages/npm-packages/ruby-wasm-wasi/test-e2e/integrations/fixtures/recursive_require/a.rb @@ -0,0 +1 @@ +require_relative "./b.rb" diff --git a/packages/npm-packages/ruby-wasm-wasi/test-e2e/integrations/fixtures/recursive_require/b.rb b/packages/npm-packages/ruby-wasm-wasi/test-e2e/integrations/fixtures/recursive_require/b.rb new file mode 100644 index 0000000000..511db1e29b --- /dev/null +++ b/packages/npm-packages/ruby-wasm-wasi/test-e2e/integrations/fixtures/recursive_require/b.rb @@ -0,0 +1,7 @@ +module RecursiveRequire + class B + def message + "Hello from RecursiveRequire::B" + end + end +end diff --git a/packages/npm-packages/ruby-wasm-wasi/test-e2e/integrations/js-require-remote.spec.ts b/packages/npm-packages/ruby-wasm-wasi/test-e2e/integrations/js-require-remote.spec.ts index 06e5306062..2bd1e0ed17 100644 --- a/packages/npm-packages/ruby-wasm-wasi/test-e2e/integrations/js-require-remote.spec.ts +++ b/packages/npm-packages/ruby-wasm-wasi/test-e2e/integrations/js-require-remote.spec.ts @@ -16,10 +16,13 @@ if (!process.env.RUBY_NPM_PACKAGE_ROOT) { setupDebugLog(context); setupProxy(context); - context.route(/fixtures/, (route) => { - const filename = path.basename(route.request().url()); + const fixturesPattern = /fixtures\/(.+)/; + context.route(fixturesPattern, (route) => { + const subPath = route.request().url().match(fixturesPattern)[1]; + const mockedPath = path.join("./test-e2e/integrations/fixtures", subPath); + route.fulfill({ - path: path.join("./test-e2e/integrations/fixtures", filename), + path: mockedPath, }); }); @@ -89,5 +92,28 @@ if (!process.env.RUBY_NPM_PACKAGE_ROOT) { const error = await page.waitForEvent("pageerror"); expect(error.message).toMatch(/cannot load such url -- .+\/not_found.rb/); }); + + test("JS::RequireRemote#load recursively loads dependencies", async ({ + page, + }) => { + const resolve = await resolveBinding(page, "checkResolved"); + await page.goto( + "https://cdn.jsdelivr.net/npm/@ruby/head-wasm-wasi@latest/dist/", + ); + await page.setContent(` + + + `); + + expect(await resolve()).toBe("Hello from RecursiveRequire::B"); + }); }); }