endorphin-ai 0.6.0 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -20,53 +20,94 @@ LangChain, OpenAI GPT-4o, and Playwright. Provides intelligent browser
20
20
  automation with automatic element detection, visual validation, and
21
21
  comprehensive test management.
22
22
 
23
- ## 🚀 Quick Start
23
+ ## 🎬 Watch Demo
24
24
 
25
25
  <div align="center">
26
26
  <a href="https://youtu.be/ev_71RBO6g8?si=F9xTPSJNp36Mr1wx" target="_blank">
27
- <img src="https://img.shields.io/badge/🎬_WATCH_DEMO-FF0000?style=for-the-badge&logo=youtube&logoColor=white&labelColor=000000" alt="Watch Demo" />
27
+ <img src="https://img.shields.io/badge/🎬_WATCH_DEMO-FF0000?style=for-the-badge&logo=youtube&logoColor=white&labelColor=000000&scale=1.5" alt="Watch Demo" style="transform: scale(1.5); margin: 20px 0;" width="300" />
28
28
  </a>
29
29
  <br />
30
- <sub><i>See Endorphin AI in action - 10 minute demo</i></sub>
30
+ <p style="font-size: 18px; font-weight: bold; margin: 15px 0;">🎯 See Endorphin AI in Action - Complete Walkthrough</p>
31
+ <p style="font-size: 16px; color: #666; margin-bottom: 30px;">
32
+ ✨ Watch how AI writes and executes your tests<br />
33
+ 🔍 See intelligent element detection in real-time<br />
34
+ 📊 Explore beautiful HTML reports with screenshots<br />
35
+ ⚡ From setup to test execution in 10 minutes
36
+ </p>
31
37
  </div>
32
38
 
33
- ### Installation
39
+ ---
40
+
41
+ ## 🚀 Quick Start
42
+
43
+ ### 📦 Installation & Setup
44
+
45
+ Get started in under 2 minutes:
34
46
 
35
47
  ```bash
36
- # Install Endorphin AI
48
+ # 1. Create your project
49
+ mkdir my-ai-tests && cd my-ai-tests
50
+
51
+ # 2. Install Endorphin AI
37
52
  npm install endorphin-ai
53
+
54
+ # 3. Initialize with everything you need
55
+ npx endorphin init
38
56
  ```
39
57
 
40
- ### Setup (New - Automated!)
58
+ **What you get:**
59
+ - ✅ Sample test ready to run
60
+ - ✅ Configuration files
61
+ - ✅ Project structure
62
+ - ✅ Environment setup
41
63
 
42
- 1. Create and initialize your project:
64
+ ### 🔑 Add Your OpenAI API Key
43
65
 
44
- ```bash
45
- mkdir my-test-project && cd my-test-project
46
- npx endorphin init
47
- ```
66
+ ```bash
67
+ # Edit the .env file that was created
68
+ echo "OPENAI_API_KEY=your-openai-api-key-here" > .env
69
+ ```
48
70
 
49
- 2. Set up your OpenAI API key:
71
+ *Get your API key from [OpenAI Platform](https://platform.openai.com/api-keys)*
50
72
 
51
- ```bash
52
- # Edit the .env file and add your API key
53
- # OPENAI_API_KEY=your_api_key_here
54
- ```
73
+ ### ▶️ Run Your First Test
55
74
 
56
- 3. Run your first test:
75
+ ```bash
76
+ # Run the sample health check test
77
+ npx endorphin run test HEALTH-001
57
78
 
58
- ```bash
59
- npx endorphin run test HEALTH-001
60
- ```
79
+ # Generate a beautiful HTML report
80
+ npx endorphin generate report && npx endorphin open report
81
+ ```
61
82
 
62
- 4. Generate an interactive HTML report:
63
- ```bash
64
- npx endorphin generate report
65
- npx endorphin open report
66
- ```
83
+ **🎉 That's it!** You now have:
84
+ - A working AI-powered test
85
+ - Interactive HTML reports with screenshots
86
+ - Complete project structure for scaling
87
+
88
+ ### 🔧 Troubleshooting Installation
67
89
 
68
- That's it! Your project is ready with a sample test, configuration, all
69
- necessary directories, and beautiful HTML reporting.
90
+ If `npx endorphin` doesn't work, try these **guaranteed solutions**:
91
+
92
+ ```bash
93
+ # Option 1: Use npm scripts (always works)
94
+ npm run endorphin:init # Initialize project
95
+ npm run endorphin:version # Check version
96
+ npm run endorphin:help # Get help
97
+
98
+ # Option 2: Clear npx cache and retry
99
+ npx --clear-cache
100
+ npx endorphin init
101
+
102
+ # Option 3: Use direct path
103
+ ./node_modules/.bin/endorphin init
104
+
105
+ # Option 4: Global installation
106
+ npm install -g endorphin-ai
107
+ endorphin init
108
+ ```
109
+
110
+ **Why this happens:** This is a known npm/npx issue with local binary resolution, not a problem with Endorphin AI. The npm scripts above always work regardless of npx behavior.
70
111
 
71
112
  ### Manual Setup (Alternative)
72
113
 
@@ -103,10 +144,12 @@ If you prefer manual setup:
103
144
  mkdir tests
104
145
  ```
105
146
 
106
- 6. Create your first test file `tests/login-test.js`:
147
+ 6. Create your first test file `tests/login-test.ts`:
148
+
149
+ ```typescript
150
+ import type { TestCase } from 'endorphin-ai';
107
151
 
108
- ```javascript
109
- export const QE001 = {
152
+ export const QE001: TestCase = {
110
153
  id: 'QE-001',
111
154
  name: 'Basic Login Test',
112
155
  description: 'Test the login functionality with valid credentials',
@@ -132,37 +175,65 @@ If you prefer manual setup:
132
175
  "scripts": {
133
176
  "test": "endorphin run test all",
134
177
  "test:smoke": "endorphin run test --tag smoke",
135
- "test:auth": "endorphin run test --tag authentication",
178
+ "test:auth": "endorphin run test --tag authentication",
136
179
  "test:single": "endorphin run test",
137
- "test:record": "endorphin run test-recorder"
180
+ "test:record": "endorphin run test-recorder",
181
+ "endorphin:init": "./node_modules/.bin/endorphin init",
182
+ "endorphin:version": "./node_modules/.bin/endorphin --version"
138
183
  }
139
184
  }
140
185
  ```
141
186
 
142
- ## 🔄 Updating Endorphin AI
187
+ ## 🎯 Core Features
143
188
 
144
- ### For Existing Projects
189
+ ### 🤖 AI-Powered Testing
190
+ - **Write tests in plain English** - No complex selectors needed
191
+ - **Intelligent element detection** - AI finds buttons, forms, and content automatically
192
+ - **Self-healing tests** - Adapts to UI changes without breaking
193
+ - **Smart error recovery** - Automatically retries failed actions with different strategies
145
194
 
146
- ```bash
147
- # Update to the latest version
148
- npm update endorphin-ai
195
+ ### 📊 Beautiful Reports
196
+ - **Interactive HTML reports** with screenshots and step-by-step execution
197
+ - **Real-time filtering and search** to quickly find issues
198
+ - **Visual debugging** with click-to-zoom screenshots
199
+ - **Export capabilities** for sharing with your team
149
200
 
150
- # Or install a specific version
151
- npm install endorphin-ai@latest
201
+ ### 🛠️ Developer Experience
202
+ - **Zero configuration** - Works out of the box
203
+ - **TypeScript support** with full type definitions
204
+ - **Multiple browsers** - Chrome, Firefox, Safari support
205
+ - **Parallel execution** for faster test runs
206
+ - **Hot reload** for rapid test development
207
+
208
+ ### 🎮 Interactive Tools
209
+ - **Test Recorder** - Create tests by clicking through your app
210
+ - **Live debugging** - See exactly what the AI is doing
211
+ - **Custom test creation** with guided prompts
212
+ - **Session replay** to understand test failures
213
+
214
+ ---
215
+
216
+ ## 🔄 Staying Updated
217
+
218
+ ### Current Version: v0.6.1
152
219
 
220
+ ```bash
153
221
  # Check your current version
154
222
  npx endorphin --version
155
223
 
224
+ # Update to the latest version
225
+ npm update endorphin-ai
226
+
156
227
  # Get help and see new features
157
228
  npx endorphin --help
158
229
  ```
159
230
 
160
- ### Migration Notes
161
-
162
- - **v0.3.0+**: Introduces `endorphin init` command for new projects
163
- - **v0.2.x**: Existing projects continue to work without changes
164
- - **Backward Compatibility**: All existing tests and configurations remain
165
- compatible
231
+ ### What's New in v0.6.1
232
+ - ✅ **Fixed npx Resolution Issues** with post-install script and npm script alternatives
233
+ - **Enhanced User Experience** with clear troubleshooting guidance
234
+ - **Reliable Installation** that works regardless of npm/npx behavior
235
+ - **Multiple Access Methods** including guaranteed npm scripts
236
+ - ✅ **Better Documentation** with comprehensive troubleshooting section
166
237
 
167
238
  ## 🚀 Project Initialization
168
239
 
@@ -176,11 +247,12 @@ npx endorphin init
176
247
 
177
248
  The `init` command creates:
178
249
 
179
- - ✅ `tests/` directory with sample test
250
+ - ✅ `tests/` directory with sample TypeScript test
180
251
  - ✅ `test-results/` for test outputs
181
252
  - ✅ `test-recorder/` for recorded tests
182
253
  - ✅ `.env` file with API key placeholder
183
- - ✅ `endorphin.config.js` with optimized settings
254
+ - ✅ `endorphin.config.ts` with optimized TypeScript settings
255
+ - ✅ `tsconfig.json` for TypeScript compilation
184
256
  - ✅ `.gitignore` with Endorphin-specific patterns
185
257
  - ✅ `README-ENDORPHIN.md` quick start guide
186
258
 
@@ -219,9 +291,10 @@ npm update endorphin-ai
219
291
  npx endorphin init
220
292
 
221
293
  # What gets created:
222
- # ├── tests/sample-test.js # Ready-to-run example test
294
+ # ├── tests/sample-test.ts # Ready-to-run TypeScript test
223
295
  # ├── .env # API key configuration
224
- # ├── endorphin.config.js # Framework settings
296
+ # ├── endorphin.config.ts # Framework settings (TypeScript)
297
+ # ├── tsconfig.json # TypeScript configuration
225
298
  # ├── .gitignore # Endorphin-specific ignores
226
299
  # └── README-ENDORPHIN.md # Quick start guide
227
300
  ```
@@ -363,11 +436,13 @@ reliability and maintainability.
363
436
  ### Default Configuration
364
437
 
365
438
  Endorphin AI works out of the box with sensible defaults, but you can customize
366
- it by creating an `endorphin.config.js` file in your project root:
439
+ it by creating an `endorphin.config.ts` file in your project root:
440
+
441
+ ```typescript
442
+ // endorphin.config.ts
443
+ import type { FrameworkConfig } from 'endorphin-ai';
367
444
 
368
- ```javascript
369
- // endorphin.config.js
370
- export default {
445
+ const config: FrameworkConfig = {
371
446
  // Global test settings
372
447
  defaultTimeout: 30000,
373
448
  headless: false,
@@ -383,6 +458,8 @@ export default {
383
458
  screenshots: true,
384
459
  recordVideo: false,
385
460
  };
461
+
462
+ export default config;
386
463
  ```
387
464
 
388
465
  ### CLI Options
@@ -425,20 +502,28 @@ You can organize your tests using tags and priorities:
425
502
 
426
503
  ### Example Test Organization
427
504
 
428
- ```javascript
429
- // tests/auth-tests.js
430
- export const LOGIN_TEST = {
505
+ ```typescript
506
+ // tests/auth-tests.ts
507
+ import type { TestCase } from 'endorphin-ai';
508
+
509
+ export const LOGIN_TEST: TestCase = {
431
510
  id: 'AUTH-001',
511
+ name: 'User Login Test',
512
+ description: 'Test user authentication flow',
432
513
  tags: ['authentication', 'smoke'],
433
514
  priority: 'High',
434
- // ...
515
+ site: 'https://example.com',
516
+ task: 'Navigate to login page and authenticate user...',
435
517
  };
436
518
 
437
- export const LOGOUT_TEST = {
519
+ export const LOGOUT_TEST: TestCase = {
438
520
  id: 'AUTH-002',
521
+ name: 'User Logout Test',
522
+ description: 'Test user logout functionality',
439
523
  tags: ['authentication'],
440
524
  priority: 'Medium',
441
- // ...
525
+ site: 'https://example.com',
526
+ task: 'Log out the authenticated user...',
442
527
  };
443
528
  ```
444
529
 
@@ -449,20 +534,23 @@ Your project should look like this:
449
534
  ```
450
535
  my-test-project/
451
536
  ├── .env # OpenAI API key
452
- ├── tests/ # Your test files
453
- │ ├── login-test.js # Authentication tests
454
- │ ├── checkout-test.js # E-commerce tests
455
- │ └── navigation-test.js # UI/Navigation tests
456
- ├── endorphin.config.js # Optional configuration
537
+ ├── tests/ # Your test files (TypeScript)
538
+ │ ├── login-test.ts # Authentication tests
539
+ │ ├── checkout-test.ts # E-commerce tests
540
+ │ └── navigation-test.ts # UI/Navigation tests
541
+ ├── endorphin.config.ts # Optional configuration (TypeScript)
542
+ ├── tsconfig.json # TypeScript configuration
457
543
  └── package.json # Project config
458
544
  ```
459
545
 
460
546
  ## 📝 Test File Format
461
547
 
462
- Each test file should export test objects with this structure:
548
+ Each test file should export test objects with TypeScript types:
549
+
550
+ ```typescript
551
+ import type { TestCase } from 'endorphin-ai';
463
552
 
464
- ```javascript
465
- export const QE001 = {
553
+ export const QE001: TestCase = {
466
554
  id: 'QE-001', // Unique test identifier
467
555
  name: 'Basic Login Test', // Human readable name
468
556
  description: 'Test login functionality with valid credentials',
@@ -470,21 +558,33 @@ export const QE001 = {
470
558
  tags: ['authentication', 'login', 'smoke'], // Categories
471
559
  site: 'https://example.com/', // Target website
472
560
  testData: {
473
- // Test data (optional)
561
+ // Test data (optional, fully typed)
474
562
  email: 'test@example.com',
475
563
  password: 'password123',
476
564
  },
477
565
  task: `Your test instructions in plain English...`,
478
566
  };
479
567
 
480
- // Multiple tests per file
481
- export const QE002 = {
568
+ // Multiple tests per file with full type safety
569
+ export const QE002: TestCase = {
482
570
  id: 'QE-002',
483
571
  name: 'Registration Test',
484
- // ... more test config
572
+ description: 'Test user registration flow',
573
+ priority: 'Medium',
574
+ tags: ['authentication', 'registration'],
575
+ site: 'https://example.com/',
576
+ task: 'Test new user registration process...',
485
577
  };
486
578
  ```
487
579
 
580
+ ### 🎯 TypeScript Benefits
581
+
582
+ - ✅ **Full type safety** for test configuration
583
+ - ✅ **IntelliSense support** in your IDE
584
+ - ✅ **Compile-time error checking**
585
+ - ✅ **Auto-completion** for test properties
586
+ - ✅ **Refactoring support** across your test suite
587
+
488
588
  ## 📊 Test Results
489
589
 
490
590
  Each test execution creates:
@@ -531,19 +631,63 @@ utilities.
531
631
  📖
532
632
  **[View detailed tool documentation](./doc/Framework-Architecture.md#browser-automation-tools)**
533
633
 
534
- ## 🎉 Features
634
+ ---
635
+
636
+ ## 💡 Common Use Cases
637
+
638
+ ### 🔐 Authentication Testing
639
+ ```bash
640
+ # Test login flows across different user types
641
+ npx endorphin run test --tag authentication
642
+ ```
535
643
 
536
- **AI-Powered**: GPT-4o analyzes page structure for intelligent automation
537
- ✅ **Visual Testing**: Automatic screenshot capture and visual validation
538
- **Modular Design**: Clean, maintainable, extensible architecture
539
- **Session Tracking**: Comprehensive test execution logging
540
- ✅ **Interactive Mode**: Real-time test creation and execution
541
- ✅ **Flexible Configuration**: Easily customizable browser and AI settings
542
- ✅ **Comprehensive Reporting**: Detailed results with visual documentation
543
- ✅ **Error Handling**: Robust retry mechanisms and failure recovery
644
+ ### 🛒 E-commerce Workflows
645
+ ```bash
646
+ # Test complete purchase flows
647
+ npx endorphin run test --tag checkout
648
+ ```
544
649
 
545
- The framework is production-ready and provides a solid foundation for scalable
546
- browser automation testing!
650
+ ### 📱 Responsive Testing
651
+ ```bash
652
+ # Test mobile, tablet, and desktop layouts
653
+ npx endorphin run test --tag responsive
654
+ ```
655
+
656
+ ### 🔍 Search & Navigation
657
+ ```bash
658
+ # Test site search and menu navigation
659
+ npx endorphin run test --tag navigation
660
+ ```
661
+
662
+ ### 📊 Form Validation
663
+ ```bash
664
+ # Test form submissions and validation
665
+ npx endorphin run test --tag forms
666
+ ```
667
+
668
+ ---
669
+
670
+ ## 🏆 Why Choose Endorphin AI?
671
+
672
+ ### Traditional E2E Testing vs Endorphin AI
673
+
674
+ | Traditional Testing | Endorphin AI |
675
+ |-------------------|-------------|
676
+ | ❌ Brittle CSS selectors | ✅ AI finds elements intelligently |
677
+ | ❌ Breaks with UI changes | ✅ Self-healing tests |
678
+ | ❌ Complex setup | ✅ Zero configuration |
679
+ | ❌ Hard to maintain | ✅ Plain English test descriptions |
680
+ | ❌ Basic reporting | ✅ Interactive HTML reports |
681
+ | ❌ Manual debugging | ✅ Visual debugging with screenshots |
682
+
683
+ ### 🚀 Production Ready
684
+
685
+ ✅ **Enterprise Scale**: Used in production environments
686
+ ✅ **Cross-Platform**: Windows, macOS, Linux support
687
+ ✅ **CI/CD Integration**: GitHub Actions, Jenkins, CircleCI
688
+ ✅ **Security First**: Automated vulnerability scanning
689
+ ✅ **Type Safe**: Full TypeScript support
690
+ ✅ **Extensible**: Modular architecture for custom needs
547
691
 
548
692
  ## 🎮 Complete CLI Reference
549
693
 
@@ -679,7 +823,10 @@ Add these to your `package.json`:
679
823
  "test:report": "endorphin generate report",
680
824
  "test:summary": "endorphin generate report --summary",
681
825
  "test:open": "endorphin open report",
682
- "test:cleanup": "endorphin cleanup results"
826
+ "test:cleanup": "endorphin cleanup results",
827
+ "endorphin:init": "./node_modules/.bin/endorphin init",
828
+ "endorphin:version": "./node_modules/.bin/endorphin --version",
829
+ "endorphin:help": "./node_modules/.bin/endorphin --help"
683
830
  }
684
831
  }
685
832
  ```
@@ -691,6 +838,11 @@ npm test # Run all tests
691
838
  npm run test:smoke # Run smoke tests
692
839
  npm run test:report # Generate HTML report
693
840
  npm run test:open # Open latest report
841
+
842
+ # Guaranteed to work (bypasses npx issues):
843
+ npm run endorphin:init # Initialize project
844
+ npm run endorphin:version # Check version
845
+ npm run endorphin:help # Get help
694
846
  ```
695
847
 
696
848
  ## 🔄 Staying Updated
@@ -723,23 +875,60 @@ npx endorphin --version
723
875
 
724
876
  ### Version History & Features
725
877
 
878
+ - **v0.6.1** *(Latest)*: Fixed npx resolution issues, enhanced user experience
879
+ - **v0.6.0**: Enhanced CLI, security-first publishing, cross-platform CI/CD
880
+ - **v0.5.0**: Advanced HTML reporting with interactive features
881
+ - **v0.4.0**: TypeScript-first experience with full type definitions
726
882
  - **v0.3.0**: Added `endorphin init` command for instant project setup
727
883
  - **v0.2.x**: Core framework with AI-powered testing
728
884
  - **v0.1.x**: Initial release with basic functionality
729
885
 
730
- ### Breaking Changes
886
+ ### Compatibility & Migration
887
+
888
+ Endorphin AI maintains **backward compatibility** across versions:
889
+
890
+ - ✅ **All existing tests work** without modification
891
+ - ✅ **Configuration files** are automatically migrated
892
+ - ✅ **npm scripts** continue to function normally
893
+ - ✅ **Semantic versioning** ensures predictable updates
731
894
 
732
- Endorphin AI follows semantic versioning:
895
+ Update with confidence - your existing tests won't break!
733
896
 
734
- - **Major versions** (1.0.0): May include breaking changes
735
- - **Minor versions** (0.3.0): New features, backward compatible
736
- - **Patch versions** (0.2.1): Bug fixes, backward compatible
897
+ ---
737
898
 
738
- ## License
899
+ ## 🤝 Support & Community
739
900
 
740
- Endorphin is licensed under the GNU Affero General Public License, Version 3
741
- (AGPLv3). The full license text is available in the `LICENSE` file.
901
+ ### 📚 Documentation
902
+ - **[Quick Start Guide](./README.md)** - Get up and running quickly
903
+ - **[HTML Reporter Guide](./doc/user-guide/HTML-Reporter-Guide.md)** - Interactive reporting
904
+ - **[Framework Architecture](./doc/Framework-Architecture.md)** - Technical deep dive
742
905
 
743
- For organizations that cannot use AGPLv3-licensed software, commercial licenses
744
- are available. Please contact us at [iam@andrewnovykov.com] for more
745
- information.
906
+ ### 🐛 Issues & Feature Requests
907
+ Found a bug or have a feature idea? [Open an issue](https://github.com/andrewnovykov/endorphin-ai/issues) on GitHub.
908
+
909
+ ### 💬 Getting Help
910
+ - Check the **[documentation](./doc/)** first
911
+ - Search **[existing issues](https://github.com/andrewnovykov/endorphin-ai/issues)**
912
+ - Create a **[new issue](https://github.com/andrewnovykov/endorphin-ai/issues/new)** with details
913
+
914
+ ---
915
+
916
+ ## 📄 License
917
+
918
+ Endorphin AI is licensed under the **GNU Affero General Public License v3.0** (AGPLv3).
919
+
920
+ **For Open Source Projects**: Free to use under AGPLv3
921
+ **For Commercial Projects**: Commercial licenses available
922
+
923
+ 📧 Contact: [iam@andrewnovykov.com](mailto:iam@andrewnovykov.com) for licensing questions
924
+
925
+ ---
926
+
927
+ <div align="center">
928
+ <p><strong>⚡ Ready to revolutionize your testing?</strong></p>
929
+ <p>
930
+ <a href="#-installation--setup">Get Started Now</a> •
931
+ <a href="https://youtu.be/ev_71RBO6g8?si=F9xTPSJNp36Mr1wx">Watch Demo</a> •
932
+ <a href="./doc/">Documentation</a>
933
+ </p>
934
+ </div>
Binary file
@@ -2,7 +2,7 @@
2
2
  * Configuration loader for Endorphin AI
3
3
  * Handles loading and merging of configuration from multiple sources
4
4
  */
5
- import type { CLIFlags, FrameworkConfig } from '../types/index.js';
5
+ import type { CLIFlags, FrameworkConfig } from '@/types/index';
6
6
  export declare class ConfigLoader {
7
7
  private defaultConfig;
8
8
  constructor();
@@ -2,7 +2,7 @@
2
2
  * Test Manager - Handles test discovery, loading, and execution coordination (TypeScript)
3
3
  * Manages individual test files in the tests/ folder
4
4
  */
5
- import type { TaskResult, TestConfig } from '../types/index.js';
5
+ import type { TaskResult, TestConfig } from '@/types/index';
6
6
  interface LoadedTest extends TestConfig {
7
7
  filename: string;
8
8
  filePath: string;
@@ -2,7 +2,7 @@
2
2
  * Test Results Manager Module
3
3
  * Handles test result collection, storage, and processing
4
4
  */
5
- import type { TestReport, TestSession } from '../types/index.js';
5
+ import type { TestReport, TestSession } from '@/types/index';
6
6
  export interface TestResultsManagerOptions {
7
7
  resultsDir?: string;
8
8
  recorderDir?: string;
@@ -3,7 +3,7 @@
3
3
  * Parses test result data from the test-results directory
4
4
  * Handles aggregation and processing of test execution data for reporting
5
5
  */
6
- import type { TestSession, TestSummary } from '../types/index.js';
6
+ import type { TestSession, TestSummary } from '@/types/index';
7
7
  /**
8
8
  * Parsed test result data structure
9
9
  */