@memberjunction/react-test-harness 2.74.0 → 2.76.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 +177 -39
- package/dist/cli/index.js +0 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/component-linter.d.ts +3 -4
- package/dist/lib/component-linter.d.ts.map +1 -1
- package/dist/lib/component-linter.js +692 -201
- package/dist/lib/component-linter.js.map +1 -1
- package/dist/lib/component-runner.d.ts +19 -8
- package/dist/lib/component-runner.d.ts.map +1 -1
- package/dist/lib/component-runner.js +330 -140
- package/dist/lib/component-runner.js.map +1 -1
- package/dist/lib/test-harness.d.ts +3 -12
- package/dist/lib/test-harness.d.ts.map +1 -1
- package/dist/lib/test-harness.js +21 -66
- package/dist/lib/test-harness.js.map +1 -1
- package/package.json +3 -3
|
@@ -15,8 +15,8 @@ class ComponentRunner {
|
|
|
15
15
|
/**
|
|
16
16
|
* Lint component code before execution
|
|
17
17
|
*/
|
|
18
|
-
async lintComponent(componentCode, componentName,
|
|
19
|
-
const lintResult = await component_linter_1.ComponentLinter.lintComponent(componentCode,
|
|
18
|
+
async lintComponent(componentCode, componentName, componentSpec) {
|
|
19
|
+
const lintResult = await component_linter_1.ComponentLinter.lintComponent(componentCode, componentName, componentSpec);
|
|
20
20
|
const violations = lintResult.violations.map(v => v.message);
|
|
21
21
|
const hasErrors = lintResult.violations.some(v => v.severity === 'error');
|
|
22
22
|
return {
|
|
@@ -47,6 +47,12 @@ class ComponentRunner {
|
|
|
47
47
|
const renderSuccess = await this.waitForRender(page, options, errors);
|
|
48
48
|
// Get render count
|
|
49
49
|
renderCount = await this.getRenderCount(page);
|
|
50
|
+
// Collect runtime errors
|
|
51
|
+
const runtimeErrors = await this.collectRuntimeErrors(page);
|
|
52
|
+
errors.push(...runtimeErrors);
|
|
53
|
+
// Perform deep render validation
|
|
54
|
+
const deepRenderErrors = await this.validateDeepRender(page);
|
|
55
|
+
errors.push(...deepRenderErrors);
|
|
50
56
|
// Get the rendered HTML
|
|
51
57
|
const html = await this.browserManager.getContent();
|
|
52
58
|
// Take screenshot if needed
|
|
@@ -84,35 +90,57 @@ class ComponentRunner {
|
|
|
84
90
|
createHTMLTemplate(options) {
|
|
85
91
|
const propsJson = JSON.stringify(options.props || {});
|
|
86
92
|
const specJson = JSON.stringify(options.componentSpec);
|
|
87
|
-
//
|
|
88
|
-
|
|
89
|
-
.
|
|
93
|
+
// Set configuration if provided
|
|
94
|
+
if (options.libraryConfiguration) {
|
|
95
|
+
react_runtime_1.StandardLibraryManager.setConfiguration(options.libraryConfiguration);
|
|
96
|
+
}
|
|
97
|
+
// Get all enabled libraries from configuration
|
|
98
|
+
const enabledLibraries = react_runtime_1.StandardLibraryManager.getEnabledLibraries();
|
|
99
|
+
// Separate runtime and component libraries
|
|
100
|
+
const runtimeLibraries = enabledLibraries.filter((lib) => lib.category === 'runtime');
|
|
101
|
+
const componentLibraries = enabledLibraries.filter((lib) => lib.category !== 'runtime');
|
|
102
|
+
// Generate script tags for runtime libraries
|
|
103
|
+
const runtimeScripts = runtimeLibraries
|
|
104
|
+
.map((lib) => ` <script crossorigin src="${lib.cdnUrl}"></script>`)
|
|
90
105
|
.join('\n');
|
|
91
|
-
// Generate script tags for
|
|
92
|
-
const
|
|
93
|
-
.map(
|
|
106
|
+
// Generate script tags for component libraries
|
|
107
|
+
const componentScripts = componentLibraries
|
|
108
|
+
.map((lib) => ` <script src="${lib.cdnUrl}"></script>`)
|
|
94
109
|
.join('\n');
|
|
95
110
|
// Generate CSS links
|
|
96
|
-
const cssLinks =
|
|
97
|
-
.
|
|
111
|
+
const cssLinks = enabledLibraries
|
|
112
|
+
.filter((lib) => lib.cdnCssUrl)
|
|
113
|
+
.map((lib) => ` <link rel="stylesheet" href="${lib.cdnCssUrl}">`)
|
|
98
114
|
.join('\n');
|
|
115
|
+
// Include the ComponentCompiler class definition
|
|
116
|
+
const componentCompilerCode = this.getComponentCompilerCode();
|
|
99
117
|
return `
|
|
100
118
|
<!DOCTYPE html>
|
|
101
119
|
<html>
|
|
102
120
|
<head>
|
|
103
121
|
<meta charset="utf-8">
|
|
104
122
|
<title>React Component Test</title>
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
<script src="${react_runtime_1.STANDARD_LIBRARY_URLS.BABEL}"></script>
|
|
108
|
-
${coreLibraryScripts}
|
|
109
|
-
${uiLibraryScripts}
|
|
123
|
+
${runtimeScripts}
|
|
124
|
+
${componentScripts}
|
|
110
125
|
${cssLinks}
|
|
111
126
|
<style>
|
|
112
127
|
body { margin: 0; padding: 20px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; }
|
|
113
128
|
#root { min-height: 100vh; }
|
|
114
129
|
</style>
|
|
115
130
|
<script>
|
|
131
|
+
// Initialize error tracking
|
|
132
|
+
window.__testHarnessRuntimeErrors = [];
|
|
133
|
+
|
|
134
|
+
// Global error handler
|
|
135
|
+
window.addEventListener('error', (event) => {
|
|
136
|
+
console.error('Runtime error:', event.error);
|
|
137
|
+
window.__testHarnessRuntimeErrors.push({
|
|
138
|
+
message: event.error.message,
|
|
139
|
+
stack: event.error.stack,
|
|
140
|
+
type: 'runtime'
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
|
|
116
144
|
// Render tracking injection
|
|
117
145
|
(function() {
|
|
118
146
|
let renderCounter = 0;
|
|
@@ -149,114 +177,31 @@ ${cssLinks}
|
|
|
149
177
|
<script type="text/babel">
|
|
150
178
|
${options.setupCode || ''}
|
|
151
179
|
|
|
152
|
-
// Create runtime context
|
|
180
|
+
// Create runtime context with dynamic libraries
|
|
181
|
+
const componentLibraries = ${JSON.stringify(componentLibraries.map((lib) => ({
|
|
182
|
+
globalVariable: lib.globalVariable,
|
|
183
|
+
displayName: lib.displayName
|
|
184
|
+
})))};
|
|
185
|
+
|
|
186
|
+
const libraries = {};
|
|
187
|
+
componentLibraries.forEach(lib => {
|
|
188
|
+
if (window[lib.globalVariable]) {
|
|
189
|
+
libraries[lib.globalVariable] = window[lib.globalVariable];
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
|
|
153
193
|
const runtimeContext = {
|
|
154
194
|
React: React,
|
|
155
195
|
ReactDOM: ReactDOM,
|
|
156
|
-
libraries:
|
|
157
|
-
_: window._,
|
|
158
|
-
d3: window.d3,
|
|
159
|
-
Chart: window.Chart,
|
|
160
|
-
dayjs: window.dayjs,
|
|
161
|
-
antd: window.antd,
|
|
162
|
-
ReactBootstrap: window.ReactBootstrap
|
|
163
|
-
}
|
|
196
|
+
libraries: libraries
|
|
164
197
|
};
|
|
165
198
|
|
|
166
|
-
//
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
async compile(options) {
|
|
173
|
-
const componentName = options.componentName;
|
|
174
|
-
const componentCode = options.componentCode;
|
|
175
|
-
|
|
176
|
-
try {
|
|
177
|
-
// Transform JSX to JS using Babel
|
|
178
|
-
const transformed = Babel.transform(componentCode, {
|
|
179
|
-
presets: ['react'],
|
|
180
|
-
filename: componentName + '.jsx'
|
|
181
|
-
});
|
|
182
|
-
|
|
183
|
-
// Create component factory
|
|
184
|
-
const createComponent = new Function(
|
|
185
|
-
'React', 'ReactDOM', 'useState', 'useEffect', 'useCallback',
|
|
186
|
-
'createStateUpdater', 'libraries', 'styles', 'console',
|
|
187
|
-
\`
|
|
188
|
-
// Make libraries available in the component scope
|
|
189
|
-
const _ = libraries._;
|
|
190
|
-
const d3 = libraries.d3;
|
|
191
|
-
const Chart = libraries.Chart;
|
|
192
|
-
const dayjs = libraries.dayjs;
|
|
193
|
-
const antd = libraries.antd;
|
|
194
|
-
const ReactBootstrap = libraries.ReactBootstrap;
|
|
195
|
-
|
|
196
|
-
\${transformed.code}
|
|
197
|
-
return {
|
|
198
|
-
component: \${componentName},
|
|
199
|
-
print: function() { window.print(); },
|
|
200
|
-
refresh: function(data) { }
|
|
201
|
-
};
|
|
202
|
-
\`
|
|
203
|
-
);
|
|
204
|
-
|
|
205
|
-
const componentFactory = (context, styles = {}) => {
|
|
206
|
-
const { React, ReactDOM, libraries = {} } = context;
|
|
207
|
-
const createStateUpdater = (statePath, parentStateUpdater) => {
|
|
208
|
-
return (componentStateUpdate) => {
|
|
209
|
-
if (!statePath) {
|
|
210
|
-
parentStateUpdater(componentStateUpdate);
|
|
211
|
-
} else {
|
|
212
|
-
const pathParts = statePath.split('.');
|
|
213
|
-
const componentKey = pathParts[pathParts.length - 1];
|
|
214
|
-
parentStateUpdater({ [componentKey]: componentStateUpdate });
|
|
215
|
-
}
|
|
216
|
-
};
|
|
217
|
-
};
|
|
218
|
-
|
|
219
|
-
return createComponent(
|
|
220
|
-
React,
|
|
221
|
-
ReactDOM,
|
|
222
|
-
React.useState,
|
|
223
|
-
React.useEffect,
|
|
224
|
-
React.useCallback,
|
|
225
|
-
createStateUpdater,
|
|
226
|
-
libraries,
|
|
227
|
-
styles,
|
|
228
|
-
console
|
|
229
|
-
);
|
|
230
|
-
};
|
|
231
|
-
|
|
232
|
-
return {
|
|
233
|
-
success: true,
|
|
234
|
-
component: {
|
|
235
|
-
component: componentFactory,
|
|
236
|
-
id: componentName + '_' + Date.now(),
|
|
237
|
-
name: componentName,
|
|
238
|
-
compiledAt: new Date(),
|
|
239
|
-
warnings: []
|
|
240
|
-
},
|
|
241
|
-
duration: 0
|
|
242
|
-
};
|
|
243
|
-
} catch (error) {
|
|
244
|
-
return {
|
|
245
|
-
success: false,
|
|
246
|
-
error: {
|
|
247
|
-
message: error.message,
|
|
248
|
-
componentName: componentName,
|
|
249
|
-
phase: 'compilation'
|
|
250
|
-
},
|
|
251
|
-
duration: 0
|
|
252
|
-
};
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
setBabelInstance(babel) {
|
|
257
|
-
// Already have access to Babel global
|
|
258
|
-
}
|
|
259
|
-
}
|
|
199
|
+
// Import the ComponentCompiler implementation
|
|
200
|
+
${componentCompilerCode}
|
|
201
|
+
|
|
202
|
+
// Create component compiler instance
|
|
203
|
+
const compiler = new ComponentCompiler();
|
|
204
|
+
compiler.setBabelInstance(Babel);
|
|
260
205
|
|
|
261
206
|
// Create component registry
|
|
262
207
|
class SimpleRegistry {
|
|
@@ -287,8 +232,7 @@ ${cssLinks}
|
|
|
287
232
|
}
|
|
288
233
|
}
|
|
289
234
|
|
|
290
|
-
// Create
|
|
291
|
-
const compiler = new SimpleCompiler();
|
|
235
|
+
// Create registry instance
|
|
292
236
|
const registry = new SimpleRegistry();
|
|
293
237
|
|
|
294
238
|
// Create hierarchy registrar
|
|
@@ -307,25 +251,25 @@ ${cssLinks}
|
|
|
307
251
|
// Register components recursively
|
|
308
252
|
const registerSpec = async (spec) => {
|
|
309
253
|
// Register children first
|
|
310
|
-
const children = spec.
|
|
254
|
+
const children = spec.dependencies || [];
|
|
311
255
|
for (const child of children) {
|
|
312
256
|
await registerSpec(child);
|
|
313
257
|
}
|
|
314
258
|
|
|
315
259
|
// Register this component
|
|
316
|
-
if (spec.
|
|
260
|
+
if (spec.code) {
|
|
317
261
|
const result = await this.compiler.compile({
|
|
318
|
-
componentName: spec.
|
|
319
|
-
componentCode: spec.
|
|
262
|
+
componentName: spec.name,
|
|
263
|
+
componentCode: spec.code
|
|
320
264
|
});
|
|
321
265
|
|
|
322
266
|
if (result.success) {
|
|
323
267
|
const factory = result.component.component(this.runtimeContext, {});
|
|
324
|
-
this.registry.register(spec.
|
|
325
|
-
registeredComponents.push(spec.
|
|
268
|
+
this.registry.register(spec.name, factory.component);
|
|
269
|
+
registeredComponents.push(spec.name);
|
|
326
270
|
} else {
|
|
327
271
|
errors.push({
|
|
328
|
-
componentName: spec.
|
|
272
|
+
componentName: spec.name,
|
|
329
273
|
error: result.error.message,
|
|
330
274
|
phase: 'compilation'
|
|
331
275
|
});
|
|
@@ -466,6 +410,38 @@ ${cssLinks}
|
|
|
466
410
|
overflow: 'auto'
|
|
467
411
|
});
|
|
468
412
|
|
|
413
|
+
// React Error Boundary component
|
|
414
|
+
const ErrorBoundary = class extends React.Component {
|
|
415
|
+
constructor(props) {
|
|
416
|
+
super(props);
|
|
417
|
+
this.state = { hasError: false, error: null };
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
static getDerivedStateFromError(error) {
|
|
421
|
+
return { hasError: true, error };
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
componentDidCatch(error, errorInfo) {
|
|
425
|
+
console.error('React Error Boundary caught:', error, errorInfo);
|
|
426
|
+
window.__testHarnessRuntimeErrors = window.__testHarnessRuntimeErrors || [];
|
|
427
|
+
window.__testHarnessRuntimeErrors.push({
|
|
428
|
+
message: error.message,
|
|
429
|
+
stack: error.stack,
|
|
430
|
+
componentStack: errorInfo.componentStack,
|
|
431
|
+
type: 'react'
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
render() {
|
|
436
|
+
if (this.state.hasError) {
|
|
437
|
+
return React.createElement('div', { style: { color: 'red', padding: '20px' } },
|
|
438
|
+
'Component Error: ' + this.state.error.message
|
|
439
|
+
);
|
|
440
|
+
}
|
|
441
|
+
return this.props.children;
|
|
442
|
+
}
|
|
443
|
+
};
|
|
444
|
+
|
|
469
445
|
// Load component spec and register hierarchy
|
|
470
446
|
const componentSpec = ${specJson};
|
|
471
447
|
const props = ${propsJson};
|
|
@@ -483,24 +459,45 @@ ${cssLinks}
|
|
|
483
459
|
const components = registry.getAll();
|
|
484
460
|
|
|
485
461
|
// Get the root component
|
|
486
|
-
const RootComponent = registry.get(componentSpec.
|
|
462
|
+
const RootComponent = registry.get(componentSpec.name);
|
|
487
463
|
|
|
488
464
|
if (!RootComponent) {
|
|
489
|
-
console.error('Root component not found:', componentSpec.
|
|
465
|
+
console.error('Root component not found:', componentSpec.name);
|
|
490
466
|
return;
|
|
491
467
|
}
|
|
492
468
|
|
|
493
|
-
//
|
|
494
|
-
|
|
495
|
-
...props,
|
|
496
|
-
components: components,
|
|
497
|
-
utilities: BuildUtilities(),
|
|
498
|
-
styles: SetupStyles()
|
|
499
|
-
};
|
|
469
|
+
// Simple in-memory storage for user settings
|
|
470
|
+
let savedUserSettings = {};
|
|
500
471
|
|
|
501
|
-
//
|
|
472
|
+
// Create root for rendering
|
|
502
473
|
const root = ReactDOM.createRoot(document.getElementById('root'));
|
|
503
|
-
|
|
474
|
+
|
|
475
|
+
// Function to render with current settings
|
|
476
|
+
const renderWithSettings = () => {
|
|
477
|
+
const enhancedProps = {
|
|
478
|
+
...props,
|
|
479
|
+
components: components,
|
|
480
|
+
utilities: BuildUtilities(),
|
|
481
|
+
styles: SetupStyles(),
|
|
482
|
+
savedUserSettings: savedUserSettings,
|
|
483
|
+
onSaveUserSettings: (newSettings) => {
|
|
484
|
+
console.log('User settings saved:', newSettings);
|
|
485
|
+
// Update in-memory storage
|
|
486
|
+
savedUserSettings = { ...newSettings };
|
|
487
|
+
// Re-render with new settings
|
|
488
|
+
renderWithSettings();
|
|
489
|
+
}
|
|
490
|
+
};
|
|
491
|
+
|
|
492
|
+
root.render(
|
|
493
|
+
React.createElement(ErrorBoundary, null,
|
|
494
|
+
React.createElement(RootComponent, enhancedProps)
|
|
495
|
+
)
|
|
496
|
+
);
|
|
497
|
+
};
|
|
498
|
+
|
|
499
|
+
// Initial render
|
|
500
|
+
renderWithSettings();
|
|
504
501
|
})();
|
|
505
502
|
</script>
|
|
506
503
|
</body>
|
|
@@ -555,6 +552,7 @@ ${cssLinks}
|
|
|
555
552
|
*/
|
|
556
553
|
async waitForRender(page, options, errors) {
|
|
557
554
|
const timeout = options.timeout || 10000; // 10 seconds default
|
|
555
|
+
const renderWaitTime = options.renderWaitTime || 1000; // Default 1000ms
|
|
558
556
|
try {
|
|
559
557
|
if (options.waitForSelector) {
|
|
560
558
|
await this.browserManager.waitForSelector(options.waitForSelector, { timeout });
|
|
@@ -563,8 +561,21 @@ ${cssLinks}
|
|
|
563
561
|
await this.browserManager.waitForLoadState(options.waitForLoadState);
|
|
564
562
|
}
|
|
565
563
|
else {
|
|
566
|
-
//
|
|
567
|
-
await page.waitForTimeout(
|
|
564
|
+
// Wait for React to finish rendering with configurable time
|
|
565
|
+
await page.waitForTimeout(renderWaitTime);
|
|
566
|
+
// Force React to flush all updates
|
|
567
|
+
await page.evaluate(() => {
|
|
568
|
+
if (window.React && window.React.flushSync) {
|
|
569
|
+
try {
|
|
570
|
+
window.React.flushSync(() => { });
|
|
571
|
+
}
|
|
572
|
+
catch (e) {
|
|
573
|
+
console.error('flushSync error:', e);
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
});
|
|
577
|
+
// Additional small wait after flush to ensure DOM updates
|
|
578
|
+
await page.waitForTimeout(50);
|
|
568
579
|
}
|
|
569
580
|
return true;
|
|
570
581
|
}
|
|
@@ -579,6 +590,66 @@ ${cssLinks}
|
|
|
579
590
|
async getRenderCount(page) {
|
|
580
591
|
return await page.evaluate(() => window.__testHarnessRenderCount || 0);
|
|
581
592
|
}
|
|
593
|
+
/**
|
|
594
|
+
* Collects runtime errors that were caught during component execution
|
|
595
|
+
*/
|
|
596
|
+
async collectRuntimeErrors(page) {
|
|
597
|
+
const runtimeErrors = await page.evaluate(() => {
|
|
598
|
+
return window.__testHarnessRuntimeErrors || [];
|
|
599
|
+
});
|
|
600
|
+
const errors = [];
|
|
601
|
+
runtimeErrors.forEach((error) => {
|
|
602
|
+
errors.push(`${error.type} error: ${error.message}`);
|
|
603
|
+
if (error.componentStack) {
|
|
604
|
+
errors.push(`Component stack: ${error.componentStack}`);
|
|
605
|
+
}
|
|
606
|
+
});
|
|
607
|
+
return errors;
|
|
608
|
+
}
|
|
609
|
+
/**
|
|
610
|
+
* Performs deep render validation to catch errors that might be in the DOM
|
|
611
|
+
*/
|
|
612
|
+
async validateDeepRender(page) {
|
|
613
|
+
const errors = [];
|
|
614
|
+
try {
|
|
615
|
+
// Execute a full render cycle by forcing a state update
|
|
616
|
+
await page.evaluate(() => {
|
|
617
|
+
// Force React to complete all pending updates
|
|
618
|
+
if (window.React && window.React.flushSync) {
|
|
619
|
+
window.React.flushSync(() => { });
|
|
620
|
+
}
|
|
621
|
+
});
|
|
622
|
+
// Check for render errors in the component tree
|
|
623
|
+
const renderErrors = await page.evaluate(() => {
|
|
624
|
+
const errors = [];
|
|
625
|
+
// Walk the DOM and check for error boundaries or error text
|
|
626
|
+
const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT);
|
|
627
|
+
let node;
|
|
628
|
+
while (node = walker.nextNode()) {
|
|
629
|
+
const text = node.textContent || '';
|
|
630
|
+
// Look for common error patterns
|
|
631
|
+
if (text.includes('TypeError:') ||
|
|
632
|
+
text.includes('ReferenceError:') ||
|
|
633
|
+
text.includes('Cannot read properties of undefined') ||
|
|
634
|
+
text.includes('Cannot access property') ||
|
|
635
|
+
text.includes('is not a function') ||
|
|
636
|
+
text.includes('Component Error:')) {
|
|
637
|
+
// Only add if it's not already in our error list
|
|
638
|
+
const errorMsg = text.trim();
|
|
639
|
+
if (errorMsg.length < 500) { // Avoid huge text blocks
|
|
640
|
+
errors.push(`Potential error in rendered content: ${errorMsg}`);
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
return errors;
|
|
645
|
+
});
|
|
646
|
+
errors.push(...renderErrors);
|
|
647
|
+
}
|
|
648
|
+
catch (e) {
|
|
649
|
+
errors.push(`Deep render validation failed: ${e}`);
|
|
650
|
+
}
|
|
651
|
+
return errors;
|
|
652
|
+
}
|
|
582
653
|
/**
|
|
583
654
|
* Determines if the component execution was successful
|
|
584
655
|
*/
|
|
@@ -675,6 +746,125 @@ ${cssLinks}
|
|
|
675
746
|
static getDetailedErrorAnalysis(errors) {
|
|
676
747
|
return react_runtime_1.ComponentErrorAnalyzer.analyzeComponentErrors(errors);
|
|
677
748
|
}
|
|
749
|
+
/**
|
|
750
|
+
* Gets the ComponentCompiler code to inject into the browser
|
|
751
|
+
* This is a simplified version that works in the browser context
|
|
752
|
+
*/
|
|
753
|
+
getComponentCompilerCode() {
|
|
754
|
+
// Return a browser-compatible version of ComponentCompiler
|
|
755
|
+
return `
|
|
756
|
+
class ComponentCompiler {
|
|
757
|
+
constructor() {
|
|
758
|
+
this.cache = new Map();
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
setBabelInstance(babel) {
|
|
762
|
+
this.babelInstance = babel;
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
async compile(options) {
|
|
766
|
+
const { componentName, componentCode } = options;
|
|
767
|
+
|
|
768
|
+
try {
|
|
769
|
+
// Validate inputs
|
|
770
|
+
if (!componentName || !componentCode) {
|
|
771
|
+
throw new Error('componentName and componentCode are required');
|
|
772
|
+
}
|
|
773
|
+
|
|
774
|
+
// Wrap component code
|
|
775
|
+
const wrappedCode = this.wrapComponentCode(componentCode, componentName);
|
|
776
|
+
|
|
777
|
+
// Transform using Babel
|
|
778
|
+
const result = this.babelInstance.transform(wrappedCode, {
|
|
779
|
+
presets: ['react'],
|
|
780
|
+
filename: componentName + '.jsx'
|
|
781
|
+
});
|
|
782
|
+
|
|
783
|
+
// Create factory
|
|
784
|
+
const componentFactory = this.createComponentFactory(result.code, componentName);
|
|
785
|
+
|
|
786
|
+
return {
|
|
787
|
+
success: true,
|
|
788
|
+
component: {
|
|
789
|
+
component: componentFactory,
|
|
790
|
+
id: componentName + '_' + Date.now(),
|
|
791
|
+
name: componentName,
|
|
792
|
+
compiledAt: new Date(),
|
|
793
|
+
warnings: []
|
|
794
|
+
},
|
|
795
|
+
duration: 0
|
|
796
|
+
};
|
|
797
|
+
} catch (error) {
|
|
798
|
+
return {
|
|
799
|
+
success: false,
|
|
800
|
+
error: {
|
|
801
|
+
message: error.message,
|
|
802
|
+
componentName: componentName,
|
|
803
|
+
phase: 'compilation'
|
|
804
|
+
},
|
|
805
|
+
duration: 0
|
|
806
|
+
};
|
|
807
|
+
}
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
wrapComponentCode(componentCode, componentName) {
|
|
811
|
+
// Make component libraries available in scope
|
|
812
|
+
const libraryDeclarations = componentLibraries
|
|
813
|
+
.map(lib => \`const \${lib.globalVariable} = libraries['\${lib.globalVariable}'];\`)
|
|
814
|
+
.join('\\n ');
|
|
815
|
+
|
|
816
|
+
return \`
|
|
817
|
+
function createComponent(
|
|
818
|
+
React, ReactDOM,
|
|
819
|
+
useState, useEffect, useCallback, useMemo, useRef, useContext, useReducer, useLayoutEffect,
|
|
820
|
+
libraries, styles, console
|
|
821
|
+
) {
|
|
822
|
+
\${libraryDeclarations}
|
|
823
|
+
|
|
824
|
+
\${componentCode}
|
|
825
|
+
|
|
826
|
+
if (typeof \${componentName} === 'undefined') {
|
|
827
|
+
throw new Error('Component "\${componentName}" is not defined in the provided code');
|
|
828
|
+
}
|
|
829
|
+
|
|
830
|
+
return {
|
|
831
|
+
component: \${componentName},
|
|
832
|
+
print: function() { window.print(); },
|
|
833
|
+
refresh: function(data) { }
|
|
834
|
+
};
|
|
835
|
+
}
|
|
836
|
+
\`;
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
createComponentFactory(transpiledCode, componentName) {
|
|
840
|
+
const factoryCreator = new Function(
|
|
841
|
+
'React', 'ReactDOM',
|
|
842
|
+
'useState', 'useEffect', 'useCallback', 'useMemo', 'useRef', 'useContext', 'useReducer', 'useLayoutEffect',
|
|
843
|
+
'libraries', 'styles', 'console',
|
|
844
|
+
transpiledCode + '; return createComponent;'
|
|
845
|
+
);
|
|
846
|
+
|
|
847
|
+
return (context, styles = {}) => {
|
|
848
|
+
const { React, ReactDOM, libraries = {} } = context;
|
|
849
|
+
|
|
850
|
+
const createComponentFn = factoryCreator(
|
|
851
|
+
React, ReactDOM,
|
|
852
|
+
React.useState, React.useEffect, React.useCallback, React.useMemo,
|
|
853
|
+
React.useRef, React.useContext, React.useReducer, React.useLayoutEffect,
|
|
854
|
+
libraries, styles, console
|
|
855
|
+
);
|
|
856
|
+
|
|
857
|
+
return createComponentFn(
|
|
858
|
+
React, ReactDOM,
|
|
859
|
+
React.useState, React.useEffect, React.useCallback, React.useMemo,
|
|
860
|
+
React.useRef, React.useContext, React.useReducer, React.useLayoutEffect,
|
|
861
|
+
libraries, styles, console
|
|
862
|
+
);
|
|
863
|
+
};
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
`;
|
|
867
|
+
}
|
|
678
868
|
}
|
|
679
869
|
exports.ComponentRunner = ComponentRunner;
|
|
680
870
|
// Critical warning patterns that should fail tests
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-runner.js","sourceRoot":"","sources":["../../src/lib/component-runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"component-runner.js","sourceRoot":"","sources":["../../src/lib/component-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import { BrowserContextOptions } from './browser-context';
|
|
3
3
|
import { ComponentExecutionOptions, ComponentExecutionResult } from './component-runner';
|
|
4
4
|
import { AssertionHelpers } from './assertion-helpers';
|
|
5
|
-
import { ComponentRootSpec, ComponentChildSpec } from '@memberjunction/interactive-component-types';
|
|
6
5
|
export interface TestHarnessOptions extends BrowserContextOptions {
|
|
7
6
|
debug?: boolean;
|
|
8
7
|
screenshotOnError?: boolean;
|
|
@@ -15,22 +14,14 @@ export declare class ReactTestHarness {
|
|
|
15
14
|
constructor(options?: TestHarnessOptions);
|
|
16
15
|
initialize(): Promise<void>;
|
|
17
16
|
/**
|
|
18
|
-
* Test a
|
|
17
|
+
* Test a component with its full hierarchy of child components
|
|
19
18
|
*/
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Test a single child component
|
|
23
|
-
*/
|
|
24
|
-
testChildComponent(childSpec: ComponentChildSpec, props: Record<string, any>, options: ComponentExecutionOptions): Promise<ComponentExecutionResult>;
|
|
25
|
-
/**
|
|
26
|
-
* Convert Skip child specs to test harness ComponentSpec format
|
|
27
|
-
*/
|
|
28
|
-
private convertSkipChildSpecs;
|
|
19
|
+
testComponent(options: ComponentExecutionOptions): Promise<ComponentExecutionResult>;
|
|
29
20
|
/**
|
|
30
21
|
* Test a component from a file path
|
|
31
22
|
* This is a convenience method for the CLI
|
|
32
23
|
*/
|
|
33
|
-
testComponentFromFile(filePath: string, props: Record<string, any>, options: ComponentExecutionOptions): Promise<ComponentExecutionResult>;
|
|
24
|
+
testComponentFromFile(filePath: string, props: Record<string, any>, options: Omit<ComponentExecutionOptions, 'componentSpec'>): Promise<ComponentExecutionResult>;
|
|
34
25
|
runTest(name: string, testFn: () => Promise<void>): Promise<{
|
|
35
26
|
name: string;
|
|
36
27
|
passed: boolean;
|