@equinor/fusion-framework-vitest-plugin-react-app 1.0.0 → 1.0.2
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/dist/esm/index.js +9 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/resolve-app-test-env.js +8 -2
- package/dist/esm/resolve-app-test-env.js.map +1 -1
- package/dist/esm/scope/resolve-fusion.js +22 -24
- package/dist/esm/scope/resolve-fusion.js.map +1 -1
- package/dist/esm/test-app.js +5 -8
- package/dist/esm/test-app.js.map +1 -1
- package/dist/esm/test.js +2 -1
- package/dist/esm/test.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/index.d.ts +4 -3
- package/dist/types/resolve-app-test-env.d.ts +3 -1
- package/dist/types/scope/resolve-fusion.d.ts +6 -7
- package/dist/types/test-app.d.ts +12 -11
- package/dist/types/test.d.ts +20 -9
- package/dist/types/version.d.ts +1 -1
- package/package.json +17 -19
- package/CHANGELOG.md +0 -81
- package/docs/advanced.md +0 -209
- package/docs/configuration.md +0 -112
- package/docs/getting-started.md +0 -66
- package/docs/migrating-an-existing-app.md +0 -202
- package/docs/module-mocks.md +0 -120
- package/docs/overview.md +0 -49
- package/docs/troubleshooting.md +0 -67
- package/docs/why-browser-mode.md +0 -128
- package/src/__tests__/app-test-vite-plugin.test.ts +0 -109
- package/src/__tests__/merge-env-config.test.ts +0 -67
- package/src/__tests__/resolve-app-test-env.test.ts +0 -83
- package/src/app-test.ts +0 -19
- package/src/define-project.ts +0 -91
- package/src/index.ts +0 -124
- package/src/merge-env-config.ts +0 -58
- package/src/render-app-component.tsx +0 -116
- package/src/render-app-hook.tsx +0 -135
- package/src/render.tsx +0 -64
- package/src/resolve-app-test-env.ts +0 -132
- package/src/scope/create-app-scope-wrapper.tsx +0 -26
- package/src/scope/default-app-env.ts +0 -13
- package/src/scope/index.ts +0 -4
- package/src/scope/resolve-app-scope.ts +0 -46
- package/src/scope/resolve-fusion.ts +0 -74
- package/src/test-app.tsx +0 -148
- package/src/test.tsx +0 -42
- package/src/version.ts +0 -2
- package/src/virtual-modules.d.ts +0 -12
- package/tsconfig.json +0 -26
- package/vitest.config.ts +0 -10
package/dist/esm/index.js
CHANGED
|
@@ -25,9 +25,10 @@ const DEFAULT_CONFIGURE_CANDIDATES = ['src/config.ts', 'src/config.tsx', 'src/co
|
|
|
25
25
|
* // ...your own browser-mode config
|
|
26
26
|
* });
|
|
27
27
|
* ```
|
|
28
|
-
* Exposes two virtual modules: `virtual:fusion-app-test-env`
|
|
29
|
-
* `virtual:fusion-app-test-configure`
|
|
30
|
-
* `undefined` if none exists). Not intended
|
|
28
|
+
* Exposes two virtual modules: `virtual:fusion-app-test-env`
|
|
29
|
+
* (`manifest`/`config`/`runtimeDependencies`, as JSON) and `virtual:fusion-app-test-configure`
|
|
30
|
+
* (a re-export of the resolved `configure` module, or `undefined` if none exists). Not intended
|
|
31
|
+
* to be imported directly by application code.
|
|
31
32
|
*
|
|
32
33
|
* @param options - Resolution options; `entrypoint` defaults to the current working directory.
|
|
33
34
|
* @returns A Vite plugin instance.
|
|
@@ -57,10 +58,14 @@ export const appTestVitePlugin = (options) => {
|
|
|
57
58
|
async load(id) {
|
|
58
59
|
// serves manifest/config resolved lazily here, not at plugin-creation time, so options.entrypoint changes between test runs are respected
|
|
59
60
|
if (id === RESOLVED_ENV_MODULE_ID) {
|
|
60
|
-
const { manifest, config } = await resolveAppTestEnv({
|
|
61
|
+
const { manifest, config, runtimeDependencies } = await resolveAppTestEnv({
|
|
62
|
+
...options,
|
|
63
|
+
entrypoint,
|
|
64
|
+
});
|
|
61
65
|
return [
|
|
62
66
|
`export const manifest = ${JSON.stringify(manifest)};`,
|
|
63
67
|
`export const config = ${JSON.stringify(config)};`,
|
|
68
|
+
`export const runtimeDependencies = ${JSON.stringify(runtimeDependencies)};`,
|
|
64
69
|
].join('\n');
|
|
65
70
|
}
|
|
66
71
|
// no conventional module means the app registers no extra modules, same as omitting `configure` from `makeComponent`
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,EAAE,iBAAiB,EAAiC,MAAM,2BAA2B,CAAC;AAE7F,MAAM,aAAa,GAAG,6BAA6B,CAAC;AACpD,MAAM,mBAAmB,GAAG,mCAAmC,CAAC;AAChE,MAAM,sBAAsB,GAAG,KAAK,aAAa,EAAE,CAAC;AACpD,MAAM,4BAA4B,GAAG,KAAK,mBAAmB,EAAE,CAAC;AAEhE,MAAM,4BAA4B,GAAG,CAAC,eAAe,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;AAmB1F
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ import { resolvePackage } from '@equinor/fusion-framework-cli/utils';
|
|
|
15
15
|
* `test.override('appEnv', ...)`.
|
|
16
16
|
*
|
|
17
17
|
* @param options - Resolution options; `entrypoint` defaults to the current working directory.
|
|
18
|
-
* @returns The resolved application manifest and
|
|
18
|
+
* @returns The resolved application manifest, config, and module capabilities.
|
|
19
19
|
* @throws If no `package.json` can be found from `entrypoint` upward, or an explicitly requested
|
|
20
20
|
* `manifest`/`config` file does not exist.
|
|
21
21
|
* @example
|
|
@@ -37,7 +37,13 @@ export const resolveAppTestEnv = async (options) => {
|
|
|
37
37
|
resolveManifest(env, baseManifest, options?.manifest),
|
|
38
38
|
resolveConfig(env, options?.config),
|
|
39
39
|
]);
|
|
40
|
-
|
|
40
|
+
// Merge every runtime dependency category so module mock selection follows package ownership.
|
|
41
|
+
const runtimeDependencies = Object.keys({
|
|
42
|
+
...pkg.packageJson.peerDependencies,
|
|
43
|
+
...pkg.packageJson.optionalDependencies,
|
|
44
|
+
...pkg.packageJson.dependencies,
|
|
45
|
+
});
|
|
46
|
+
return { manifest, config, runtimeDependencies };
|
|
41
47
|
};
|
|
42
48
|
/**
|
|
43
49
|
* Loads `app.manifest(.*)?` (or applies an inline {@link AppManifestFn}), falling back to the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-app-test-env.js","sourceRoot":"","sources":["../../src/resolve-app-test-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,EACL,4BAA4B,EAC5B,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,kBAAkB,GAInB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve-app-test-env.js","sourceRoot":"","sources":["../../src/resolve-app-test-env.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import { mockFramework, } from '@equinor/fusion-framework/mock';
|
|
2
2
|
import { enableAppManifestMock } from '@equinor/fusion-framework-app/mock';
|
|
3
|
+
import { enableFeatureFlagMock } from '@equinor/fusion-framework-module-feature-flag/mock';
|
|
3
4
|
import { enableNavigation, createHistory } from '@equinor/fusion-framework-module-navigation';
|
|
4
5
|
import { defaultAppEnv } from './default-app-env';
|
|
6
|
+
const APP_MODULE_MOCKS = new Map([
|
|
7
|
+
['@equinor/fusion-framework-module-feature-flag', enableFeatureFlagMock],
|
|
8
|
+
]);
|
|
5
9
|
/**
|
|
6
|
-
* Enables
|
|
7
|
-
*
|
|
8
|
-
*
|
|
10
|
+
* Enables parent framework mocks associated with the application's runtime dependencies.
|
|
11
|
+
*
|
|
12
|
+
* @param configurator - Parent framework configurator receiving module mocks.
|
|
13
|
+
* @param runtimeDependencies - Package names declared by the tested application.
|
|
9
14
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
// registration failure isn't silently swallowed
|
|
18
|
-
if (error instanceof Error &&
|
|
19
|
-
(error.message.includes('Cannot find module') || error.message.includes('MODULE_NOT_FOUND'))) {
|
|
20
|
-
return;
|
|
15
|
+
function enableAppModuleMocks(configurator, runtimeDependencies) {
|
|
16
|
+
// Resolve each app dependency independently so new module mocks only require a registry entry.
|
|
17
|
+
for (const dependency of runtimeDependencies) {
|
|
18
|
+
const installMock = APP_MODULE_MOCKS.get(dependency);
|
|
19
|
+
// Dependencies without a parent mock require no framework-level setup.
|
|
20
|
+
if (installMock) {
|
|
21
|
+
installMock(configurator);
|
|
21
22
|
}
|
|
22
|
-
throw error;
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
@@ -29,24 +29,22 @@ async function enableFeatureFlagMockIfAvailable(configurator) {
|
|
|
29
29
|
*
|
|
30
30
|
* @template TEnv - The application environment descriptor.
|
|
31
31
|
* @param options - `env` seeds the built-in app manifest mock; navigation defaults to in-memory
|
|
32
|
-
* history, so tests don't leak URL/history state between runs.
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* discovery entries. `fusion`, an already-built parent instance, is reused as-is and skips
|
|
38
|
-
* `configure` entirely.
|
|
32
|
+
* history, so tests don't leak URL/history state between runs. `runtimeDependencies` enables
|
|
33
|
+
* parent module mocks associated with packages declared by the tested app. `configure` runs
|
|
34
|
+
* afterwards on the same configurator — e.g. call `enableNavigation` to override the history
|
|
35
|
+
* or register extra modules and service discovery entries. `fusion`, an already-built parent
|
|
36
|
+
* instance, is reused as-is and skips `configure` entirely.
|
|
39
37
|
* @returns The given `fusion`, or a fresh mocked parent Fusion instance.
|
|
40
38
|
*/
|
|
41
39
|
export async function resolveFusion(options) {
|
|
42
|
-
const { env, fusion, configure } = options ?? {};
|
|
40
|
+
const { env, fusion, configure, runtimeDependencies = [] } = options ?? {};
|
|
43
41
|
return (fusion ??
|
|
44
42
|
mockFramework(async (configurator) => {
|
|
45
43
|
enableAppManifestMock(configurator, env ?? defaultAppEnv);
|
|
46
44
|
enableNavigation(configurator, {
|
|
47
45
|
configure: (config) => config.setHistory(createHistory('memory')),
|
|
48
46
|
});
|
|
49
|
-
|
|
47
|
+
enableAppModuleMocks(configurator, runtimeDependencies);
|
|
50
48
|
await configure?.(configurator);
|
|
51
49
|
}));
|
|
52
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-fusion.js","sourceRoot":"","sources":["../../../src/scope/resolve-fusion.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,GAGd,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAG9F,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve-fusion.js","sourceRoot":"","sources":["../../../src/scope/resolve-fusion.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,GAGd,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAG9F,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAMlD,MAAM,gBAAgB,GAAgD,IAAI,GAAG,CAAC;IAC5E,CAAC,+CAA+C,EAAE,qBAAqB,CAAC;CACzE,CAAC,CAAC;AAEH;;;;;GAKG;AACH,SAAS,oBAAoB,CAC3B,YAAsE,EACtE,mBAA0C;IAE1C,+FAA+F;IAC/F,KAAK,MAAM,UAAU,IAAI,mBAAmB,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACrD,uEAAuE;QACvE,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,CAAC,YAAY,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAA+B,OAKjE;IACC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,mBAAmB,GAAG,EAAE,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAC3E,OAAO,CACL,MAAM;QACN,aAAa,CAAgC,KAAK,EAAE,YAAY,EAAE,EAAE;YAClE,qBAAqB,CAAC,YAAY,EAAE,GAAG,IAAK,aAAsB,CAAC,CAAC;YACpE,gBAAgB,CAAC,YAAY,EAAE;gBAC7B,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;aAClE,CAAC,CAAC;YACH,oBAAoB,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;YACxD,MAAM,SAAS,EAAE,CAAC,YAAY,CAAC,CAAC;QAClC,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
|
package/dist/esm/test-app.js
CHANGED
|
@@ -82,16 +82,13 @@ import { defaultAppEnv, resolveFusion, createAppScopeWrapper } from './scope';
|
|
|
82
82
|
* });
|
|
83
83
|
* ```
|
|
84
84
|
*
|
|
85
|
-
* @example Extend the parent framework mock with
|
|
85
|
+
* @example Extend the parent framework mock with service discovery
|
|
86
86
|
* ```tsx
|
|
87
87
|
* const test = testApp.extend(
|
|
88
88
|
* 'configureFusion',
|
|
89
89
|
* { injected: true },
|
|
90
90
|
* (): FrameworkMockConfigureFn<[AppModule, NavigationModule]> =>
|
|
91
91
|
* (configurator) => {
|
|
92
|
-
* // seed a specific flag rather than merely enabling the mock — that's already the
|
|
93
|
-
* // default when the optional feature-flag peer dependency is installed
|
|
94
|
-
* enableFeatureFlagMock(configurator, (mock) => mock.addFeature({ key: 'new-search', enabled: true }));
|
|
95
92
|
* configurator.serviceDiscovery.addServices([
|
|
96
93
|
* { key: 'people', uri: baseUrl('people') },
|
|
97
94
|
* { key: 'context', uri: baseUrl('context') },
|
|
@@ -102,17 +99,17 @@ import { defaultAppEnv, resolveFusion, createAppScopeWrapper } from './scope';
|
|
|
102
99
|
*/
|
|
103
100
|
export const testApp = baseTest
|
|
104
101
|
.extend('appEnv', { injected: true }, defaultAppEnv)
|
|
102
|
+
.extend('runtimeDependencies', { injected: true }, [])
|
|
105
103
|
// `test.extend`'s plain-`value` overload rejects function types (ambiguous with the
|
|
106
104
|
// resolver-`fn` overload), so a function-typed fixture default must go through `fn` instead.
|
|
107
105
|
.extend('configureApp', { injected: true }, () => undefined)
|
|
108
|
-
// Runs after the built-in app manifest/navigation
|
|
109
|
-
//
|
|
110
|
-
// `enableFeatureFlagMock` again to override either, without reimplementing the base setup.
|
|
106
|
+
// Runs after the built-in app manifest/navigation setup, so a test can register
|
|
107
|
+
// framework-scoped modules, service discovery entries, or override navigation.
|
|
111
108
|
.extend('configureFusion', { injected: true }, () => undefined)
|
|
112
109
|
// IMPORTANT: `.override('fusion', ...)` replaces this resolver entirely, so `configureFusion`
|
|
113
110
|
// is never called — reach for `configureFusion` to extend the base mock, `fusion` only to
|
|
114
111
|
// replace it outright (e.g. with a fully custom or non-mocked instance).
|
|
115
|
-
.extend('fusion', async ({ appEnv, configureFusion }) => resolveFusion({ env: appEnv, configure: configureFusion }))
|
|
112
|
+
.extend('fusion', async ({ appEnv, configureFusion, runtimeDependencies }) => resolveFusion({ env: appEnv, configure: configureFusion, runtimeDependencies }))
|
|
116
113
|
.extend('app', async ({ configureApp, appEnv, fusion }) => mockAppModules(configureApp, appEnv, fusion))
|
|
117
114
|
.extend('render', ({ fusion, app }) => {
|
|
118
115
|
const wrapper = createAppScopeWrapper({ framework: fusion, app });
|
package/dist/esm/test-app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-app.js","sourceRoot":"","sources":["../../src/test-app.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAOpE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAE9E
|
|
1
|
+
{"version":3,"file":"test-app.js","sourceRoot":"","sources":["../../src/test-app.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAOpE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8FG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ;KAC5B,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,aAAa,CAAC;KACnD,MAAM,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAmB,CAAC;IACvE,oFAAoF;IACpF,6FAA6F;KAC5F,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,SAA2C,CAAC;IAC9F,gFAAgF;IAChF,+EAA+E;KAC9E,MAAM,CACL,iBAAiB,EACjB,EAAE,QAAQ,EAAE,IAAI,EAAE,EAClB,GAAG,EAAE,CAAC,SAAgF,CACvF;IACD,8FAA8F;IAC9F,0FAA0F;IAC1F,yEAAyE;KACxE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAC3E,aAAa,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,mBAAmB,EAAE,CAAC,CAChF;KACA,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CACxD,cAAc,CAAkB,YAAY,EAAE,MAAgB,EAAE,MAAM,CAAC,CACxE;KACA,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE;IACpC,MAAM,OAAO,GAAG,qBAAqB,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,EAAgB,EAAE,OAAwC,EAAE,EAAE,CACpE,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AACxC,CAAC,CAAC;KACD,MAAM,CAAC,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE;IACxC,MAAM,OAAO,GAAG,qBAAqB,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,OAAO,CACL,EAAoC,EACpC,OAAmD,EACnD,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEL,eAAe,OAAO,CAAC"}
|
package/dist/esm/test.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { testApp as baseTestApp } from './test-app';
|
|
2
2
|
// resolved at test-time by `appTestVitePlugin` (@equinor/fusion-framework-vitest-plugin-react-app);
|
|
3
3
|
// see virtual-modules.d.ts for the ambient module declarations
|
|
4
|
-
import { manifest, config } from 'virtual:fusion-app-test-env';
|
|
4
|
+
import { manifest, config, runtimeDependencies } from 'virtual:fusion-app-test-env';
|
|
5
5
|
import { configure as configureApp } from 'virtual:fusion-app-test-configure';
|
|
6
6
|
/**
|
|
7
7
|
* `vitest`'s `test`, pre-seeded with the application's own manifest, config, and
|
|
@@ -35,6 +35,7 @@ import { configure as configureApp } from 'virtual:fusion-app-test-configure';
|
|
|
35
35
|
*/
|
|
36
36
|
export const test = baseTestApp
|
|
37
37
|
.extend('appEnv', { injected: true }, { manifest, config })
|
|
38
|
+
.extend('runtimeDependencies', { injected: true }, runtimeDependencies)
|
|
38
39
|
.extend('configureApp', { injected: true }, () => configureApp);
|
|
39
40
|
export default test;
|
|
40
41
|
//# sourceMappingURL=test.js.map
|
package/dist/esm/test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,YAAY,CAAC;AAEpD,oGAAoG;AACpG,+DAA+D;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,YAAY,CAAC;AAEpD,oGAAoG;AACpG,+DAA+D;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,WAAW;KAC5B,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;KAC1D,MAAM,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,mBAAmB,CAAC;KACtE,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC;AAElE,eAAe,IAAI,CAAC"}
|
package/dist/esm/version.js
CHANGED