vitest-browser-qwik 0.2.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -43,7 +43,7 @@ export default defineConfig({
43
43
 
44
44
  ```tsx
45
45
  import { defineConfig } from 'vitest/config'
46
- import { qwikVite } from '@builder.io/qwik/optimizer'
46
+ import { qwikVite } from '@qwik.dev/core/optimizer'
47
47
 
48
48
  // optional, run the tests in SSR mode
49
49
  import { testSSR } from 'vitest-browser-qwik/ssr-plugin'
@@ -97,7 +97,7 @@ test('renders counter with SSR', async () => {
97
97
  ### Hook Testing Example
98
98
 
99
99
  ```tsx
100
- import { useSignal } from "@builder.io/qwik";
100
+ import { useSignal } from "@qwik.dev/core";
101
101
  import { expect, test } from "vitest";
102
102
  import { renderHook } from "vitest-browser-qwik";
103
103
  import { useCounter } from "./fixtures/useCounter";
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { a as cleanup, c as renderServerHTML, i as SSRRenderOptions, o as render, r as RenderResult, s as renderHook } from "./pure-1MgDxC6b.js";
2
- import { JSXOutput } from "@builder.io/qwik";
1
+ import { a as cleanup, c as renderServerHTML, i as SSRRenderOptions, o as render, r as RenderResult, s as renderHook } from "./pure-dqI6lsdL.js";
2
+ import { JSXOutput } from "@qwik.dev/core";
3
3
 
4
4
  //#region src/index.d.ts
5
5
  declare function renderSSR(jsxNode: JSXOutput): Promise<RenderResult>;
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { i as renderServerHTML, n as render, r as renderHook, t as cleanup } from "./pure-BRpTMupH.js";
1
+ import { i as renderServerHTML, n as render, r as renderHook, t as cleanup } from "./pure-B8VHRLBL.js";
2
2
  import { beforeEach } from "vitest";
3
3
  import { page } from "vitest/browser";
4
4
 
@@ -1,7 +1,7 @@
1
1
  import { utils } from "vitest/browser";
2
- import { component$, render } from "@builder.io/qwik";
3
- import { getQwikLoaderScript } from "@builder.io/qwik/server";
4
- import { jsx } from "@builder.io/qwik/jsx-runtime";
2
+ import { component$, render } from "@qwik.dev/core";
3
+ import { getQwikLoaderScript } from "@qwik.dev/core/server";
4
+ import { jsx } from "@qwik.dev/core/jsx-runtime";
5
5
 
6
6
  //#region src/pure.tsx
7
7
  const { debug, getElementLocatorSelectors } = utils;
@@ -40,10 +40,10 @@ function setupContainer(baseElement, container) {
40
40
  baseElement
41
41
  };
42
42
  }
43
- function render$1(ui, { container, baseElement } = {}) {
43
+ async function render$1(ui, { container, baseElement } = {}) {
44
44
  csrQwikLoader();
45
45
  const setup = setupContainer(baseElement, container);
46
- render(setup.container, ui);
46
+ await render(setup.container, ui);
47
47
  return createRenderResult(setup.container, setup.baseElement);
48
48
  }
49
49
  function setHTMLWithScripts(container, html) {
@@ -66,7 +66,7 @@ async function renderHook(hook) {
66
66
  const renderPromise = new Promise((resolve) => {
67
67
  resolveRender = resolve;
68
68
  });
69
- const screen = render$1(/* @__PURE__ */ jsx(component$(() => {
69
+ const screen = await render$1(/* @__PURE__ */ jsx(component$(() => {
70
70
  resultContainer.value = hook();
71
71
  resolveRender();
72
72
  return /* @__PURE__ */ jsx("div", { "data-testid": "hook-result" });
@@ -1,5 +1,5 @@
1
1
  import { Locator, LocatorSelectors, PrettyDOMOptions } from "vitest/browser";
2
- import { JSXOutput } from "@builder.io/qwik";
2
+ import { JSXOutput } from "@qwik.dev/core";
3
3
 
4
4
  //#region src/pure.d.ts
5
5
  interface RenderResult extends LocatorSelectors {
@@ -20,7 +20,7 @@ interface SSRRenderOptions {
20
20
  declare function render$1(ui: JSXOutput, {
21
21
  container,
22
22
  baseElement
23
- }?: RenderOptions): RenderResult;
23
+ }?: RenderOptions): Promise<RenderResult>;
24
24
  declare function renderServerHTML(html: string, {
25
25
  container,
26
26
  baseElement
package/dist/pure.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as cleanup, c as renderServerHTML, i as SSRRenderOptions, n as RenderOptions, o as render, r as RenderResult, s as renderHook, t as RenderHookResult } from "./pure-1MgDxC6b.js";
1
+ import { a as cleanup, c as renderServerHTML, i as SSRRenderOptions, n as RenderOptions, o as render, r as RenderResult, s as renderHook, t as RenderHookResult } from "./pure-dqI6lsdL.js";
2
2
  export { RenderHookResult, RenderOptions, RenderResult, SSRRenderOptions, cleanup, render, renderHook, renderServerHTML };
package/dist/pure.js CHANGED
@@ -1,3 +1,3 @@
1
- import { i as renderServerHTML, n as render, r as renderHook, t as cleanup } from "./pure-BRpTMupH.js";
1
+ import { i as renderServerHTML, n as render, r as renderHook, t as cleanup } from "./pure-B8VHRLBL.js";
2
2
 
3
3
  export { cleanup, render, renderHook, renderServerHTML };
@@ -1,5 +1,4 @@
1
1
  import { dirname, relative, resolve } from "node:path";
2
- import { symbolMapper } from "@builder.io/qwik/optimizer";
3
2
  import MagicString from "magic-string";
4
3
  import { parseSync } from "oxc-parser";
5
4
  import { ResolverFactory } from "oxc-resolver";
@@ -212,21 +211,48 @@ function hasCommandsImport(node) {
212
211
  if (!isImportDeclaration(node) || node.source?.value !== "vitest/browser" || !node.specifiers) return false;
213
212
  return node.specifiers.some((spec) => spec.type === "ImportSpecifier" && spec.imported.type === "Identifier" && spec.imported.name === "commands");
214
213
  }
214
+ const getClientModule = async (viteServer, moduleId) => {
215
+ const clientEnv = viteServer.environments.client;
216
+ await clientEnv.fetchModule(moduleId);
217
+ const resolved = await clientEnv.moduleGraph.resolveUrl(moduleId);
218
+ if (!resolved) throw new Error(`Could not resolve module "${moduleId}" in client environment`);
219
+ const module = clientEnv.moduleGraph.getModuleById(resolved[1]);
220
+ console.log("Resolved client module", moduleId, resolved, module);
221
+ if (!module) throw new Error(`Module "${moduleId}" not found in client module graph.`);
222
+ return module;
223
+ };
215
224
  async function renderComponentToSSR(ctx, Component, props = {}) {
216
225
  const viteServer = ctx.project.vite;
217
- const { jsx } = await viteServer.ssrLoadModule("@builder.io/qwik");
226
+ const { jsx } = await viteServer.ssrLoadModule("@qwik.dev/core");
218
227
  const jsxElement = jsx(Component, props);
219
- const { renderToStream } = await viteServer.ssrLoadModule("@builder.io/qwik/server");
220
- let html = "";
228
+ const { renderToStream } = await viteServer.ssrLoadModule("@qwik.dev/core/server");
229
+ const mapping = {};
230
+ const module = await getClientModule(viteServer, ctx.testPath);
231
+ for (const importedModule of module?.importedModules || []) {
232
+ const meta = importedModule.info?.meta;
233
+ if (meta?.segment) {
234
+ const symbol = meta.segment.hash;
235
+ if (symbol) mapping[symbol] = `/@fs${importedModule.id}`;
236
+ }
237
+ }
238
+ const handlersId = (await getClientModule(viteServer, "@qwik.dev/core/handlers.mjs")).id;
239
+ const handlersExports = await viteServer.ssrLoadModule("@qwik.dev/core/handlers.mjs");
240
+ for (const key of Object.keys(handlersExports)) if (key.startsWith("_")) mapping[key] = handlersId;
241
+ const qwikManifest = {
242
+ manifestHash: "dev",
243
+ mapping
244
+ };
245
+ console.log(mapping);
246
+ let html = "<script>var _import=(s)=>{console.log('importing', s);return import(s)}<\/script>";
221
247
  await renderToStream(jsxElement, {
248
+ manifest: qwikManifest,
222
249
  containerTagName: "div",
223
250
  base: "/",
224
- qwikLoader: { include: "always" },
225
- symbolMapper: globalThis.qwikSymbolMapper,
226
251
  stream: { write(chunk) {
227
- html += chunk;
252
+ html += chunk.replace(/=import\(/g, "=_import(");
228
253
  } }
229
254
  });
255
+ console.log("FINAL HTML", html);
230
256
  return { html };
231
257
  }
232
258
 
@@ -377,7 +403,6 @@ function testSSR() {
377
403
  }
378
404
  },
379
405
  configResolved(config) {
380
- globalThis.qwikSymbolMapper = symbolMapper;
381
406
  if (config.test?.browser?.enabled) config.test.browser.commands = {
382
407
  ...config.test.browser.commands,
383
408
  renderSSR: renderSSRCommand,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vitest-browser-qwik",
3
- "version": "0.2.2",
3
+ "version": "0.3.0",
4
4
  "description": "Render Qwik components using Vitest Browser Mode",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -40,26 +40,26 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "@oxc-project/types": "^0.95.0",
43
- "magic-string": "^0.30.21",
43
+ "magic-string": "^0.30.17",
44
44
  "oxc-parser": "^0.95.0",
45
- "oxc-resolver": "^11.16.2"
45
+ "oxc-resolver": "^11.11.1"
46
46
  },
47
47
  "peerDependencies": {
48
- "@builder.io/qwik": ">=1.14.1",
48
+ "@qwik.dev/core": "*",
49
49
  "vite": ">=6.3.5",
50
- "vitest": "^4.0.0"
50
+ "vitest": "^4.0.18"
51
51
  },
52
52
  "devDependencies": {
53
53
  "@biomejs/biome": "2.0.0",
54
- "@builder.io/qwik": "^1.18.0",
55
- "@playwright/test": "1.52.0",
56
- "@types/node": "^22.19.3",
54
+ "@playwright/test": "see flake.nix",
55
+ "@qwik.dev/core": "*",
56
+ "@types/node": "^22.15.17",
57
57
  "@vitest/browser-playwright": "^4.0.18",
58
- "bumpp": "^10.3.2",
59
- "ignore": "^7.0.5",
60
58
  "magic-regexp": "^0.10.0",
61
- "tsdown": "^0.15.12",
62
- "typescript": "^5.9.3",
59
+ "bumpp": "^10.1.0",
60
+ "ignore": "^7.0.5",
61
+ "tsdown": "^0.15.9",
62
+ "typescript": "^5.8.3",
63
63
  "vitest": "^4.0.18"
64
64
  },
65
65
  "scripts": {