@equinor/fusion-framework-vitest-plugin-react-app 1.0.0-next.6 → 1.0.1
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/esm/version.js.map +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 -196
- 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/types/index.d.ts
CHANGED
|
@@ -34,9 +34,10 @@ export type AppTestVitePluginOptions = ResolveAppTestEnvOptions & {
|
|
|
34
34
|
* // ...your own browser-mode config
|
|
35
35
|
* });
|
|
36
36
|
* ```
|
|
37
|
-
* Exposes two virtual modules: `virtual:fusion-app-test-env`
|
|
38
|
-
* `virtual:fusion-app-test-configure`
|
|
39
|
-
* `undefined` if none exists). Not intended
|
|
37
|
+
* Exposes two virtual modules: `virtual:fusion-app-test-env`
|
|
38
|
+
* (`manifest`/`config`/`runtimeDependencies`, as JSON) and `virtual:fusion-app-test-configure`
|
|
39
|
+
* (a re-export of the resolved `configure` module, or `undefined` if none exists). Not intended
|
|
40
|
+
* to be imported directly by application code.
|
|
40
41
|
*
|
|
41
42
|
* @param options - Resolution options; `entrypoint` defaults to the current working directory.
|
|
42
43
|
* @returns A Vite plugin instance.
|
|
@@ -6,6 +6,8 @@ import { type AppManifestFn, type AppConfigFn, type ApiAppConfig } from '@equino
|
|
|
6
6
|
export type AppTestEnv = {
|
|
7
7
|
manifest: AppManifest;
|
|
8
8
|
config: ApiAppConfig;
|
|
9
|
+
/** Package names declared by the application as runtime dependencies. */
|
|
10
|
+
runtimeDependencies: Array<string>;
|
|
9
11
|
};
|
|
10
12
|
/**
|
|
11
13
|
* Options for {@link resolveAppTestEnv}.
|
|
@@ -38,7 +40,7 @@ export type ResolveAppTestEnvOptions = {
|
|
|
38
40
|
* `test.override('appEnv', ...)`.
|
|
39
41
|
*
|
|
40
42
|
* @param options - Resolution options; `entrypoint` defaults to the current working directory.
|
|
41
|
-
* @returns The resolved application manifest and
|
|
43
|
+
* @returns The resolved application manifest, config, and module capabilities.
|
|
42
44
|
* @throws If no `package.json` can be found from `entrypoint` upward, or an explicitly requested
|
|
43
45
|
* `manifest`/`config` file does not exist.
|
|
44
46
|
* @example
|
|
@@ -10,17 +10,16 @@ import type { NavigationModule } from '@equinor/fusion-framework-module-navigati
|
|
|
10
10
|
*
|
|
11
11
|
* @template TEnv - The application environment descriptor.
|
|
12
12
|
* @param options - `env` seeds the built-in app manifest mock; navigation defaults to in-memory
|
|
13
|
-
* history, so tests don't leak URL/history state between runs.
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* discovery entries. `fusion`, an already-built parent instance, is reused as-is and skips
|
|
19
|
-
* `configure` entirely.
|
|
13
|
+
* history, so tests don't leak URL/history state between runs. `runtimeDependencies` enables
|
|
14
|
+
* parent module mocks associated with packages declared by the tested app. `configure` runs
|
|
15
|
+
* afterwards on the same configurator — e.g. call `enableNavigation` to override the history
|
|
16
|
+
* or register extra modules and service discovery entries. `fusion`, an already-built parent
|
|
17
|
+
* instance, is reused as-is and skips `configure` entirely.
|
|
20
18
|
* @returns The given `fusion`, or a fresh mocked parent Fusion instance.
|
|
21
19
|
*/
|
|
22
20
|
export declare function resolveFusion<TEnv extends AppEnv = AppEnv>(options?: {
|
|
23
21
|
env?: TEnv;
|
|
24
22
|
fusion?: Fusion;
|
|
25
23
|
configure?: FrameworkMockConfigureFn<[AppModule, NavigationModule]>;
|
|
24
|
+
runtimeDependencies?: ReadonlyArray<string>;
|
|
26
25
|
}): Promise<Fusion>;
|
package/dist/types/test-app.d.ts
CHANGED
|
@@ -85,16 +85,13 @@ import type { FrameworkMockConfigureFn } from '@equinor/fusion-framework/mock';
|
|
|
85
85
|
* });
|
|
86
86
|
* ```
|
|
87
87
|
*
|
|
88
|
-
* @example Extend the parent framework mock with
|
|
88
|
+
* @example Extend the parent framework mock with service discovery
|
|
89
89
|
* ```tsx
|
|
90
90
|
* const test = testApp.extend(
|
|
91
91
|
* 'configureFusion',
|
|
92
92
|
* { injected: true },
|
|
93
93
|
* (): FrameworkMockConfigureFn<[AppModule, NavigationModule]> =>
|
|
94
94
|
* (configurator) => {
|
|
95
|
-
* // seed a specific flag rather than merely enabling the mock — that's already the
|
|
96
|
-
* // default when the optional feature-flag peer dependency is installed
|
|
97
|
-
* enableFeatureFlagMock(configurator, (mock) => mock.addFeature({ key: 'new-search', enabled: true }));
|
|
98
95
|
* configurator.serviceDiscovery.addServices([
|
|
99
96
|
* { key: 'people', uri: baseUrl('people') },
|
|
100
97
|
* { key: 'context', uri: baseUrl('context') },
|
|
@@ -103,33 +100,37 @@ import type { FrameworkMockConfigureFn } from '@equinor/fusion-framework/mock';
|
|
|
103
100
|
* );
|
|
104
101
|
* ```
|
|
105
102
|
*/
|
|
106
|
-
export declare const testApp: import("vitest").TestAPI<Omit<Omit<Omit<Omit<Omit<Omit<Omit<object, "$__test"> & Record<"appEnv", AppEnv> & {
|
|
103
|
+
export declare const testApp: import("vitest").TestAPI<Omit<Omit<Omit<Omit<Omit<Omit<Omit<Omit<object, "$__test"> & Record<"appEnv", AppEnv> & {
|
|
107
104
|
readonly $__worker?: object | undefined;
|
|
108
105
|
readonly $__file?: object | undefined;
|
|
109
106
|
readonly $__test?: (object & Record<"appEnv", AppEnv>) | undefined;
|
|
107
|
+
}, "$__test"> & Record<"runtimeDependencies", string[]> & {
|
|
108
|
+
readonly $__worker?: object | undefined;
|
|
109
|
+
readonly $__file?: object | undefined;
|
|
110
|
+
readonly $__test?: (object & Record<"appEnv", AppEnv> & Record<"runtimeDependencies", string[]>) | undefined;
|
|
110
111
|
}, "$__test"> & Record<"configureApp", AppMockConfigureFn | undefined> & {
|
|
111
112
|
readonly $__worker?: object | undefined;
|
|
112
113
|
readonly $__file?: object | undefined;
|
|
113
|
-
readonly $__test?: (object & Record<"appEnv", AppEnv> & Record<"configureApp", AppMockConfigureFn | undefined>) | undefined;
|
|
114
|
+
readonly $__test?: (object & Record<"appEnv", AppEnv> & Record<"runtimeDependencies", string[]> & Record<"configureApp", AppMockConfigureFn | undefined>) | undefined;
|
|
114
115
|
}, "$__test"> & Record<"configureFusion", FrameworkMockConfigureFn<[AppModule, NavigationModule]> | undefined> & {
|
|
115
116
|
readonly $__worker?: object | undefined;
|
|
116
117
|
readonly $__file?: object | undefined;
|
|
117
|
-
readonly $__test?: (object & Record<"appEnv", AppEnv> & Record<"configureApp", AppMockConfigureFn | undefined> & Record<"configureFusion", FrameworkMockConfigureFn<[AppModule, NavigationModule]> | undefined>) | undefined;
|
|
118
|
+
readonly $__test?: (object & Record<"appEnv", AppEnv> & Record<"runtimeDependencies", string[]> & Record<"configureApp", AppMockConfigureFn | undefined> & Record<"configureFusion", FrameworkMockConfigureFn<[AppModule, NavigationModule]> | undefined>) | undefined;
|
|
118
119
|
}, "$__test"> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>> & {
|
|
119
120
|
readonly $__worker?: object | undefined;
|
|
120
121
|
readonly $__file?: object | undefined;
|
|
121
|
-
readonly $__test?: (object & Record<"appEnv", AppEnv> & Record<"configureApp", AppMockConfigureFn | undefined> & Record<"configureFusion", FrameworkMockConfigureFn<[AppModule, NavigationModule]> | undefined> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>>) | undefined;
|
|
122
|
+
readonly $__test?: (object & Record<"appEnv", AppEnv> & Record<"runtimeDependencies", string[]> & Record<"configureApp", AppMockConfigureFn | undefined> & Record<"configureFusion", FrameworkMockConfigureFn<[AppModule, NavigationModule]> | undefined> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>>) | undefined;
|
|
122
123
|
}, "$__test"> & Record<"app", import("@equinor/fusion-framework-module-app").AppModulesInstance<unknown>> & {
|
|
123
124
|
readonly $__worker?: object | undefined;
|
|
124
125
|
readonly $__file?: object | undefined;
|
|
125
|
-
readonly $__test?: (object & Record<"appEnv", AppEnv> & Record<"configureApp", AppMockConfigureFn | undefined> & Record<"configureFusion", FrameworkMockConfigureFn<[AppModule, NavigationModule]> | undefined> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>> & Record<"app", import("@equinor/fusion-framework-module-app").AppModulesInstance<unknown>>) | undefined;
|
|
126
|
+
readonly $__test?: (object & Record<"appEnv", AppEnv> & Record<"runtimeDependencies", string[]> & Record<"configureApp", AppMockConfigureFn | undefined> & Record<"configureFusion", FrameworkMockConfigureFn<[AppModule, NavigationModule]> | undefined> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>> & Record<"app", import("@equinor/fusion-framework-module-app").AppModulesInstance<unknown>>) | undefined;
|
|
126
127
|
}, "$__test"> & Record<"render", (ui: ReactElement, options?: Omit<RenderOptions, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderResult>> & {
|
|
127
128
|
readonly $__worker?: object | undefined;
|
|
128
129
|
readonly $__file?: object | undefined;
|
|
129
|
-
readonly $__test?: (object & Record<"appEnv", AppEnv> & Record<"configureApp", AppMockConfigureFn | undefined> & Record<"configureFusion", FrameworkMockConfigureFn<[AppModule, NavigationModule]> | undefined> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>> & Record<"app", import("@equinor/fusion-framework-module-app").AppModulesInstance<unknown>> & Record<"render", (ui: ReactElement, options?: Omit<RenderOptions, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderResult>>) | undefined;
|
|
130
|
+
readonly $__test?: (object & Record<"appEnv", AppEnv> & Record<"runtimeDependencies", string[]> & Record<"configureApp", AppMockConfigureFn | undefined> & Record<"configureFusion", FrameworkMockConfigureFn<[AppModule, NavigationModule]> | undefined> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>> & Record<"app", import("@equinor/fusion-framework-module-app").AppModulesInstance<unknown>> & Record<"render", (ui: ReactElement, options?: Omit<RenderOptions, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderResult>>) | undefined;
|
|
130
131
|
}, "$__test"> & Record<"renderHook", <Result, Props = undefined>(cb: (initialProps?: Props) => Result, options?: Omit<RenderHookOptions<Props>, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderHookResult<Result, Props>>> & {
|
|
131
132
|
readonly $__worker?: object | undefined;
|
|
132
133
|
readonly $__file?: object | undefined;
|
|
133
|
-
readonly $__test?: (object & Record<"appEnv", AppEnv> & Record<"configureApp", AppMockConfigureFn | undefined> & Record<"configureFusion", FrameworkMockConfigureFn<[AppModule, NavigationModule]> | undefined> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>> & Record<"app", import("@equinor/fusion-framework-module-app").AppModulesInstance<unknown>> & Record<"render", (ui: ReactElement, options?: Omit<RenderOptions, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderResult>> & Record<"renderHook", <Result, Props = undefined>(cb: (initialProps?: Props) => Result, options?: Omit<RenderHookOptions<Props>, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderHookResult<Result, Props>>>) | undefined;
|
|
134
|
+
readonly $__test?: (object & Record<"appEnv", AppEnv> & Record<"runtimeDependencies", string[]> & Record<"configureApp", AppMockConfigureFn | undefined> & Record<"configureFusion", FrameworkMockConfigureFn<[AppModule, NavigationModule]> | undefined> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>> & Record<"app", import("@equinor/fusion-framework-module-app").AppModulesInstance<unknown>> & Record<"render", (ui: ReactElement, options?: Omit<RenderOptions, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderResult>> & Record<"renderHook", <Result, Props = undefined>(cb: (initialProps?: Props) => Result, options?: Omit<RenderHookOptions<Props>, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderHookResult<Result, Props>>>) | undefined;
|
|
134
135
|
}>;
|
|
135
136
|
export default testApp;
|
package/dist/types/test.d.ts
CHANGED
|
@@ -28,48 +28,59 @@
|
|
|
28
28
|
* });
|
|
29
29
|
* ```
|
|
30
30
|
*/
|
|
31
|
-
export declare const test: import("vitest").TestAPI<Omit<Omit<Omit<Omit<Omit<Omit<Omit<Omit<Omit<object, "$__test"> & Record<"appEnv", import("node_modules/@equinor/fusion-framework-app/src/types").AppEnv> & {
|
|
31
|
+
export declare const test: import("vitest").TestAPI<Omit<Omit<Omit<Omit<Omit<Omit<Omit<Omit<Omit<Omit<Omit<object, "$__test"> & Record<"appEnv", import("node_modules/@equinor/fusion-framework-app/src/types").AppEnv> & {
|
|
32
32
|
readonly $__worker?: object | undefined;
|
|
33
33
|
readonly $__file?: object | undefined;
|
|
34
34
|
readonly $__test?: (object & Record<"appEnv", import("node_modules/@equinor/fusion-framework-app/src/types").AppEnv>) | undefined;
|
|
35
|
+
}, "$__test"> & Record<"runtimeDependencies", string[]> & {
|
|
36
|
+
readonly $__worker?: object | undefined;
|
|
37
|
+
readonly $__file?: object | undefined;
|
|
38
|
+
readonly $__test?: (object & Record<"appEnv", import("node_modules/@equinor/fusion-framework-app/src/types").AppEnv> & Record<"runtimeDependencies", string[]>) | undefined;
|
|
35
39
|
}, "$__test"> & Record<"configureApp", import("node_modules/@equinor/fusion-framework-app/src/mock/mock-app-modules").AppMockConfigureFn | undefined> & {
|
|
36
40
|
readonly $__worker?: object | undefined;
|
|
37
41
|
readonly $__file?: object | undefined;
|
|
38
|
-
readonly $__test?: (object & Record<"appEnv", import("node_modules/@equinor/fusion-framework-app/src/types").AppEnv> & Record<"configureApp", import("node_modules/@equinor/fusion-framework-app/src/mock/mock-app-modules").AppMockConfigureFn | undefined>) | undefined;
|
|
42
|
+
readonly $__test?: (object & Record<"appEnv", import("node_modules/@equinor/fusion-framework-app/src/types").AppEnv> & Record<"runtimeDependencies", string[]> & Record<"configureApp", import("node_modules/@equinor/fusion-framework-app/src/mock/mock-app-modules").AppMockConfigureFn | undefined>) | undefined;
|
|
39
43
|
}, "$__test"> & Record<"configureFusion", import("node_modules/@equinor/fusion-framework/src/mock/mock-framework").FrameworkMockConfigureFn<[import("node_modules/@equinor/fusion-framework-module-app/src/module").AppModule, import("node_modules/@equinor/fusion-framework-module-navigation/src/module").NavigationModule]> | undefined> & {
|
|
40
44
|
readonly $__worker?: object | undefined;
|
|
41
45
|
readonly $__file?: object | undefined;
|
|
42
|
-
readonly $__test?: (object & Record<"appEnv", import("node_modules/@equinor/fusion-framework-app/src/types").AppEnv> & Record<"configureApp", import("node_modules/@equinor/fusion-framework-app/src/mock/mock-app-modules").AppMockConfigureFn | undefined> & Record<"configureFusion", import("node_modules/@equinor/fusion-framework/src/mock/mock-framework").FrameworkMockConfigureFn<[import("node_modules/@equinor/fusion-framework-module-app/src/module").AppModule, import("node_modules/@equinor/fusion-framework-module-navigation/src/module").NavigationModule]> | undefined>) | undefined;
|
|
46
|
+
readonly $__test?: (object & Record<"appEnv", import("node_modules/@equinor/fusion-framework-app/src/types").AppEnv> & Record<"runtimeDependencies", string[]> & Record<"configureApp", import("node_modules/@equinor/fusion-framework-app/src/mock/mock-app-modules").AppMockConfigureFn | undefined> & Record<"configureFusion", import("node_modules/@equinor/fusion-framework/src/mock/mock-framework").FrameworkMockConfigureFn<[import("node_modules/@equinor/fusion-framework-module-app/src/module").AppModule, import("node_modules/@equinor/fusion-framework-module-navigation/src/module").NavigationModule]> | undefined>) | undefined;
|
|
43
47
|
}, "$__test"> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>> & {
|
|
44
48
|
readonly $__worker?: object | undefined;
|
|
45
49
|
readonly $__file?: object | undefined;
|
|
46
|
-
readonly $__test?: (object & Record<"appEnv", import("node_modules/@equinor/fusion-framework-app/src/types").AppEnv> & Record<"configureApp", import("node_modules/@equinor/fusion-framework-app/src/mock/mock-app-modules").AppMockConfigureFn | undefined> & Record<"configureFusion", import("node_modules/@equinor/fusion-framework/src/mock/mock-framework").FrameworkMockConfigureFn<[import("node_modules/@equinor/fusion-framework-module-app/src/module").AppModule, import("node_modules/@equinor/fusion-framework-module-navigation/src/module").NavigationModule]> | undefined> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>>) | undefined;
|
|
50
|
+
readonly $__test?: (object & Record<"appEnv", import("node_modules/@equinor/fusion-framework-app/src/types").AppEnv> & Record<"runtimeDependencies", string[]> & Record<"configureApp", import("node_modules/@equinor/fusion-framework-app/src/mock/mock-app-modules").AppMockConfigureFn | undefined> & Record<"configureFusion", import("node_modules/@equinor/fusion-framework/src/mock/mock-framework").FrameworkMockConfigureFn<[import("node_modules/@equinor/fusion-framework-module-app/src/module").AppModule, import("node_modules/@equinor/fusion-framework-module-navigation/src/module").NavigationModule]> | undefined> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>>) | undefined;
|
|
47
51
|
}, "$__test"> & Record<"app", import("node_modules/@equinor/fusion-framework-module-app/src/types").AppModulesInstance<unknown>> & {
|
|
48
52
|
readonly $__worker?: object | undefined;
|
|
49
53
|
readonly $__file?: object | undefined;
|
|
50
|
-
readonly $__test?: (object & Record<"appEnv", import("node_modules/@equinor/fusion-framework-app/src/types").AppEnv> & Record<"configureApp", import("node_modules/@equinor/fusion-framework-app/src/mock/mock-app-modules").AppMockConfigureFn | undefined> & Record<"configureFusion", import("node_modules/@equinor/fusion-framework/src/mock/mock-framework").FrameworkMockConfigureFn<[import("node_modules/@equinor/fusion-framework-module-app/src/module").AppModule, import("node_modules/@equinor/fusion-framework-module-navigation/src/module").NavigationModule]> | undefined> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>> & Record<"app", import("node_modules/@equinor/fusion-framework-module-app/src/types").AppModulesInstance<unknown>>) | undefined;
|
|
54
|
+
readonly $__test?: (object & Record<"appEnv", import("node_modules/@equinor/fusion-framework-app/src/types").AppEnv> & Record<"runtimeDependencies", string[]> & Record<"configureApp", import("node_modules/@equinor/fusion-framework-app/src/mock/mock-app-modules").AppMockConfigureFn | undefined> & Record<"configureFusion", import("node_modules/@equinor/fusion-framework/src/mock/mock-framework").FrameworkMockConfigureFn<[import("node_modules/@equinor/fusion-framework-module-app/src/module").AppModule, import("node_modules/@equinor/fusion-framework-module-navigation/src/module").NavigationModule]> | undefined> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>> & Record<"app", import("node_modules/@equinor/fusion-framework-module-app/src/types").AppModulesInstance<unknown>>) | undefined;
|
|
51
55
|
}, "$__test"> & Record<"render", (ui: import("node_modules/@types/react").ReactElement, options?: Omit<import("node_modules/vitest-browser-react/dist").RenderOptions, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderResult>> & {
|
|
52
56
|
readonly $__worker?: object | undefined;
|
|
53
57
|
readonly $__file?: object | undefined;
|
|
54
|
-
readonly $__test?: (object & Record<"appEnv", import("node_modules/@equinor/fusion-framework-app/src/types").AppEnv> & Record<"configureApp", import("node_modules/@equinor/fusion-framework-app/src/mock/mock-app-modules").AppMockConfigureFn | undefined> & Record<"configureFusion", import("node_modules/@equinor/fusion-framework/src/mock/mock-framework").FrameworkMockConfigureFn<[import("node_modules/@equinor/fusion-framework-module-app/src/module").AppModule, import("node_modules/@equinor/fusion-framework-module-navigation/src/module").NavigationModule]> | undefined> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>> & Record<"app", import("node_modules/@equinor/fusion-framework-module-app/src/types").AppModulesInstance<unknown>> & Record<"render", (ui: import("node_modules/@types/react").ReactElement, options?: Omit<import("node_modules/vitest-browser-react/dist").RenderOptions, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderResult>>) | undefined;
|
|
58
|
+
readonly $__test?: (object & Record<"appEnv", import("node_modules/@equinor/fusion-framework-app/src/types").AppEnv> & Record<"runtimeDependencies", string[]> & Record<"configureApp", import("node_modules/@equinor/fusion-framework-app/src/mock/mock-app-modules").AppMockConfigureFn | undefined> & Record<"configureFusion", import("node_modules/@equinor/fusion-framework/src/mock/mock-framework").FrameworkMockConfigureFn<[import("node_modules/@equinor/fusion-framework-module-app/src/module").AppModule, import("node_modules/@equinor/fusion-framework-module-navigation/src/module").NavigationModule]> | undefined> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>> & Record<"app", import("node_modules/@equinor/fusion-framework-module-app/src/types").AppModulesInstance<unknown>> & Record<"render", (ui: import("node_modules/@types/react").ReactElement, options?: Omit<import("node_modules/vitest-browser-react/dist").RenderOptions, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderResult>>) | undefined;
|
|
55
59
|
}, "$__test"> & Record<"renderHook", <Result, Props = undefined>(cb: (initialProps?: Props) => Result, options?: Omit<import("node_modules/vitest-browser-react/dist").RenderHookOptions<Props>, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderHookResult<Result, Props>>> & {
|
|
56
60
|
readonly $__worker?: object | undefined;
|
|
57
61
|
readonly $__file?: object | undefined;
|
|
58
|
-
readonly $__test?: (object & Record<"appEnv", import("node_modules/@equinor/fusion-framework-app/src/types").AppEnv> & Record<"configureApp", import("node_modules/@equinor/fusion-framework-app/src/mock/mock-app-modules").AppMockConfigureFn | undefined> & Record<"configureFusion", import("node_modules/@equinor/fusion-framework/src/mock/mock-framework").FrameworkMockConfigureFn<[import("node_modules/@equinor/fusion-framework-module-app/src/module").AppModule, import("node_modules/@equinor/fusion-framework-module-navigation/src/module").NavigationModule]> | undefined> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>> & Record<"app", import("node_modules/@equinor/fusion-framework-module-app/src/types").AppModulesInstance<unknown>> & Record<"render", (ui: import("node_modules/@types/react").ReactElement, options?: Omit<import("node_modules/vitest-browser-react/dist").RenderOptions, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderResult>> & Record<"renderHook", <Result, Props = undefined>(cb: (initialProps?: Props) => Result, options?: Omit<import("node_modules/vitest-browser-react/dist").RenderHookOptions<Props>, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderHookResult<Result, Props>>>) | undefined;
|
|
62
|
+
readonly $__test?: (object & Record<"appEnv", import("node_modules/@equinor/fusion-framework-app/src/types").AppEnv> & Record<"runtimeDependencies", string[]> & Record<"configureApp", import("node_modules/@equinor/fusion-framework-app/src/mock/mock-app-modules").AppMockConfigureFn | undefined> & Record<"configureFusion", import("node_modules/@equinor/fusion-framework/src/mock/mock-framework").FrameworkMockConfigureFn<[import("node_modules/@equinor/fusion-framework-module-app/src/module").AppModule, import("node_modules/@equinor/fusion-framework-module-navigation/src/module").NavigationModule]> | undefined> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>> & Record<"app", import("node_modules/@equinor/fusion-framework-module-app/src/types").AppModulesInstance<unknown>> & Record<"render", (ui: import("node_modules/@types/react").ReactElement, options?: Omit<import("node_modules/vitest-browser-react/dist").RenderOptions, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderResult>> & Record<"renderHook", <Result, Props = undefined>(cb: (initialProps?: Props) => Result, options?: Omit<import("node_modules/vitest-browser-react/dist").RenderHookOptions<Props>, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderHookResult<Result, Props>>>) | undefined;
|
|
59
63
|
}, "$__test"> & Record<"appEnv", {
|
|
60
64
|
manifest: import("@equinor/fusion-framework-cli/app").AppManifest;
|
|
61
65
|
config: import("node_modules/@equinor/fusion-framework-module-app/src/AppConfig").AppConfig<import("node_modules/@equinor/fusion-framework-module-app/src/types").ConfigEnvironment> | undefined;
|
|
62
66
|
}> & {
|
|
63
67
|
readonly $__worker?: object | undefined;
|
|
64
68
|
readonly $__file?: object | undefined;
|
|
65
|
-
readonly $__test?: (object & Record<"appEnv", import("node_modules/@equinor/fusion-framework-app/src/types").AppEnv> & Record<"configureApp", import("node_modules/@equinor/fusion-framework-app/src/mock/mock-app-modules").AppMockConfigureFn | undefined> & Record<"configureFusion", import("node_modules/@equinor/fusion-framework/src/mock/mock-framework").FrameworkMockConfigureFn<[import("node_modules/@equinor/fusion-framework-module-app/src/module").AppModule, import("node_modules/@equinor/fusion-framework-module-navigation/src/module").NavigationModule]> | undefined> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>> & Record<"app", import("node_modules/@equinor/fusion-framework-module-app/src/types").AppModulesInstance<unknown>> & Record<"render", (ui: import("node_modules/@types/react").ReactElement, options?: Omit<import("node_modules/vitest-browser-react/dist").RenderOptions, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderResult>> & Record<"renderHook", <Result, Props = undefined>(cb: (initialProps?: Props) => Result, options?: Omit<import("node_modules/vitest-browser-react/dist").RenderHookOptions<Props>, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderHookResult<Result, Props>>> & Record<"appEnv", {
|
|
69
|
+
readonly $__test?: (object & Record<"appEnv", import("node_modules/@equinor/fusion-framework-app/src/types").AppEnv> & Record<"runtimeDependencies", string[]> & Record<"configureApp", import("node_modules/@equinor/fusion-framework-app/src/mock/mock-app-modules").AppMockConfigureFn | undefined> & Record<"configureFusion", import("node_modules/@equinor/fusion-framework/src/mock/mock-framework").FrameworkMockConfigureFn<[import("node_modules/@equinor/fusion-framework-module-app/src/module").AppModule, import("node_modules/@equinor/fusion-framework-module-navigation/src/module").NavigationModule]> | undefined> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>> & Record<"app", import("node_modules/@equinor/fusion-framework-module-app/src/types").AppModulesInstance<unknown>> & Record<"render", (ui: import("node_modules/@types/react").ReactElement, options?: Omit<import("node_modules/vitest-browser-react/dist").RenderOptions, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderResult>> & Record<"renderHook", <Result, Props = undefined>(cb: (initialProps?: Props) => Result, options?: Omit<import("node_modules/vitest-browser-react/dist").RenderHookOptions<Props>, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderHookResult<Result, Props>>> & Record<"appEnv", {
|
|
70
|
+
manifest: import("@equinor/fusion-framework-cli/app").AppManifest;
|
|
71
|
+
config: import("node_modules/@equinor/fusion-framework-module-app/src/AppConfig").AppConfig<import("node_modules/@equinor/fusion-framework-module-app/src/types").ConfigEnvironment> | undefined;
|
|
72
|
+
}>) | undefined;
|
|
73
|
+
}, "$__test"> & Record<"runtimeDependencies", string[]> & {
|
|
74
|
+
readonly $__worker?: object | undefined;
|
|
75
|
+
readonly $__file?: object | undefined;
|
|
76
|
+
readonly $__test?: (object & Record<"appEnv", import("node_modules/@equinor/fusion-framework-app/src/types").AppEnv> & Record<"runtimeDependencies", string[]> & Record<"configureApp", import("node_modules/@equinor/fusion-framework-app/src/mock/mock-app-modules").AppMockConfigureFn | undefined> & Record<"configureFusion", import("node_modules/@equinor/fusion-framework/src/mock/mock-framework").FrameworkMockConfigureFn<[import("node_modules/@equinor/fusion-framework-module-app/src/module").AppModule, import("node_modules/@equinor/fusion-framework-module-navigation/src/module").NavigationModule]> | undefined> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>> & Record<"app", import("node_modules/@equinor/fusion-framework-module-app/src/types").AppModulesInstance<unknown>> & Record<"render", (ui: import("node_modules/@types/react").ReactElement, options?: Omit<import("node_modules/vitest-browser-react/dist").RenderOptions, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderResult>> & Record<"renderHook", <Result, Props = undefined>(cb: (initialProps?: Props) => Result, options?: Omit<import("node_modules/vitest-browser-react/dist").RenderHookOptions<Props>, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderHookResult<Result, Props>>> & Record<"appEnv", {
|
|
66
77
|
manifest: import("@equinor/fusion-framework-cli/app").AppManifest;
|
|
67
78
|
config: import("node_modules/@equinor/fusion-framework-module-app/src/AppConfig").AppConfig<import("node_modules/@equinor/fusion-framework-module-app/src/types").ConfigEnvironment> | undefined;
|
|
68
79
|
}>) | undefined;
|
|
69
80
|
}, "$__test"> & Record<"configureApp", import("node_modules/@equinor/fusion-framework-app/src/mock/mock-app-modules").AppMockConfigureFn | undefined> & {
|
|
70
81
|
readonly $__worker?: object | undefined;
|
|
71
82
|
readonly $__file?: object | undefined;
|
|
72
|
-
readonly $__test?: (object & Record<"appEnv", import("node_modules/@equinor/fusion-framework-app/src/types").AppEnv> & Record<"configureApp", import("node_modules/@equinor/fusion-framework-app/src/mock/mock-app-modules").AppMockConfigureFn | undefined> & Record<"configureFusion", import("node_modules/@equinor/fusion-framework/src/mock/mock-framework").FrameworkMockConfigureFn<[import("node_modules/@equinor/fusion-framework-module-app/src/module").AppModule, import("node_modules/@equinor/fusion-framework-module-navigation/src/module").NavigationModule]> | undefined> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>> & Record<"app", import("node_modules/@equinor/fusion-framework-module-app/src/types").AppModulesInstance<unknown>> & Record<"render", (ui: import("node_modules/@types/react").ReactElement, options?: Omit<import("node_modules/vitest-browser-react/dist").RenderOptions, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderResult>> & Record<"renderHook", <Result, Props = undefined>(cb: (initialProps?: Props) => Result, options?: Omit<import("node_modules/vitest-browser-react/dist").RenderHookOptions<Props>, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderHookResult<Result, Props>>> & Record<"appEnv", {
|
|
83
|
+
readonly $__test?: (object & Record<"appEnv", import("node_modules/@equinor/fusion-framework-app/src/types").AppEnv> & Record<"runtimeDependencies", string[]> & Record<"configureApp", import("node_modules/@equinor/fusion-framework-app/src/mock/mock-app-modules").AppMockConfigureFn | undefined> & Record<"configureFusion", import("node_modules/@equinor/fusion-framework/src/mock/mock-framework").FrameworkMockConfigureFn<[import("node_modules/@equinor/fusion-framework-module-app/src/module").AppModule, import("node_modules/@equinor/fusion-framework-module-navigation/src/module").NavigationModule]> | undefined> & Record<"fusion", import("node_modules/@equinor/fusion-framework/src/types").Fusion<unknown>> & Record<"app", import("node_modules/@equinor/fusion-framework-module-app/src/types").AppModulesInstance<unknown>> & Record<"render", (ui: import("node_modules/@types/react").ReactElement, options?: Omit<import("node_modules/vitest-browser-react/dist").RenderOptions, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderResult>> & Record<"renderHook", <Result, Props = undefined>(cb: (initialProps?: Props) => Result, options?: Omit<import("node_modules/vitest-browser-react/dist").RenderHookOptions<Props>, 'wrapper'>) => Promise<import("node_modules/vitest-browser-react/dist").RenderHookResult<Result, Props>>> & Record<"appEnv", {
|
|
73
84
|
manifest: import("@equinor/fusion-framework-cli/app").AppManifest;
|
|
74
85
|
config: import("node_modules/@equinor/fusion-framework-module-app/src/AppConfig").AppConfig<import("node_modules/@equinor/fusion-framework-module-app/src/types").ConfigEnvironment> | undefined;
|
|
75
86
|
}>) | undefined;
|
package/dist/types/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "1.0.
|
|
1
|
+
export declare const version = "1.0.1";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@equinor/fusion-framework-vitest-plugin-react-app",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Vite plugin resolving an application's manifest, config, and module-configurator as virtual modules for testing.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -43,19 +43,24 @@
|
|
|
43
43
|
"testing"
|
|
44
44
|
],
|
|
45
45
|
"license": "ISC",
|
|
46
|
+
"files": [
|
|
47
|
+
"dist"
|
|
48
|
+
],
|
|
46
49
|
"publishConfig": {
|
|
47
50
|
"access": "public"
|
|
48
51
|
},
|
|
49
52
|
"dependencies": {
|
|
50
|
-
"@equinor/fusion-framework": "8.1.
|
|
51
|
-
"@equinor/fusion-framework-app": "13.
|
|
52
|
-
"@equinor/fusion-framework-cli": "15.3.
|
|
53
|
-
"@equinor/fusion-framework-module": "6.1.
|
|
54
|
-
"@equinor/fusion-framework-module-app": "8.
|
|
55
|
-
"@equinor/fusion-framework-module-
|
|
56
|
-
"@equinor/fusion-framework-
|
|
57
|
-
"@equinor/fusion-
|
|
58
|
-
"@equinor/fusion-framework-react": "9.0.
|
|
53
|
+
"@equinor/fusion-framework": "8.1.1",
|
|
54
|
+
"@equinor/fusion-framework-app": "13.1.1",
|
|
55
|
+
"@equinor/fusion-framework-cli": "15.3.1",
|
|
56
|
+
"@equinor/fusion-framework-module": "6.1.4",
|
|
57
|
+
"@equinor/fusion-framework-module-app": "8.1.1",
|
|
58
|
+
"@equinor/fusion-framework-module-feature-flag": "2.1.1",
|
|
59
|
+
"@equinor/fusion-framework-module-navigation": "7.0.10",
|
|
60
|
+
"@equinor/fusion-framework-module-telemetry": "7.1.1",
|
|
61
|
+
"@equinor/fusion-framework-react": "9.0.1",
|
|
62
|
+
"@equinor/fusion-framework-react-module": "4.0.4",
|
|
63
|
+
"@equinor/fusion-imports": "2.0.4"
|
|
59
64
|
},
|
|
60
65
|
"devDependencies": {
|
|
61
66
|
"@types/react": "^19.2.7",
|
|
@@ -68,8 +73,7 @@
|
|
|
68
73
|
"typescript": "^7.0.2",
|
|
69
74
|
"vite": "^8.0.0",
|
|
70
75
|
"vitest": "^4.1.10",
|
|
71
|
-
"vitest-browser-react": "^2.2.0"
|
|
72
|
-
"@equinor/fusion-framework-module-feature-flag": "2.1.0-next.1"
|
|
76
|
+
"vitest-browser-react": "^2.2.0"
|
|
73
77
|
},
|
|
74
78
|
"peerDependencies": {
|
|
75
79
|
"@types/react": "^18.0.0 || ^19.0.0",
|
|
@@ -80,13 +84,7 @@
|
|
|
80
84
|
"rxjs": "^7.0.0",
|
|
81
85
|
"vite": "^8.0.0",
|
|
82
86
|
"vitest": "^4.0.0",
|
|
83
|
-
"vitest-browser-react": "^2.2.0"
|
|
84
|
-
"@equinor/fusion-framework-module-feature-flag": "2.1.0-next.1"
|
|
85
|
-
},
|
|
86
|
-
"peerDependenciesMeta": {
|
|
87
|
-
"@equinor/fusion-framework-module-feature-flag": {
|
|
88
|
-
"optional": true
|
|
89
|
-
}
|
|
87
|
+
"vitest-browser-react": "^2.2.0"
|
|
90
88
|
},
|
|
91
89
|
"scripts": {
|
|
92
90
|
"build": "tsc -b",
|
package/CHANGELOG.md
DELETED
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
# @equinor/fusion-framework-vitest-plugin-react-app
|
|
2
|
-
|
|
3
|
-
## 1.0.0-next.6
|
|
4
|
-
|
|
5
|
-
### Patch Changes
|
|
6
|
-
|
|
7
|
-
- Updated dependencies [09a9bcc]
|
|
8
|
-
- Updated dependencies [09a9bcc]
|
|
9
|
-
- Updated dependencies [09a9bcc]
|
|
10
|
-
- @equinor/fusion-framework-cli@15.3.0-next.1
|
|
11
|
-
- @equinor/fusion-framework-module-feature-flag@2.1.0-next.1
|
|
12
|
-
- @equinor/fusion-imports@2.0.3-next.1
|
|
13
|
-
- @equinor/fusion-framework-app@13.0.3-next.1
|
|
14
|
-
- @equinor/fusion-framework@8.1.0-next.2
|
|
15
|
-
|
|
16
|
-
## 1.0.0-next.5
|
|
17
|
-
|
|
18
|
-
### Minor Changes
|
|
19
|
-
|
|
20
|
-
- 1813f8a: `resolveFusion` (and both the `/test` fixtures and `testApp`) now enable the feature-flag
|
|
21
|
-
mock by default, with no flags enabled, so `useFeature` needs no `localStorage` or URL
|
|
22
|
-
seeding in tests.
|
|
23
|
-
|
|
24
|
-
`@equinor/fusion-framework-module-feature-flag` is an optional peer dependency: the mock is
|
|
25
|
-
only wired up when the package is actually installed, so apps that don't use feature flags
|
|
26
|
-
aren't forced to add it. Install it to get the default mock; call `enableFeatureFlagMock`
|
|
27
|
-
again inside `configureFusion` to seed specific flags.
|
|
28
|
-
|
|
29
|
-
### Patch Changes
|
|
30
|
-
|
|
31
|
-
- 1813f8a: Exclude `.d.ts` files from the default `server.warmup.clientFiles` and `optimizeDeps.entries`
|
|
32
|
-
globs in `defineProject`. Previously, an app shipping a CJS-style declaration file (for example
|
|
33
|
-
one using `export =`) failed the Vite warmup scan, since it was loaded as ESM.
|
|
34
|
-
- 1813f8a: Revert the mocked framework's default navigation history from browser history back to in-memory
|
|
35
|
-
history. Browser history leaked URL/history state between tests; `configureFusion`/`enableNavigation`
|
|
36
|
-
can still opt back into browser history for a test that specifically needs it.
|
|
37
|
-
- Updated dependencies [c8008e3]
|
|
38
|
-
- @equinor/fusion-framework-app@13.0.3-next.0
|
|
39
|
-
- @equinor/fusion-framework-cli@15.2.11-next.0
|
|
40
|
-
- @equinor/fusion-framework-module-app@8.0.6-next.0
|
|
41
|
-
- @equinor/fusion-framework-module-navigation@7.0.9-next.0
|
|
42
|
-
- @equinor/fusion-framework-react@9.0.0-next.0
|
|
43
|
-
- @equinor/fusion-framework-module-feature-flag@2.1.0-next.0
|
|
44
|
-
|
|
45
|
-
## 1.0.0-next.4
|
|
46
|
-
|
|
47
|
-
### Major Changes
|
|
48
|
-
|
|
49
|
-
- b3d46e0: Rename the `testApp`/`test` fixtures for extending the mocked application and parent framework
|
|
50
|
-
configuration: `configure` is now `configureApp`, the new `configureFramework` fixture
|
|
51
|
-
introduced alongside it is now `configureFusion`, and `env` is now `appEnv`.
|
|
52
|
-
|
|
53
|
-
```diff
|
|
54
|
-
-const test = testApp.extend('configure', { injected: true }, () => ...);
|
|
55
|
-
+const test = testApp.extend('configureApp', { injected: true }, () => ...);
|
|
56
|
-
|
|
57
|
-
-test.override('fusion', async ({ env }) => ...);
|
|
58
|
-
+test.override('fusion', async ({ appEnv }) => ...);
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
`configureFusion` composes with the base parent-framework mock (app manifest and navigation) the same way `configureApp` composes with the base app-module mock — see [Advanced usage](docs/advanced.md#extend-the-parent-framework-mock-with-configurefusion) for extending framework-scope modules such as feature flags, service discovery, or navigation history.
|
|
62
|
-
|
|
63
|
-
Also adds `mergeEnvConfig`, a new utility exported from the `/test` entry point for overriding one endpoint's URL (or an `environment` value) on `appEnv` without dropping the rest of the app's `AppConfig` — a plain object spread over `AppConfig` copies nothing, since it stores `environment`/`endpoints` behind private fields exposed only through getters. See [Advanced usage](docs/advanced.md#fake-an-endpoint-url-with-mergeenvconfig).
|
|
64
|
-
|
|
65
|
-
```ts
|
|
66
|
-
const test = baseTest.extend("appEnv", ({ appEnv }) =>
|
|
67
|
-
mergeEnvConfig(appEnv, {
|
|
68
|
-
endpoints: { "cpr-api": { url: backendBaseUrl } },
|
|
69
|
-
}),
|
|
70
|
-
);
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
## 0.2.0-next.3
|
|
74
|
-
|
|
75
|
-
### Patch Changes
|
|
76
|
-
|
|
77
|
-
- @equinor/fusion-framework-cli@15.2.8-next.2
|
|
78
|
-
- @equinor/fusion-framework-app@14.0.0-next.1
|
|
79
|
-
- @equinor/fusion-framework@8.1.0-next.1
|
|
80
|
-
|
|
81
|
-
## 0.2.0-next.2
|
|
82
|
-
|
|
83
|
-
### Minor Changes
|
|
84
|
-
|
|
85
|
-
- 7cdd512: `defineProject` now defaults `test.browser.viewport` to `1024x768` instead of Vitest's own
|
|
86
|
-
mobile-sized default, matching the low, fixed resolution most Fusion apps see in production
|
|
87
|
-
through Citrix. Pass `test.browser.viewport` to `defineProject` to use a different size.
|
|
88
|
-
|
|
89
|
-
## 0.2.0-next.1
|
|
90
|
-
|
|
91
|
-
### Patch Changes
|
|
92
|
-
|
|
93
|
-
- @equinor/fusion-framework-cli@15.2.8-next.1
|
|
94
|
-
|
|
95
|
-
## 0.2.0-next.0
|
|
96
|
-
|
|
97
|
-
### Minor Changes
|
|
98
|
-
|
|
99
|
-
- 2836e0b: Add a `/config` entry-point exporting `defineProject`: a drop-in for Vitest's own `defineProject`, pre-wired with `appTestVitePlugin` and the `@vitest/browser-playwright`/`chromium` browser provider, so a consuming app's own `vitest.config.ts` needs no browser-provider boilerplate.
|
|
100
|
-
|
|
101
|
-
```ts
|
|
102
|
-
import { defineProject } from "@equinor/fusion-framework-vitest-plugin-react-app/config";
|
|
103
|
-
import { name, version } from "./package.json" with { type: "json" };
|
|
104
|
-
|
|
105
|
-
export default defineProject({ test: { name: `${name}@${version}` } });
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
`override` is deep-merged onto the default config via Vite's own `mergeConfig` (a plain object), or applied to the default config outright (a function receiving it) — for changes `mergeConfig` can't express, such as swapping `test.browser.provider` for a different `@vitest/browser-*` provider.
|
|
109
|
-
|
|
110
|
-
`@vitest/browser-playwright` and `playwright` are now explicit peer dependencies of the package.
|
|
111
|
-
|
|
112
|
-
Also fixes `appTestVitePlugin`'s `entrypoint` inference: when no `entrypoint` option is given, it now resolves from the Vitest project's own root (via `configResolved`) instead of `process.cwd()`, so each cookbook's `vitest.config.ts` no longer needs to pass `entrypoint` explicitly when run as part of a multi-project Vitest run.
|
|
113
|
-
|
|
114
|
-
- 2836e0b: Add `@equinor/fusion-framework-vitest-plugin-react-app`: Vitest/`vitest-browser-react` helpers for testing a Fusion Framework React application inside a real, mock-backed application module scope — the same `FrameworkProvider` + `ModuleProvider` nesting `renderApp`/`createComponent` wire up in production, backed by `mockFramework` and `mockAppModules` (`@equinor/fusion-framework-app/mock`).
|
|
115
|
-
|
|
116
|
-
```tsx
|
|
117
|
-
import { renderAppHook } from "@equinor/fusion-framework-vitest-plugin-react-app";
|
|
118
|
-
import { useAccessToken } from "@equinor/fusion-framework-react-app/msal";
|
|
119
|
-
|
|
120
|
-
const { result } = await renderAppHook(() =>
|
|
121
|
-
useAccessToken({ scopes: ["User.Read"] }),
|
|
122
|
-
);
|
|
123
|
-
await vi.waitFor(() => expect(result.current.pending).toBe(false));
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
Highlights:
|
|
127
|
-
|
|
128
|
-
- `renderAppHook`/`renderAppComponent` — render a hook or component against the real `event`/`http`/`msal` module pipeline, with only the network boundary faked; the result carries a nested `fusion: { framework, app }` for driving a module directly after the initial render.
|
|
129
|
-
- `testApp` — a `vitest` `test` extended with `env`/`configure`/`app`/`render`/`renderHook` fixtures, for a test file whose cases share one mocked scope.
|
|
130
|
-
- `appTestVitePlugin` — a Vite plugin resolving an application's own manifest, config, and module-configurator (the same pipeline `ffc app build`/`ffc app dev` use) as virtual modules.
|
|
131
|
-
- A `/test` entry-point exporting `test`/`render`, pre-seeded from the resolved manifest/config/configure once `appTestVitePlugin` is registered — no per-test `env`/`configure` wiring.
|
|
132
|
-
|
|
133
|
-
Package documentation provides task-focused guides for setup, configuration, advanced fixtures,
|
|
134
|
-
module mocks, and troubleshooting so npm, GitHub, and retrieval clients use the same canonical
|
|
135
|
-
source as the VuePress site.
|
|
136
|
-
|
|
137
|
-
### Patch Changes
|
|
138
|
-
|
|
139
|
-
- e8aae1f: Internal: publish every package on the `next` pre-release tag so the whole framework can be installed as a coherent set.
|
|
140
|
-
|
|
141
|
-
Packages without their own changes are bumped only to receive a `-next.N` version and the `next` dist-tag on npm. Install with:
|
|
142
|
-
|
|
143
|
-
```bash
|
|
144
|
-
pnpm add @equinor/fusion-framework-react-app@next
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
- 2836e0b: Fix `defineProject` not pre-transforming lazily/code-split-imported source (e.g. route
|
|
148
|
-
components reached only through dynamic `import()`), which could force Vite to reload the
|
|
149
|
-
page mid-test and fail the in-flight test file's import.
|
|
150
|
-
|
|
151
|
-
`defineProject`'s Vite config now sets `server.warmup.clientFiles: ['src/**/*.{ts,tsx}']`, so
|
|
152
|
-
all source under `src/` is transformed up front instead of on first request.
|
|
153
|
-
|
|
154
|
-
- 2836e0b: Document `test.override(...)` for overriding a fixture (`configure`, `fusion`, etc.) within a
|
|
155
|
-
single test file or `describe` block, alongside the existing `test.extend(...)` guide, in the
|
|
156
|
-
package's "Advanced usage" doc (`docs/advanced.md`).
|
|
157
|
-
- 2836e0b: Add a "Migrate an existing app" guide (`docs/migrating-an-existing-app.md`) covering how to
|
|
158
|
-
move a suite from `@testing-library/react`/jsdom/happy-dom onto this package: installing
|
|
159
|
-
Browser Mode, replacing hand-rolled `vi.mock`s of Fusion hooks with each module's `enable*Mock`
|
|
160
|
-
entry point, porting a hand-written mock HTTP server to `createRouterMiddleware`, composing a
|
|
161
|
-
router fixture with a domain-state fixture in one file, and updating renders/assertions to the
|
|
162
|
-
async `vitest-browser-react` API. Linked from the package README and from
|
|
163
|
-
`docs/overview.md` and `testing-choosing-a-layer.md`.
|
|
164
|
-
- 2836e0b: Add a "Why Browser Mode is the default" guide (`docs/why-browser-mode.md`) explaining
|
|
165
|
-
the rationale for defaulting to real Chromium over DOM emulation (the documented React 19 peer
|
|
166
|
-
dependency crash in the previous renderer, plus the framework's real-module testing philosophy),
|
|
167
|
-
the actual performance tradeoff (a real browser is slower, not faster — this was a fidelity
|
|
168
|
-
choice, not a speed optimization), and how to bring your own renderer for a single test file by
|
|
169
|
-
composing `mockFramework`/`mockAppModules`/`FrameworkProvider`/`ModuleProvider` directly with a
|
|
170
|
-
different render function (e.g. `@testing-library/react` on `happy-dom`). Linked from the
|
|
171
|
-
package README and `docs/overview.md`.
|
|
172
|
-
- Updated dependencies [e8aae1f]
|
|
173
|
-
- Updated dependencies [2836e0b]
|
|
174
|
-
- Updated dependencies [2836e0b]
|
|
175
|
-
- Updated dependencies [2836e0b]
|
|
176
|
-
- Updated dependencies [2836e0b]
|
|
177
|
-
- Updated dependencies [2836e0b]
|
|
178
|
-
- Updated dependencies [2836e0b]
|
|
179
|
-
- Updated dependencies [2836e0b]
|
|
180
|
-
- Updated dependencies [2836e0b]
|
|
181
|
-
- Updated dependencies [2836e0b]
|
|
182
|
-
- Updated dependencies [2836e0b]
|
|
183
|
-
- Updated dependencies [2836e0b]
|
|
184
|
-
- Updated dependencies [2836e0b]
|
|
185
|
-
- Updated dependencies [2836e0b]
|
|
186
|
-
- Updated dependencies [2836e0b]
|
|
187
|
-
- Updated dependencies [2836e0b]
|
|
188
|
-
- Updated dependencies [2836e0b]
|
|
189
|
-
- @equinor/fusion-framework@8.1.0-next.0
|
|
190
|
-
- @equinor/fusion-framework-app@14.0.0-next.0
|
|
191
|
-
- @equinor/fusion-framework-cli@15.2.8-next.0
|
|
192
|
-
- @equinor/fusion-framework-module@6.1.3-next.0
|
|
193
|
-
- @equinor/fusion-framework-module-app@8.1.0-next.0
|
|
194
|
-
- @equinor/fusion-framework-react@9.0.0-next.0
|
|
195
|
-
- @equinor/fusion-framework-react-module@4.0.3-next.0
|
|
196
|
-
- @equinor/fusion-imports@2.0.3-next.0
|