@memberjunction/react-test-harness 2.89.0 → 2.90.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 +98 -0
- package/dist/lib/component-runner.d.ts +11 -0
- package/dist/lib/component-runner.d.ts.map +1 -1
- package/dist/lib/component-runner.js +323 -73
- package/dist/lib/component-runner.js.map +1 -1
- package/dist/lib/test-harness.d.ts +31 -0
- package/dist/lib/test-harness.d.ts.map +1 -1
- package/dist/lib/test-harness.js +52 -0
- package/dist/lib/test-harness.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -526,6 +526,104 @@ interface FluentMatcher {
|
|
|
526
526
|
}
|
|
527
527
|
```
|
|
528
528
|
|
|
529
|
+
## Parallel Testing
|
|
530
|
+
|
|
531
|
+
### Important: Test Harness Instance Limitations
|
|
532
|
+
|
|
533
|
+
The ReactTestHarness uses a single browser page instance and is **NOT safe for parallel test execution** on the same instance. This is due to Playwright's internal limitations with `exposeFunction` and potential race conditions when multiple tests try to modify the same page context simultaneously.
|
|
534
|
+
|
|
535
|
+
### Sequential Testing (Single Instance)
|
|
536
|
+
|
|
537
|
+
For sequential test execution, you can safely reuse a single harness instance:
|
|
538
|
+
|
|
539
|
+
```typescript
|
|
540
|
+
const harness = new ReactTestHarness({ headless: true });
|
|
541
|
+
await harness.initialize();
|
|
542
|
+
|
|
543
|
+
// ✅ CORRECT - Sequential testing on same instance
|
|
544
|
+
for (const test of tests) {
|
|
545
|
+
const result = await harness.testComponent(test.code, test.props);
|
|
546
|
+
// Each test runs one after another, no conflicts
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
await harness.close();
|
|
550
|
+
```
|
|
551
|
+
|
|
552
|
+
### Parallel Testing (Multiple Instances)
|
|
553
|
+
|
|
554
|
+
For parallel test execution, you **MUST** create separate ReactTestHarness instances:
|
|
555
|
+
|
|
556
|
+
```typescript
|
|
557
|
+
// ✅ CORRECT - Parallel testing with separate instances
|
|
558
|
+
const results = await Promise.all(tests.map(async (test) => {
|
|
559
|
+
const harness = new ReactTestHarness({ headless: true });
|
|
560
|
+
await harness.initialize();
|
|
561
|
+
|
|
562
|
+
try {
|
|
563
|
+
return await harness.testComponent(test.code, test.props);
|
|
564
|
+
} finally {
|
|
565
|
+
await harness.close(); // Clean up each instance
|
|
566
|
+
}
|
|
567
|
+
}));
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
### Common Mistake to Avoid
|
|
571
|
+
|
|
572
|
+
```typescript
|
|
573
|
+
// ❌ WRONG - DO NOT DO THIS
|
|
574
|
+
const harness = new ReactTestHarness({ headless: true });
|
|
575
|
+
await harness.initialize();
|
|
576
|
+
|
|
577
|
+
// This will cause conflicts and errors!
|
|
578
|
+
const results = await Promise.all(
|
|
579
|
+
tests.map(test => harness.testComponent(test.code, test.props))
|
|
580
|
+
);
|
|
581
|
+
```
|
|
582
|
+
|
|
583
|
+
This approach will fail with errors like:
|
|
584
|
+
- "Function '__mjGetEntityObject' has been already registered"
|
|
585
|
+
- "Cannot read properties of undefined (reading 'addBinding')"
|
|
586
|
+
|
|
587
|
+
### Performance Considerations
|
|
588
|
+
|
|
589
|
+
While creating multiple harness instances has some overhead (each launches its own browser context), the benefits of parallel execution typically outweigh this cost:
|
|
590
|
+
|
|
591
|
+
- **Sequential (1 instance)**: Lower memory usage, but tests run one by one
|
|
592
|
+
- **Parallel (N instances)**: Higher memory usage, but tests complete much faster
|
|
593
|
+
|
|
594
|
+
### Example: Test Runner with Configurable Parallelism
|
|
595
|
+
|
|
596
|
+
```typescript
|
|
597
|
+
class TestRunner {
|
|
598
|
+
async runTests(tests: TestCase[], parallel = false) {
|
|
599
|
+
if (parallel) {
|
|
600
|
+
// Create new instance for each test
|
|
601
|
+
return Promise.all(tests.map(async (test) => {
|
|
602
|
+
const harness = new ReactTestHarness({ headless: true });
|
|
603
|
+
await harness.initialize();
|
|
604
|
+
try {
|
|
605
|
+
return await harness.testComponent(test.code, test.props);
|
|
606
|
+
} finally {
|
|
607
|
+
await harness.close();
|
|
608
|
+
}
|
|
609
|
+
}));
|
|
610
|
+
} else {
|
|
611
|
+
// Reuse single instance for all tests
|
|
612
|
+
const harness = new ReactTestHarness({ headless: true });
|
|
613
|
+
await harness.initialize();
|
|
614
|
+
|
|
615
|
+
const results = [];
|
|
616
|
+
for (const test of tests) {
|
|
617
|
+
results.push(await harness.testComponent(test.code, test.props));
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
await harness.close();
|
|
621
|
+
return results;
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
```
|
|
626
|
+
|
|
529
627
|
## Usage Examples for TypeScript Projects
|
|
530
628
|
|
|
531
629
|
### Creating a Reusable Test Utility
|
|
@@ -10,11 +10,13 @@ export interface ComponentExecutionOptions {
|
|
|
10
10
|
setupCode?: string;
|
|
11
11
|
timeout?: number;
|
|
12
12
|
renderWaitTime?: number;
|
|
13
|
+
asyncErrorWaitTime?: number;
|
|
13
14
|
waitForSelector?: string;
|
|
14
15
|
waitForLoadState?: 'load' | 'domcontentloaded' | 'networkidle';
|
|
15
16
|
contextUser: UserInfo;
|
|
16
17
|
libraryConfiguration?: LibraryConfiguration;
|
|
17
18
|
isRootComponent?: boolean;
|
|
19
|
+
debug?: boolean;
|
|
18
20
|
}
|
|
19
21
|
export interface ComponentExecutionResult {
|
|
20
22
|
success: boolean;
|
|
@@ -49,6 +51,10 @@ export declare class ComponentRunner {
|
|
|
49
51
|
hasErrors: boolean;
|
|
50
52
|
}>;
|
|
51
53
|
executeComponent(options: ComponentExecutionOptions): Promise<ComponentExecutionResult>;
|
|
54
|
+
/**
|
|
55
|
+
* Dumps debug information to console for easier troubleshooting
|
|
56
|
+
*/
|
|
57
|
+
private dumpDebugInfo;
|
|
52
58
|
private createHTMLTemplate;
|
|
53
59
|
/**
|
|
54
60
|
* Checks if a console message is a warning
|
|
@@ -82,6 +88,11 @@ export declare class ComponentRunner {
|
|
|
82
88
|
* Collects runtime errors that were caught during component execution
|
|
83
89
|
*/
|
|
84
90
|
private collectRuntimeErrors;
|
|
91
|
+
/**
|
|
92
|
+
* Captures async errors by waiting for asynchronous operations to complete
|
|
93
|
+
* This catches errors from setTimeout, setInterval, Promises, and async effects
|
|
94
|
+
*/
|
|
95
|
+
private captureAsyncErrors;
|
|
85
96
|
/**
|
|
86
97
|
* Performs deep render validation to catch errors that might be in the DOM
|
|
87
98
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-runner.d.ts","sourceRoot":"","sources":["../../src/lib/component-runner.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAML,oBAAoB,EACrB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAAK,EAAiC,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAmB,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAE5E,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,aAAa,CAAC;IAC/D,WAAW,EAAE,QAAQ,CAAC;IACtB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,eAAe,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"component-runner.d.ts","sourceRoot":"","sources":["../../src/lib/component-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,14 +31,23 @@ class ComponentRunner {
|
|
|
31
31
|
const criticalWarnings = [];
|
|
32
32
|
const consoleLogs = [];
|
|
33
33
|
let renderCount = 0;
|
|
34
|
+
// Default debug to true
|
|
35
|
+
const debug = options.debug !== false;
|
|
36
|
+
if (debug) {
|
|
37
|
+
console.log('\n🔍 === Component Execution Debug Mode ===');
|
|
38
|
+
console.log('Component:', options.componentSpec.name);
|
|
39
|
+
console.log('Props:', JSON.stringify(options.props || {}, null, 2));
|
|
40
|
+
}
|
|
34
41
|
try {
|
|
35
42
|
const page = await this.browserManager.getPage();
|
|
36
|
-
//
|
|
43
|
+
// Clear the page before each test for isolation
|
|
44
|
+
await page.goto('about:blank');
|
|
45
|
+
// Expose MJ utilities to the page
|
|
46
|
+
await this.exposeMJUtilities(page, options.contextUser);
|
|
47
|
+
// Then set up monitoring
|
|
37
48
|
this.setupConsoleLogging(page, consoleLogs, warnings, criticalWarnings);
|
|
38
49
|
this.setupErrorHandling(page, errors);
|
|
39
50
|
await this.injectRenderTracking(page);
|
|
40
|
-
// Expose MJ utilities to the page
|
|
41
|
-
await this.exposeMJUtilities(page, options.contextUser);
|
|
42
51
|
// Create and load the component
|
|
43
52
|
const htmlContent = this.createHTMLTemplate(options);
|
|
44
53
|
await page.goto(`data:text/html;charset=utf-8,${encodeURIComponent(htmlContent)}`);
|
|
@@ -49,18 +58,23 @@ class ComponentRunner {
|
|
|
49
58
|
// Collect runtime errors
|
|
50
59
|
const runtimeErrors = await this.collectRuntimeErrors(page);
|
|
51
60
|
errors.push(...runtimeErrors);
|
|
61
|
+
// Capture async errors only if wait time is specified
|
|
62
|
+
if (options.asyncErrorWaitTime && options.asyncErrorWaitTime > 0) {
|
|
63
|
+
const asyncErrors = await this.captureAsyncErrors(page, options.asyncErrorWaitTime);
|
|
64
|
+
errors.push(...asyncErrors);
|
|
65
|
+
}
|
|
52
66
|
// Perform deep render validation
|
|
53
67
|
const deepRenderErrors = await this.validateDeepRender(page);
|
|
54
68
|
errors.push(...deepRenderErrors);
|
|
55
69
|
// Get the rendered HTML
|
|
56
|
-
const html = await
|
|
70
|
+
const html = await page.content();
|
|
57
71
|
// Take screenshot if needed
|
|
58
|
-
const screenshot = await
|
|
72
|
+
const screenshot = await page.screenshot();
|
|
59
73
|
// Determine success and collect any additional errors
|
|
60
74
|
const { success, additionalErrors } = this.determineSuccess(errors, criticalWarnings, renderCount, !renderSuccess);
|
|
61
75
|
// Add any additional errors
|
|
62
76
|
errors.push(...additionalErrors);
|
|
63
|
-
|
|
77
|
+
const result = {
|
|
64
78
|
success,
|
|
65
79
|
html,
|
|
66
80
|
errors: errors.map(e => {
|
|
@@ -81,10 +95,14 @@ class ComponentRunner {
|
|
|
81
95
|
executionTime: Date.now() - startTime,
|
|
82
96
|
renderCount
|
|
83
97
|
};
|
|
98
|
+
if (debug) {
|
|
99
|
+
this.dumpDebugInfo(result);
|
|
100
|
+
}
|
|
101
|
+
return result;
|
|
84
102
|
}
|
|
85
103
|
catch (error) {
|
|
86
104
|
errors.push(error instanceof Error ? error.message : String(error));
|
|
87
|
-
|
|
105
|
+
const result = {
|
|
88
106
|
success: false,
|
|
89
107
|
html: '',
|
|
90
108
|
errors: errors.map(e => {
|
|
@@ -104,8 +122,56 @@ class ComponentRunner {
|
|
|
104
122
|
executionTime: Date.now() - startTime,
|
|
105
123
|
renderCount
|
|
106
124
|
};
|
|
125
|
+
if (debug) {
|
|
126
|
+
console.log('\n❌ Component execution failed with error:', error);
|
|
127
|
+
this.dumpDebugInfo(result);
|
|
128
|
+
}
|
|
129
|
+
return result;
|
|
107
130
|
}
|
|
108
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Dumps debug information to console for easier troubleshooting
|
|
134
|
+
*/
|
|
135
|
+
dumpDebugInfo(result) {
|
|
136
|
+
console.log('\n📊 === Component Execution Results ===');
|
|
137
|
+
console.log('Success:', result.success ? '✅' : '❌');
|
|
138
|
+
console.log('Execution time:', result.executionTime + 'ms');
|
|
139
|
+
console.log('Render count:', result.renderCount);
|
|
140
|
+
if (result.console && result.console.length > 0) {
|
|
141
|
+
console.log('\n📝 Console Output:');
|
|
142
|
+
result.console.forEach(log => {
|
|
143
|
+
const icon = log.type === 'error' ? '❌' :
|
|
144
|
+
log.type === 'warning' ? '⚠️' :
|
|
145
|
+
log.type === 'log' ? '📝' : '💬';
|
|
146
|
+
console.log(` ${icon} [${log.type}] ${log.text}`);
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
if (result.errors && result.errors.length > 0) {
|
|
150
|
+
console.log('\n❌ Errors:', result.errors.length);
|
|
151
|
+
result.errors.forEach((err, i) => {
|
|
152
|
+
const message = typeof err === 'string' ? err : err.message;
|
|
153
|
+
console.log(` ${i + 1}. ${message}`);
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
if (result.warnings && result.warnings.length > 0) {
|
|
157
|
+
console.log('\n⚠️ Warnings:', result.warnings.length);
|
|
158
|
+
result.warnings.forEach((warn, i) => {
|
|
159
|
+
const message = typeof warn === 'string' ? warn : warn.message;
|
|
160
|
+
console.log(` ${i + 1}. ${message}`);
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
if (result.criticalWarnings && result.criticalWarnings.length > 0) {
|
|
164
|
+
console.log('\n🔴 Critical Warnings:', result.criticalWarnings.length);
|
|
165
|
+
result.criticalWarnings.forEach((warn, i) => {
|
|
166
|
+
console.log(` ${i + 1}. ${warn}`);
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
if (result.html) {
|
|
170
|
+
const htmlPreview = result.html.substring(0, 200);
|
|
171
|
+
console.log('\n📄 HTML Preview:', htmlPreview + (result.html.length > 200 ? '...' : ''));
|
|
172
|
+
}
|
|
173
|
+
console.log('\n========================================\n');
|
|
174
|
+
}
|
|
109
175
|
createHTMLTemplate(options) {
|
|
110
176
|
const propsJson = JSON.stringify(options.props || {});
|
|
111
177
|
const specJson = JSON.stringify(options.componentSpec);
|
|
@@ -143,12 +209,43 @@ ${runtimeScripts}
|
|
|
143
209
|
${componentScripts}
|
|
144
210
|
${cssLinks}
|
|
145
211
|
<style>
|
|
146
|
-
body {
|
|
147
|
-
|
|
212
|
+
body {
|
|
213
|
+
margin: 0;
|
|
214
|
+
padding: 20px;
|
|
215
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
216
|
+
background-color: #f0f0f0; /* Light gray background to see contrast */
|
|
217
|
+
}
|
|
218
|
+
#root {
|
|
219
|
+
min-height: 100vh;
|
|
220
|
+
background-color: white;
|
|
221
|
+
border: 2px solid #007bff;
|
|
222
|
+
padding: 20px;
|
|
223
|
+
box-shadow: 0 0 10px rgba(0,0,0,0.1);
|
|
224
|
+
}
|
|
225
|
+
.test-harness-header {
|
|
226
|
+
background-color: #28a745;
|
|
227
|
+
color: white;
|
|
228
|
+
padding: 10px;
|
|
229
|
+
margin-bottom: 20px;
|
|
230
|
+
border-radius: 5px;
|
|
231
|
+
font-weight: bold;
|
|
232
|
+
text-align: center;
|
|
233
|
+
}
|
|
148
234
|
</style>
|
|
149
235
|
<script>
|
|
150
|
-
// Initialize error tracking
|
|
236
|
+
// Initialize error and console tracking
|
|
151
237
|
window.__testHarnessRuntimeErrors = [];
|
|
238
|
+
window.__testHarnessConsoleLogs = [];
|
|
239
|
+
|
|
240
|
+
// Track console output for async error detection
|
|
241
|
+
const originalConsoleError = console.error;
|
|
242
|
+
console.error = function(...args) {
|
|
243
|
+
window.__testHarnessConsoleLogs.push({
|
|
244
|
+
type: 'error',
|
|
245
|
+
text: args.map(arg => typeof arg === 'object' ? JSON.stringify(arg) : String(arg)).join(' ')
|
|
246
|
+
});
|
|
247
|
+
originalConsoleError.apply(console, args);
|
|
248
|
+
};
|
|
152
249
|
|
|
153
250
|
// Global error handler
|
|
154
251
|
window.addEventListener('error', (event) => {
|
|
@@ -160,6 +257,18 @@ ${cssLinks}
|
|
|
160
257
|
});
|
|
161
258
|
});
|
|
162
259
|
|
|
260
|
+
// Unhandled promise rejection handler
|
|
261
|
+
window.addEventListener('unhandledrejection', (event) => {
|
|
262
|
+
console.error('Unhandled promise rejection:', event.reason);
|
|
263
|
+
window.__testHarnessRuntimeErrors.push({
|
|
264
|
+
message: 'Unhandled Promise Rejection: ' + (event.reason?.message || event.reason || 'Unknown reason'),
|
|
265
|
+
stack: event.reason?.stack || 'No stack trace available',
|
|
266
|
+
type: 'promise-rejection'
|
|
267
|
+
});
|
|
268
|
+
// Prevent the default handling (which would log to console)
|
|
269
|
+
event.preventDefault();
|
|
270
|
+
});
|
|
271
|
+
|
|
163
272
|
// Render tracking injection
|
|
164
273
|
(function() {
|
|
165
274
|
let renderCounter = 0;
|
|
@@ -192,8 +301,17 @@ ${cssLinks}
|
|
|
192
301
|
</script>
|
|
193
302
|
</head>
|
|
194
303
|
<body>
|
|
195
|
-
<div
|
|
304
|
+
<div class="test-harness-header">
|
|
305
|
+
🧪 React Test Harness - Component Loaded Successfully
|
|
306
|
+
</div>
|
|
307
|
+
<div id="root" data-testid="react-root">
|
|
308
|
+
<!-- Component will render here -->
|
|
309
|
+
</div>
|
|
196
310
|
<script type="text/babel">
|
|
311
|
+
// Immediate debug message
|
|
312
|
+
console.log('🚀 Test harness script started executing');
|
|
313
|
+
document.getElementById('root').innerHTML = '<div style="background: lime; padding: 20px; color: black; font-size: 18px;">📝 Script is running...</div>';
|
|
314
|
+
|
|
197
315
|
${options.setupCode || ''}
|
|
198
316
|
|
|
199
317
|
// Create runtime context with dynamic libraries
|
|
@@ -466,11 +584,40 @@ ${cssLinks}
|
|
|
466
584
|
const props = ${propsJson};
|
|
467
585
|
|
|
468
586
|
(async () => {
|
|
587
|
+
console.log('📦 Starting component initialization...');
|
|
588
|
+
console.log('React available:', typeof React !== 'undefined');
|
|
589
|
+
console.log('ReactDOM available:', typeof ReactDOM !== 'undefined');
|
|
590
|
+
console.log('Babel available:', typeof Babel !== 'undefined');
|
|
591
|
+
|
|
592
|
+
// Update the root to show progress
|
|
593
|
+
document.getElementById('root').innerHTML = '<div style="background: cyan; padding: 20px; color: black;">🔄 Initializing components...</div>';
|
|
594
|
+
|
|
595
|
+
// First, test that React is working with a simple component
|
|
596
|
+
const TestComponent = () => React.createElement('div', {
|
|
597
|
+
style: {
|
|
598
|
+
background: 'yellow',
|
|
599
|
+
padding: '10px',
|
|
600
|
+
margin: '10px 0',
|
|
601
|
+
border: '2px solid orange',
|
|
602
|
+
color: 'black',
|
|
603
|
+
fontSize: '16px',
|
|
604
|
+
fontWeight: 'bold'
|
|
605
|
+
}
|
|
606
|
+
}, '🔧 React is working! Now loading your component...');
|
|
607
|
+
|
|
608
|
+
const testRoot = ReactDOM.createRoot(document.getElementById('root'));
|
|
609
|
+
testRoot.render(React.createElement(TestComponent));
|
|
610
|
+
|
|
611
|
+
// Wait a moment to show the test component
|
|
612
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
613
|
+
|
|
614
|
+
// Now proceed with the actual component
|
|
469
615
|
// Register the component hierarchy
|
|
470
616
|
const result = await hierarchyRegistrar.registerHierarchy(componentSpec);
|
|
471
617
|
|
|
472
618
|
if (!result.success) {
|
|
473
619
|
console.error('Failed to register components:', result.errors);
|
|
620
|
+
document.getElementById('root').innerHTML = '<div style="color: red; padding: 20px;">Failed to register components: ' + JSON.stringify(result.errors) + '</div>';
|
|
474
621
|
return;
|
|
475
622
|
}
|
|
476
623
|
|
|
@@ -493,6 +640,10 @@ ${cssLinks}
|
|
|
493
640
|
|
|
494
641
|
// Function to render with current settings
|
|
495
642
|
const renderWithSettings = () => {
|
|
643
|
+
console.log('🎯 Starting component render...');
|
|
644
|
+
console.log('Props:', props);
|
|
645
|
+
console.log('Root component found:', !!RootComponent);
|
|
646
|
+
|
|
496
647
|
const enhancedProps = {
|
|
497
648
|
...props,
|
|
498
649
|
components: components,
|
|
@@ -508,15 +659,60 @@ ${cssLinks}
|
|
|
508
659
|
}
|
|
509
660
|
};
|
|
510
661
|
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
662
|
+
console.log('Enhanced props created:', Object.keys(enhancedProps));
|
|
663
|
+
|
|
664
|
+
try {
|
|
665
|
+
root.render(
|
|
666
|
+
React.createElement(ErrorBoundary, null,
|
|
667
|
+
React.createElement(RootComponent, enhancedProps)
|
|
668
|
+
)
|
|
669
|
+
);
|
|
670
|
+
console.log('✅ Component rendered successfully');
|
|
671
|
+
} catch (error) {
|
|
672
|
+
console.error('❌ Render error:', error);
|
|
673
|
+
document.getElementById('root').innerHTML = '<div style="color: red; padding: 20px;">Render Error: ' + error.message + '</div>';
|
|
674
|
+
}
|
|
516
675
|
};
|
|
517
676
|
|
|
518
677
|
// Initial render
|
|
519
678
|
renderWithSettings();
|
|
679
|
+
|
|
680
|
+
// Add a fallback message if nothing renders after a delay
|
|
681
|
+
setTimeout(() => {
|
|
682
|
+
const rootElement = document.getElementById('root');
|
|
683
|
+
if (rootElement) {
|
|
684
|
+
const hasContent = rootElement.innerHTML.trim().length > 0;
|
|
685
|
+
const hasVisibleChildren = rootElement.querySelector('*');
|
|
686
|
+
|
|
687
|
+
console.log('Root element check:', {
|
|
688
|
+
hasContent,
|
|
689
|
+
innerHTML: rootElement.innerHTML.substring(0, 100),
|
|
690
|
+
hasVisibleChildren: !!hasVisibleChildren,
|
|
691
|
+
childCount: rootElement.childNodes.length
|
|
692
|
+
});
|
|
693
|
+
|
|
694
|
+
if (!hasContent || !hasVisibleChildren) {
|
|
695
|
+
rootElement.innerHTML = '<div style="color: red; font-size: 18px; padding: 20px; border: 2px dashed red; background: #ffe6e6;">⚠️ Component did not render any visible content</div>';
|
|
696
|
+
} else {
|
|
697
|
+
// Force visibility on all children as a test
|
|
698
|
+
const allElements = rootElement.querySelectorAll('*');
|
|
699
|
+
allElements.forEach(el => {
|
|
700
|
+
if (el instanceof HTMLElement) {
|
|
701
|
+
// Make sure elements are visible
|
|
702
|
+
if (window.getComputedStyle(el).display === 'none') {
|
|
703
|
+
el.style.display = 'block !important';
|
|
704
|
+
}
|
|
705
|
+
if (window.getComputedStyle(el).visibility === 'hidden') {
|
|
706
|
+
el.style.visibility = 'visible !important';
|
|
707
|
+
}
|
|
708
|
+
// Add a test border to see if elements exist
|
|
709
|
+
el.style.border = '1px dotted red';
|
|
710
|
+
}
|
|
711
|
+
});
|
|
712
|
+
console.log('Applied debug borders to', allElements.length, 'elements');
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
}, 2000);
|
|
520
716
|
})();
|
|
521
717
|
</script>
|
|
522
718
|
</body>
|
|
@@ -571,13 +767,13 @@ ${cssLinks}
|
|
|
571
767
|
*/
|
|
572
768
|
async waitForRender(page, options, errors) {
|
|
573
769
|
const timeout = options.timeout || 10000; // 10 seconds default
|
|
574
|
-
const renderWaitTime = options.renderWaitTime ||
|
|
770
|
+
const renderWaitTime = options.renderWaitTime || 500; // Default 500ms for render completion
|
|
575
771
|
try {
|
|
576
772
|
if (options.waitForSelector) {
|
|
577
|
-
await
|
|
773
|
+
await page.waitForSelector(options.waitForSelector, { timeout });
|
|
578
774
|
}
|
|
579
775
|
if (options.waitForLoadState) {
|
|
580
|
-
await
|
|
776
|
+
await page.waitForLoadState(options.waitForLoadState);
|
|
581
777
|
}
|
|
582
778
|
else {
|
|
583
779
|
// Wait for React to finish rendering with configurable time
|
|
@@ -625,6 +821,50 @@ ${cssLinks}
|
|
|
625
821
|
});
|
|
626
822
|
return errors;
|
|
627
823
|
}
|
|
824
|
+
/**
|
|
825
|
+
* Captures async errors by waiting for asynchronous operations to complete
|
|
826
|
+
* This catches errors from setTimeout, setInterval, Promises, and async effects
|
|
827
|
+
*/
|
|
828
|
+
async captureAsyncErrors(page, waitTime) {
|
|
829
|
+
const errors = [];
|
|
830
|
+
try {
|
|
831
|
+
// Clear any existing errors to track only new ones
|
|
832
|
+
const initialErrorCount = await page.evaluate(() => {
|
|
833
|
+
return window.__testHarnessRuntimeErrors?.length || 0;
|
|
834
|
+
});
|
|
835
|
+
// Wait for async operations to potentially fail
|
|
836
|
+
await page.waitForTimeout(waitTime);
|
|
837
|
+
// Collect any new errors that occurred during the wait
|
|
838
|
+
const allErrors = await page.evaluate(() => {
|
|
839
|
+
return window.__testHarnessRuntimeErrors || [];
|
|
840
|
+
});
|
|
841
|
+
// Process only new errors
|
|
842
|
+
const newErrors = allErrors.slice(initialErrorCount);
|
|
843
|
+
newErrors.forEach((error) => {
|
|
844
|
+
if (error.type === 'promise-rejection') {
|
|
845
|
+
errors.push(`Async operation failed: ${error.message}`);
|
|
846
|
+
}
|
|
847
|
+
else if (error.message && !errors.includes(`${error.type} error: ${error.message}`)) {
|
|
848
|
+
errors.push(`Delayed ${error.type} error: ${error.message}`);
|
|
849
|
+
}
|
|
850
|
+
});
|
|
851
|
+
// Also check if any console errors appeared
|
|
852
|
+
const consoleErrors = await page.evaluate(() => {
|
|
853
|
+
const logs = window.__testHarnessConsoleLogs || [];
|
|
854
|
+
return logs.filter((log) => log.type === 'error').map((log) => log.text);
|
|
855
|
+
});
|
|
856
|
+
// Add unique console errors
|
|
857
|
+
consoleErrors.forEach((error) => {
|
|
858
|
+
if (!errors.some(e => e.includes(error))) {
|
|
859
|
+
errors.push(`Console error during async wait: ${error}`);
|
|
860
|
+
}
|
|
861
|
+
});
|
|
862
|
+
}
|
|
863
|
+
catch (e) {
|
|
864
|
+
errors.push(`Failed to capture async errors: ${e}`);
|
|
865
|
+
}
|
|
866
|
+
return errors;
|
|
867
|
+
}
|
|
628
868
|
/**
|
|
629
869
|
* Performs deep render validation to catch errors that might be in the DOM
|
|
630
870
|
*/
|
|
@@ -687,67 +927,77 @@ ${cssLinks}
|
|
|
687
927
|
* Expose MemberJunction utilities to the browser context
|
|
688
928
|
*/
|
|
689
929
|
async exposeMJUtilities(page, contextUser) {
|
|
690
|
-
// Check if utilities are already exposed
|
|
930
|
+
// Check if utilities are already exposed (they persist across navigations)
|
|
691
931
|
const alreadyExposed = await page.evaluate(() => {
|
|
692
932
|
return typeof window.__mjGetEntityObject === 'function';
|
|
693
933
|
});
|
|
694
934
|
if (alreadyExposed) {
|
|
695
935
|
return; // Already exposed, skip
|
|
696
936
|
}
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
937
|
+
try {
|
|
938
|
+
// Create instances in Node.js context
|
|
939
|
+
const metadata = new core_1.Metadata();
|
|
940
|
+
const runView = new core_1.RunView();
|
|
941
|
+
const runQuery = new core_1.RunQuery();
|
|
942
|
+
// Expose individual functions since we can't pass complex objects
|
|
943
|
+
await page.exposeFunction('__mjGetEntityObject', async (entityName) => {
|
|
944
|
+
try {
|
|
945
|
+
const entity = await metadata.GetEntityObject(entityName, contextUser);
|
|
946
|
+
return entity;
|
|
947
|
+
}
|
|
948
|
+
catch (error) {
|
|
949
|
+
console.error('Error in __mjGetEntityObject:', error);
|
|
950
|
+
return null;
|
|
951
|
+
}
|
|
952
|
+
});
|
|
953
|
+
await page.exposeFunction('__mjGetEntities', () => {
|
|
954
|
+
try {
|
|
955
|
+
return metadata.Entities;
|
|
956
|
+
}
|
|
957
|
+
catch (error) {
|
|
958
|
+
console.error('Error in __mjGetEntities:', error);
|
|
959
|
+
return null;
|
|
960
|
+
}
|
|
961
|
+
});
|
|
962
|
+
await page.exposeFunction('__mjRunView', async (params) => {
|
|
963
|
+
try {
|
|
964
|
+
return await runView.RunView(params, contextUser);
|
|
965
|
+
}
|
|
966
|
+
catch (error) {
|
|
967
|
+
console.error('Error in __mjRunView:', error);
|
|
968
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
969
|
+
return { Success: false, ErrorMessage: errorMessage, Results: [] };
|
|
970
|
+
}
|
|
971
|
+
});
|
|
972
|
+
await page.exposeFunction('__mjRunViews', async (params) => {
|
|
973
|
+
try {
|
|
974
|
+
return await runView.RunViews(params, contextUser);
|
|
975
|
+
}
|
|
976
|
+
catch (error) {
|
|
977
|
+
console.error('Error in __mjRunViews:', error);
|
|
978
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
979
|
+
return params.map(() => ({ Success: false, ErrorMessage: errorMessage, Results: [] }));
|
|
980
|
+
}
|
|
981
|
+
});
|
|
982
|
+
await page.exposeFunction('__mjRunQuery', async (params) => {
|
|
983
|
+
try {
|
|
984
|
+
return await runQuery.RunQuery(params, contextUser);
|
|
985
|
+
}
|
|
986
|
+
catch (error) {
|
|
987
|
+
console.error('Error in __mjRunQuery:', error);
|
|
988
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
989
|
+
return { Success: false, ErrorMessage: errorMessage, Results: [] };
|
|
990
|
+
}
|
|
991
|
+
});
|
|
992
|
+
}
|
|
993
|
+
catch (error) {
|
|
994
|
+
console.error('Failed to expose MJ utilities to page:', error);
|
|
995
|
+
// Log more details about the error
|
|
996
|
+
if (error instanceof Error && error.message.includes('addBinding')) {
|
|
997
|
+
console.error('addBinding error - this usually means the page context is invalid');
|
|
749
998
|
}
|
|
750
|
-
|
|
999
|
+
throw error; // Re-throw to be caught by the main error handler
|
|
1000
|
+
}
|
|
751
1001
|
}
|
|
752
1002
|
/**
|
|
753
1003
|
* Analyze component errors to identify failed components
|
|
@@ -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":";;;AACA,iEAOuC;AACvC,+CAAmE;AAEnE,yDAA+E;AAiC/E,MAAa,eAAe;IAoB1B,YAAoB,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;QAChD,IAAI,CAAC,QAAQ,GAAG,IAAI,iCAAiB,EAAE,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,iCAAiB,EAAE,CAAC;QAExC,wDAAwD;QACxD,IAAI,CAAC,cAAc,GAAG,EAAoB,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,aAAqB,EACrB,aAAqB,EACrB,aAAmB,EACnB,eAAyB;QAEzB,MAAM,UAAU,GAAG,MAAM,kCAAe,CAAC,aAAa,CACpD,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,CAChB,CAAC;QAEF,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;QAEtG,OAAO;YACL,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,SAAS;SACV,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAAkC;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,MAAM,WAAW,GAAqC,EAAE,CAAC;QACzD,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,wBAAwB;QACxB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC;QAEtC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAEjD,gDAAgD;YAChD,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE/B,kCAAkC;YAClC,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;YAExD,yBAAyB;YACzB,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YACxE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACtC,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAEtC,gCAAgC;YAChC,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,IAAI,CAAC,gCAAgC,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAEnF,yCAAyC;YACzC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAEtE,mBAAmB;YACnB,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAE9C,yBAAyB;YACzB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;YAE9B,sDAAsD;YACtD,IAAI,OAAO,CAAC,kBAAkB,IAAI,OAAO,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;gBACjE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;gBACpF,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;YAC9B,CAAC;YAED,iCAAiC;YACjC,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;YAEjC,wBAAwB;YACxB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YAElC,4BAA4B;YAC5B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YAE3C,sDAAsD;YACtD,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,gBAAgB,CACzD,MAAM,EACN,gBAAgB,EAChB,WAAW,EACX,CAAC,aAAa,CACf,CAAC;YAEF,4BAA4B;YAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;YAEjC,MAAM,MAAM,GAAG;gBACb,OAAO;gBACP,IAAI;gBACJ,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBACrB,OAAO;wBACL,OAAO,EAAE,CAAC;wBACV,QAAQ,EAAE,UAAU;qBACR,CAAC,CAAC,wBAAwB;gBAC1C,CAAC,CAAC;gBACF,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBACzB,OAAO;wBACL,OAAO,EAAE,CAAC;wBACV,QAAQ,EAAE,KAAK;qBACH,CAAC,CAAC,wBAAwB;gBAC1C,CAAC,CAAC;gBACF,gBAAgB;gBAChB,OAAO,EAAE,WAAW;gBACpB,UAAU;gBACV,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBACrC,WAAW;aACZ,CAAC;YAEF,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACpE,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,EAAE;gBACR,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBACrB,OAAO;wBACL,OAAO,EAAE,CAAC;wBACV,QAAQ,EAAE,UAAU;qBACR,CAAC,CAAC,wBAAwB;gBAC1C,CAAC,CAAC;gBACF,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBACzB,OAAO;wBACL,OAAO,EAAE,CAAC;wBACV,QAAQ,EAAE,KAAK;qBACH,CAAC,CAAC,wBAAwB;gBAC1C,CAAC,CAAC;gBACF,gBAAgB;gBAChB,OAAO,EAAE,WAAW;gBACpB,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBACrC,WAAW;aACZ,CAAC;YAEF,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAC;gBACjE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,MAAgC;QACpD,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAEjD,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBAC5B,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;wBAC/B,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;gBAC/B,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;gBAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACtD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBAClC,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACvE,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,WAAW,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3F,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC9D,CAAC;IAEO,kBAAkB,CAAC,OAAkC;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAEvD,gCAAgC;QAChC,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;YACjC,sCAAsB,CAAC,gBAAgB,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACxE,CAAC;QAED,+CAA+C;QAC/C,MAAM,gBAAgB,GAAG,sCAAsB,CAAC,mBAAmB,EAAE,CAAC;QAEtE,2CAA2C;QAC3C,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;QAC3F,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;QAE7F,6CAA6C;QAC7C,MAAM,cAAc,GAAG,gBAAgB;aACpC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,8BAA8B,GAAG,CAAC,MAAM,aAAa,CAAC;aACxE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,+CAA+C;QAC/C,MAAM,gBAAgB,GAAG,kBAAkB;aACxC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,kBAAkB,GAAG,CAAC,MAAM,aAAa,CAAC;aAC5D,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,qBAAqB;QACrB,MAAM,QAAQ,GAAG,gBAAgB;aAC9B,MAAM,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;aACnC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,kCAAkC,GAAG,CAAC,SAAS,IAAI,CAAC;aACtE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,iDAAiD;QACjD,MAAM,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAE9D,OAAO;;;;;;EAMT,cAAc;EACd,gBAAgB;EAChB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAyGJ,OAAO,CAAC,SAAS,IAAI,EAAE;;;iCAGI,IAAI,CAAC,SAAS,CACzC,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC;YACpC,cAAc,EAAE,GAAG,CAAC,cAAc;YAClC,WAAW,EAAE,GAAG,CAAC,WAAW;SAC7B,CAAC,CAAC,CACJ;;;;;;;;;;;;;;;;MAgBC,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAsPC,QAAQ;oBAChB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAuIrB,CAAC;IACP,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,IAAY,EAAE,IAAY;QAC1C,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,IAAY;QACpC,OAAO,eAAe,CAAC,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvF,CAAC;IAED;;OAEG;IACK,mBAAmB,CACzB,IAAS,EACT,WAA6C,EAC7C,QAAkB,EAClB,gBAA0B;QAE1B,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAQ,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YAExB,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAEjC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC/B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEpB,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,IAAS,EAAE,MAAgB;QACpD,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,KAAY,EAAE,EAAE;YACpC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAAC,IAAS;QAC1C,yFAAyF;QACzF,gDAAgD;QAChD,yDAAyD;IAC3D,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CACzB,IAAS,EACT,OAAkC,EAClC,MAAgB;QAEhB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC,qBAAqB;QAC/D,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,GAAG,CAAC,CAAC,sCAAsC;QAE5F,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;gBAC5B,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YACnE,CAAC;YAED,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBAC7B,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,4DAA4D;gBAC5D,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;gBAE1C,mCAAmC;gBACnC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;oBACvB,IAAK,MAAc,CAAC,KAAK,IAAK,MAAc,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;wBAC7D,IAAI,CAAC;4BACF,MAAc,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;wBAC5C,CAAC;wBAAC,OAAO,CAAC,EAAE,CAAC;4BACX,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;wBACvC,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,0DAA0D;gBAC1D,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YAChC,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,YAAY,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,qCAAqC,OAAO,oCAAoC,CAAC,CAAC;YAC9F,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,IAAS;QACpC,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAE,MAAc,CAAC,wBAAwB,IAAI,CAAC,CAAC,CAAC;IAClF,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAAC,IAAS;QAC1C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC7C,OAAQ,MAAc,CAAC,0BAA0B,IAAI,EAAE,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,aAAa,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;YACnC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACrD,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;gBACzB,MAAM,CAAC,IAAI,CAAC,oBAAoB,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,kBAAkB,CAAC,IAAS,EAAE,QAAgB;QAC1D,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,CAAC;YACH,mDAAmD;YACnD,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACjD,OAAQ,MAAc,CAAC,0BAA0B,EAAE,MAAM,IAAI,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;YAEH,gDAAgD;YAChD,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAEpC,uDAAuD;YACvD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACzC,OAAQ,MAAc,CAAC,0BAA0B,IAAI,EAAE,CAAC;YAC1D,CAAC,CAAC,CAAC;YAEH,0BAA0B;YAC1B,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACrD,SAAS,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;gBAC/B,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;oBACvC,MAAM,CAAC,IAAI,CAAC,2BAA2B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC1D,CAAC;qBAAM,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;oBACtF,MAAM,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC/D,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,4CAA4C;YAC5C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBAC7C,MAAM,IAAI,GAAI,MAAc,CAAC,wBAAwB,IAAI,EAAE,CAAC;gBAC5D,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrF,CAAC,CAAC,CAAC;YAEH,4BAA4B;YAC5B,aAAa,CAAC,OAAO,CAAC,CAAC,KAAa,EAAE,EAAE;gBACtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;oBACzC,MAAM,CAAC,IAAI,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC,CAAC,CAAC;QAEL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAAC,IAAS;QACxC,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,CAAC;YACH,wDAAwD;YACxD,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACvB,8CAA8C;gBAC9C,IAAK,MAAc,CAAC,KAAK,IAAK,MAAc,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;oBAC5D,MAAc,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,gDAAgD;YAChD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBAC5C,MAAM,MAAM,GAAa,EAAE,CAAC;gBAE5B,4DAA4D;gBAC5D,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CACtC,QAAQ,CAAC,IAAI,EACb,UAAU,CAAC,SAAS,CACrB,CAAC;gBAEF,IAAI,IAAI,CAAC;gBACT,OAAO,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;oBAChC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;oBACpC,iCAAiC;oBACjC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;wBAC3B,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;wBAChC,IAAI,CAAC,QAAQ,CAAC,qCAAqC,CAAC;wBACpD,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC;wBACvC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;wBAClC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;wBACtC,iDAAiD;wBACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;wBAC7B,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,yBAAyB;4BACpD,MAAM,CAAC,IAAI,CAAC,wCAAwC,QAAQ,EAAE,CAAC,CAAC;wBAClE,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,gBAAgB,CACtB,MAAgB,EAChB,gBAA0B,EAC1B,WAAmB,EACnB,UAAmB;QAEnB,MAAM,gBAAgB,GAAa,EAAE,CAAC;QAEtC,IAAI,WAAW,GAAG,eAAe,CAAC,gBAAgB,EAAE,CAAC;YACnD,gBAAgB,CAAC,IAAI,CAAC,2BAA2B,WAAW,mBAAmB,CAAC,CAAC;QACnF,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC;YACpB,gBAAgB,CAAC,MAAM,KAAK,CAAC;YAC7B,CAAC,UAAU;YACX,WAAW,IAAI,eAAe,CAAC,gBAAgB,CAAC;QAE/D,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;IACvC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAAC,IAAS,EAAE,WAAqB;QAC9D,2EAA2E;QAC3E,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC9C,OAAO,OAAQ,MAAc,CAAC,mBAAmB,KAAK,UAAU,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,wBAAwB;QAClC,CAAC;QAED,IAAI,CAAC;YACH,sCAAsC;YACtC,MAAM,QAAQ,GAAG,IAAI,eAAQ,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,IAAI,cAAO,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,IAAI,eAAQ,EAAE,CAAC;YAEhC,kEAAkE;YAClE,MAAM,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,KAAK,EAAE,UAAkB,EAAE,EAAE;gBAC9E,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;oBACvE,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;oBACtD,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAC,GAAG,EAAE;gBAC/C,IAAI,CAAC;oBACH,OAAO,QAAQ,CAAC,QAAQ,CAAC;gBAC3B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;oBAClD,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,KAAK,EAAE,MAAqB,EAAE,EAAE;gBACvE,IAAI,CAAC;oBACH,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;gBACpD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;oBAC9C,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5E,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;gBACrE,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,EAAE,MAAuB,EAAE,EAAE;gBAC1E,IAAI,CAAC;oBACH,OAAO,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;gBACrD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;oBAC/C,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC1E,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC3F,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,EAAE,MAAsB,EAAE,EAAE;gBACvE,IAAI,CAAC;oBACH,OAAO,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;gBACtD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;oBAC/C,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5E,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;gBACrE,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;YAC/D,mCAAmC;YACnC,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACnE,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;YACrF,CAAC;YACD,MAAM,KAAK,CAAC,CAAC,kDAAkD;QACjE,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,sBAAsB,CAAC,MAAgB;QAC5C,OAAO,sCAAsB,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,wBAAwB,CAAC,MAAgB;QAC9C,OAAO,sCAAsB,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED;;;OAGG;IACK,wBAAwB;QAC9B,2DAA2D;QAC3D,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+GN,CAAC;IACJ,CAAC;;AA3uCH,0CA4uCC;AAvuCC,mDAAmD;AAC3B,yCAAyB,GAAG;IAClD,gCAAgC;IAChC,qEAAqE;IACrE,oDAAoD;IACpD,yCAAyC;IACzC,wEAAwE;IACxE,6CAA6C;IAC7C,8BAA8B;IAC9B,sBAAsB;CACvB,CAAC;AAEF,0DAA0D;AAClC,gCAAgB,GAAG,IAAI,CAAC"}
|
|
@@ -7,6 +7,32 @@ export interface TestHarnessOptions extends BrowserContextOptions {
|
|
|
7
7
|
screenshotOnError?: boolean;
|
|
8
8
|
screenshotPath?: string;
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* React Test Harness for testing React components in an isolated browser environment
|
|
12
|
+
*
|
|
13
|
+
* IMPORTANT: Parallel Testing Limitation
|
|
14
|
+
* ----------------------------------------
|
|
15
|
+
* This test harness uses a single browser page instance and is NOT safe for parallel test execution
|
|
16
|
+
* on the same instance. For parallel testing, create separate ReactTestHarness instances:
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* // ✅ CORRECT - Parallel testing with separate instances
|
|
20
|
+
* const results = await Promise.all(tests.map(async (test) => {
|
|
21
|
+
* const harness = new ReactTestHarness(options);
|
|
22
|
+
* await harness.initialize();
|
|
23
|
+
* try {
|
|
24
|
+
* return await harness.testComponent(test);
|
|
25
|
+
* } finally {
|
|
26
|
+
* await harness.close();
|
|
27
|
+
* }
|
|
28
|
+
* }));
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* // ❌ WRONG - Parallel testing on same instance (will cause conflicts)
|
|
32
|
+
* const harness = new ReactTestHarness(options);
|
|
33
|
+
* await harness.initialize();
|
|
34
|
+
* const results = await Promise.all(tests.map(test => harness.testComponent(test)));
|
|
35
|
+
*/
|
|
10
36
|
export declare class ReactTestHarness {
|
|
11
37
|
private browserManager;
|
|
12
38
|
private componentRunner;
|
|
@@ -17,6 +43,11 @@ export declare class ReactTestHarness {
|
|
|
17
43
|
* Test a component with its full hierarchy of child components
|
|
18
44
|
*/
|
|
19
45
|
testComponent(options: ComponentExecutionOptions): Promise<ComponentExecutionResult>;
|
|
46
|
+
/**
|
|
47
|
+
* Test a simple component from code string
|
|
48
|
+
* This is a convenience method for testing component code directly
|
|
49
|
+
*/
|
|
50
|
+
testComponentCode(componentCode: string, props?: Record<string, any>, options?: Partial<ComponentExecutionOptions>): Promise<ComponentExecutionResult>;
|
|
20
51
|
/**
|
|
21
52
|
* Test a component from a file path
|
|
22
53
|
* This is a convenience method for the CLI
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-harness.d.ts","sourceRoot":"","sources":["../../src/lib/test-harness.ts"],"names":[],"mappings":";AAAA,OAAO,EAAkB,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAmB,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC1G,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,OAAO,CAAqB;gBAExB,OAAO,GAAE,kBAAuB;IAYtC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,wBAAwB,CAAC;IAmDpC;;;OAGG;IACG,qBAAqB,CACzB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,OAAO,EAAE,IAAI,CAAC,yBAAyB,EAAE,eAAe,CAAC,GACxD,OAAO,CAAC,wBAAwB,CAAC;IAgC9B,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAC1B,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAyBzE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC;QAC/E,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACrF,CAAC;IA0BF,mBAAmB;IAInB,aAAa,CAAC,IAAI,EAAE,MAAM;;;;;;IAIpB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1C,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;CAG/E"}
|
|
1
|
+
{"version":3,"file":"test-harness.d.ts","sourceRoot":"","sources":["../../src/lib/test-harness.ts"],"names":[],"mappings":";AAAA,OAAO,EAAkB,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAmB,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC1G,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,OAAO,CAAqB;gBAExB,OAAO,GAAE,kBAAuB;IAYtC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,wBAAwB,CAAC;IAmDpC;;;OAGG;IACG,iBAAiB,CACrB,aAAa,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,OAAO,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAC3C,OAAO,CAAC,wBAAwB,CAAC;IAyBpC;;;OAGG;IACG,qBAAqB,CACzB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,OAAO,EAAE,IAAI,CAAC,yBAAyB,EAAE,eAAe,CAAC,GACxD,OAAO,CAAC,wBAAwB,CAAC;IAgC9B,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAC1B,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAyBzE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC;QAC/E,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACrF,CAAC;IA0BF,mBAAmB;IAInB,aAAa,CAAC,IAAI,EAAE,MAAM;;;;;;IAIpB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1C,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;CAG/E"}
|
package/dist/lib/test-harness.js
CHANGED
|
@@ -27,6 +27,32 @@ exports.ReactTestHarness = void 0;
|
|
|
27
27
|
const browser_context_1 = require("./browser-context");
|
|
28
28
|
const component_runner_1 = require("./component-runner");
|
|
29
29
|
const assertion_helpers_1 = require("./assertion-helpers");
|
|
30
|
+
/**
|
|
31
|
+
* React Test Harness for testing React components in an isolated browser environment
|
|
32
|
+
*
|
|
33
|
+
* IMPORTANT: Parallel Testing Limitation
|
|
34
|
+
* ----------------------------------------
|
|
35
|
+
* This test harness uses a single browser page instance and is NOT safe for parallel test execution
|
|
36
|
+
* on the same instance. For parallel testing, create separate ReactTestHarness instances:
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* // ✅ CORRECT - Parallel testing with separate instances
|
|
40
|
+
* const results = await Promise.all(tests.map(async (test) => {
|
|
41
|
+
* const harness = new ReactTestHarness(options);
|
|
42
|
+
* await harness.initialize();
|
|
43
|
+
* try {
|
|
44
|
+
* return await harness.testComponent(test);
|
|
45
|
+
* } finally {
|
|
46
|
+
* await harness.close();
|
|
47
|
+
* }
|
|
48
|
+
* }));
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* // ❌ WRONG - Parallel testing on same instance (will cause conflicts)
|
|
52
|
+
* const harness = new ReactTestHarness(options);
|
|
53
|
+
* await harness.initialize();
|
|
54
|
+
* const results = await Promise.all(tests.map(test => harness.testComponent(test)));
|
|
55
|
+
*/
|
|
30
56
|
class ReactTestHarness {
|
|
31
57
|
constructor(options = {}) {
|
|
32
58
|
this.options = {
|
|
@@ -83,6 +109,32 @@ class ReactTestHarness {
|
|
|
83
109
|
}
|
|
84
110
|
return result;
|
|
85
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* Test a simple component from code string
|
|
114
|
+
* This is a convenience method for testing component code directly
|
|
115
|
+
*/
|
|
116
|
+
async testComponentCode(componentCode, props, options) {
|
|
117
|
+
const componentName = 'Component';
|
|
118
|
+
const spec = {
|
|
119
|
+
name: componentName,
|
|
120
|
+
code: componentCode,
|
|
121
|
+
dependencies: [],
|
|
122
|
+
description: 'Test component',
|
|
123
|
+
title: componentName,
|
|
124
|
+
type: 'React',
|
|
125
|
+
functionalRequirements: {},
|
|
126
|
+
technicalDesign: {},
|
|
127
|
+
dataRequirements: {},
|
|
128
|
+
exampleUsage: ''
|
|
129
|
+
};
|
|
130
|
+
const fullOptions = {
|
|
131
|
+
componentSpec: spec,
|
|
132
|
+
props: props || {},
|
|
133
|
+
contextUser: options?.contextUser || { Name: 'Test User', Email: 'test@test.com' },
|
|
134
|
+
...options
|
|
135
|
+
};
|
|
136
|
+
return this.testComponent(fullOptions);
|
|
137
|
+
}
|
|
86
138
|
/**
|
|
87
139
|
* Test a component from a file path
|
|
88
140
|
* This is a convenience method for the CLI
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-harness.js","sourceRoot":"","sources":["../../src/lib/test-harness.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"test-harness.js","sourceRoot":"","sources":["../../src/lib/test-harness.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/react-test-harness",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.90.0",
|
|
4
4
|
"description": "React component test harness for MemberJunction using Playwright",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"typescript": "^5.4.5"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@memberjunction/react-runtime": "^2.
|
|
26
|
-
"@memberjunction/interactive-component-types": "^2.
|
|
25
|
+
"@memberjunction/react-runtime": "^2.90.0",
|
|
26
|
+
"@memberjunction/interactive-component-types": "^2.90.0",
|
|
27
27
|
"@playwright/test": "^1.40.0",
|
|
28
28
|
"playwright": "^1.40.0",
|
|
29
29
|
"commander": "^11.1.0",
|