From 2339a739eccf2ad4ffafefe3923afa5e24ef9da7 Mon Sep 17 00:00:00 2001 From: 7nik Date: Thu, 29 Jan 2026 23:00:39 +0200 Subject: [PATCH] chore: allow testing in production env 2 (#17590) * Revert "chore: allow testing in production env (#16840)" This reverts commit ffd65e90febc29feaca48e142126a4087fcaca9f. * new approach --- .../samples/production-internals/Child.svelte | 5 ++ .../samples/production-internals/_config.js | 12 ++++ .../samples/production-internals/main.svelte | 19 ++++++ .../samples/production/main.svelte | 0 .../svelte/tests/runtime-production/test.ts | 17 +++++ .../samples/production/_config.js | 5 -- packages/svelte/tests/suite.ts | 66 ++----------------- 7 files changed, 57 insertions(+), 67 deletions(-) create mode 100644 packages/svelte/tests/runtime-production/samples/production-internals/Child.svelte create mode 100644 packages/svelte/tests/runtime-production/samples/production-internals/_config.js create mode 100644 packages/svelte/tests/runtime-production/samples/production-internals/main.svelte rename packages/svelte/tests/{runtime-runes => runtime-production}/samples/production/main.svelte (100%) create mode 100644 packages/svelte/tests/runtime-production/test.ts delete mode 100644 packages/svelte/tests/runtime-runes/samples/production/_config.js diff --git a/packages/svelte/tests/runtime-production/samples/production-internals/Child.svelte b/packages/svelte/tests/runtime-production/samples/production-internals/Child.svelte new file mode 100644 index 0000000000..36b548ab8b --- /dev/null +++ b/packages/svelte/tests/runtime-production/samples/production-internals/Child.svelte @@ -0,0 +1,5 @@ + + +{foo}; diff --git a/packages/svelte/tests/runtime-production/samples/production-internals/_config.js b/packages/svelte/tests/runtime-production/samples/production-internals/_config.js new file mode 100644 index 0000000000..6ac08f7012 --- /dev/null +++ b/packages/svelte/tests/runtime-production/samples/production-internals/_config.js @@ -0,0 +1,12 @@ +import { flushSync } from 'svelte'; +import { test } from '../../test'; + +export default test({ + async test({ target }) { + let button = target.querySelector('button'); + + button?.click(); + + flushSync(); + } +}); diff --git a/packages/svelte/tests/runtime-production/samples/production-internals/main.svelte b/packages/svelte/tests/runtime-production/samples/production-internals/main.svelte new file mode 100644 index 0000000000..0629644a01 --- /dev/null +++ b/packages/svelte/tests/runtime-production/samples/production-internals/main.svelte @@ -0,0 +1,19 @@ + + + + + + + diff --git a/packages/svelte/tests/runtime-runes/samples/production/main.svelte b/packages/svelte/tests/runtime-production/samples/production/main.svelte similarity index 100% rename from packages/svelte/tests/runtime-runes/samples/production/main.svelte rename to packages/svelte/tests/runtime-production/samples/production/main.svelte diff --git a/packages/svelte/tests/runtime-production/test.ts b/packages/svelte/tests/runtime-production/test.ts new file mode 100644 index 0000000000..1c9a00ab83 --- /dev/null +++ b/packages/svelte/tests/runtime-production/test.ts @@ -0,0 +1,17 @@ +// @vitest-environment jsdom + +import { vi } from 'vitest'; +import { runtime_suite, ok } from '../runtime-legacy/shared'; + +vi.mock('esm-env', async (importEnv) => { + return { + ...(await importEnv()), + DEV: false + }; +}); + +const { test, run } = runtime_suite(true); + +export { test, ok }; + +await run(__dirname); diff --git a/packages/svelte/tests/runtime-runes/samples/production/_config.js b/packages/svelte/tests/runtime-runes/samples/production/_config.js deleted file mode 100644 index ce36c9d95b..0000000000 --- a/packages/svelte/tests/runtime-runes/samples/production/_config.js +++ /dev/null @@ -1,5 +0,0 @@ -import { test } from '../../test'; - -export default test({ - production: true -}); diff --git a/packages/svelte/tests/suite.ts b/packages/svelte/tests/suite.ts index 72c40f526b..bbd252b8e1 100644 --- a/packages/svelte/tests/suite.ts +++ b/packages/svelte/tests/suite.ts @@ -1,11 +1,9 @@ import fs from 'node:fs'; -import { it, vi } from 'vitest'; +import { it } from 'vitest'; export interface BaseTest { skip?: boolean; solo?: boolean; - /** Set `DEV` to `false` */ - production?: boolean; } /** @@ -29,31 +27,11 @@ export function suite(fn: (config: Test, test_dir: string return { test: (config: Test) => config, run: async (cwd: string, samples_dir = 'samples') => { - const production_tests: Array<[Function, string, Function]> = []; - await for_each_dir(cwd, samples_dir, (config, dir) => { let it_fn = config.skip ? it.skip : config.solo ? it.only : it; - if (config.production) { - production_tests.push([it_fn, dir, () => fn(config, `${cwd}/${samples_dir}/${dir}`)]); - } else { - it_fn(dir, () => fn(config, `${cwd}/${samples_dir}/${dir}`)); - } + it_fn(dir, () => fn(config, `${cwd}/${samples_dir}/${dir}`)); }); - - let mocked = false; - for (const [it, name, test] of production_tests) { - it(name, () => { - if (!mocked) { - vi.doMock('esm-env', async (importEnv) => ({ - ...(await importEnv()), - DEV: false - })); - mocked = true; - } - return test(); - }); - } } }; } @@ -67,8 +45,6 @@ export function suite_with_variants config, run: async (cwd: string, samples_dir = 'samples') => { - const production_tests: Array<[Function, string, Function]> = []; - await for_each_dir(cwd, samples_dir, (config, dir) => { let called_common = false; let common: any = undefined; @@ -81,35 +57,15 @@ export function suite_with_variants { + it_fn(`${dir} (${variant})`, async () => { if (!called_common) { called_common = true; common = await common_setup(config, `${cwd}/${samples_dir}/${dir}`); } return fn(config, `${cwd}/${samples_dir}/${dir}`, variant, common); - }; - - if (config.production) { - production_tests.push([it_fn, `${dir} (${variant})`, test]); - } else { - it_fn(`${dir} (${variant})`, test); - } + }); } }); - - let mocked = false; - for (const [it, name, test] of production_tests) { - it(name, () => { - if (!mocked) { - vi.doMock('esm-env', async (importEnv) => ({ - ...(await importEnv()), - DEV: false - })); - mocked = true; - } - return test(); - }); - } } }; } @@ -152,17 +108,3 @@ export function assert_ok(value: any): asserts value { throw new Error(`Expected truthy value, got ${value}`); } } - -function run_in_production(fn: (...args: any[]) => void | Promise) { - return async (...args: any[]) => { - vi.doMock('esm-env', async (importEnv) => ({ - ...(await importEnv()), - DEV: false - })); - try { - await fn(...args); - } finally { - vi.doUnmock('esm-env'); - } - }; -}